상세 컨텐츠

본문 제목

헷갈릴 수 있는 용어 - [프로세스/프로그램] , [잡/태스크]

소프트웨어/운영체제

by moonionn 2022. 4. 7. 01:43

본문

간단하게 정리해보자

프로그램 & 프로세스

프로그램

- 컴퓨터 시스템에 실행 요청 전 상태인 명령어의 집합입니다

- 프로그램에 데이터가 할당되면 잡(job)이 됩니다

- 하나의 프로그램은 여러 프로세스를 수행할 수 있습니다

 

프로세스

- 실행을 위해 kernel(커널)에 등록된 작업을 뜻합니다

- a.k.a 프로세스는 컴퓨터 자원을 할당받습니다. (프로세서, 메모리...)

- 프로세서 외 I/O 자원(ex: 디스크)이 필요할 시 블락(대기) 상태가 됩니다 (스케쥴링)

- 각 프로세스는 생성시 PCB라는 블럭이 커널 영역에 생성되고 저장됩니다

 

스케쥴링, 커널, PCB에 대한 정리는 나중에 더 자세히...

 

프로그램 & 프로세스 TL;DR

프로그램은 실행 전 상태의 명령어 집합이며,

프로세스는 컴퓨터 리소스를 할당받아 실행중인 프로그램을 의미한다

 

 

잡 & 태스크

잡(job)과 태스크(task)는 프로그램, 프로세스에 비해 정의가 모호합니다

아래 글은 수박 겉핥기 정도로 보시면 될 것 같습니다

 

잡(job)

- 어떠한 작업 실행에 필요한 모든 활동을 뜻합니다 (뭐라 표현해야 하나...)

  ( 영어로 써놓는게 더 명확할 듯 : unit of work for an operating system. )

- 태스크(task)의 집합체라 불리기도 합니다

- 혹은 프로세스들의 유닛이라 불리기도 합니다

- 굉장히 추상적으로 느껴지므로 저는 그냥 해당 문맥에서 가장 큰 '일의 단위'라고 이해하겠습니다...

   더 이해시켜주실 분 있다면 매우 감사

 

태스크(task)

- 문맥에 따라 어떤 때는 프로세스, 어떤 때는 스레드를 의미합니다.

   태스크는 프로세스의 최소단위이니, 스레딩 되었다면 스레드, 단일 스레드일 시에는 프로세스다 라는 문맥입니다.

- 하지만 그렇다기보단, 프로세스(who)가 태스크(what)를 실행한다고 이해하는 것이 좀 더 적합하다는 의견이 있습니다.

 

긴 설명 참고

https://stackoverflow.com/a/31212568/15827539

관련글 더보기

댓글 영역