티스토리 뷰

Linux

linux에서 task와 process의 차이

두덕리온라인 2024. 2. 19. 08:00
728x90
반응형
리눅스 운영 체제에서 "task"와 "process"는 종종 상호 교환적으로 사용되는 용어입니다. 하지만, 이들 간에는 미묘한 차이가 있으며, 이 차이는 리눅스의 내부 구현과 스케줄링 방식을 이해하는 데 중요합니다.
 

Process

  • 정의: 프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영 체제에서 프로세스는 자체적인 주소 공간, 코드, 데이터 및 시스템 리소스를 가집니다. 프로세스는 하나 이상의 스레드를 포함할 수 있으며, 각 스레드는 프로세스 내에서 실행되는 실행의 단위입니다.
  • 특징: 프로세스는 고유한 프로세스 식별자(PID)를 가지며, 시스템 리소스(예: 파일 핸들, 네트워크 연결 등)와 메모리(데이터 세그먼트, 코드 세그먼트, 스택 등)를 할당받습니다.
  • 관리: 리눅스 커널은 프로세스 생성, 실행, 종료 등을 관리합니다. 프로세스 간 통신(IPC) 메커니즘을 통해 서로 데이터를 교환할 수 있습니다.

Task

  • 정의: 리눅스 커널에서 "task"는 더 일반적인 용어로 사용되며, 프로세스나 스레드를 모두 포함하는 실행의 단위를 의미합니다. 리눅스 커널 내부에서는 모든 실행 단위를 "task"라고 부르며, 각 task는 고유한 task 구조체로 관리됩니다.
  • 특징: 리눅스에서는 프로세스와 스레드를 구분하지 않고 모두 task로 취급합니다. 즉, 스레드는 경량 프로세스(LWP)로 간주되며, 모든 스레드는 독립적인 task로 처리됩니다.
  • 스케줄링: 커널의 스케줄러는 task를 기반으로 CPU 시간을 할당합니다. 리눅스의 스케줄링은 task 단위로 이루어지며, 각 task에는 스케줄링 우선순위와 정책이 있습니다.

차이점

  • 개념적 차이: "process"는 전통적으로 독립적인 실행 환경을 가진 프로그램의 인스턴스를 의미합니다. 반면, "task"는 리눅스 커널이 스케줄링과 관리를 위해 사용하는 더 광범위한 용어로, 프로세스와 스레드 모두를 포함합니다.
  • 용어 사용: 사용자 수준에서는 주로 "process"라는 용어를 사용합니다. 개발자나 시스템 관리자는 프로세스 관리와 관련된 작업을 수행할 때 이 용어를 사용합니다. 커널 개발자는 실행 단위를 관리할 때 "task"라는 용어를 사용합니다.
 
요약하자면, 리눅스에서 "task"는 프로세스와 스레드를 포괄하는 실행 단위를 의미하는 반면, "process"는 독립적인 실행 환경을 가진 프로그램의 인스턴스를 의미합니다. 이 차이는 주로 리눅스 커널의 내부 구현과 관련이 있으며, 일반 사용자나 애플리케이션 개발자에게는 큰 영향을 미치지 않습니다.
반응형

'Linux' 카테고리의 다른 글

Memory subsystem 이란  (0) 2024.02.20
리눅스 프로세스 컨텍스트 스위칭  (0) 2024.02.20
fork()와 exec()의 차이  (0) 2024.02.19
Linux virtual memory  (0) 2024.02.19
Android secure boot  (0) 2024.02.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday