devStory

[ 운영체제 ] 프로세스와 스레드 본문

운영체제

[ 운영체제 ] 프로세스와 스레드

Hyen_K 2018. 10. 13. 16:25

프로세스는 운영체제로부터 자원을 할당 받는 작업의 단위.

스레드는 할당 받은 작업을 이용하는실행하는 단위.



1. 프로세스 (Process)

: 실행중에 있는 프로그램

: 기본적으로 하나의 스레드(메인 스레드)를 가짐.
: 자신만의 고유 공간과 자원 할당 받음 (메모리가 할당되고, 할당 된 메모리 공간으로 바이너리 코드가 올라가는 순간부터 프로세스라고 불림)

- 메모리 공간과 자원 소비가 상대적으로 큼




2. 스레드 (Tread)

: 프로세스 내부의 작업의 흐름, 단위. (실제 작업을 수행)

: 각 프로세스 마다 적어도 한개 이상 존재.

: 여러개 있는것이 멀티스레드.

: 멀티 스레드에서 스택영역을 제외한 나머지 영역과 자원을 공유함.

- 메모리 공간과 자원 소비가 상대적으로 작음

- Context Switching 속도가 상대적으로 빠름 (Stack 영역만 스위칭 하면 되니까)

- but, 자원 공유로 인한 동기화 문제 발생, 디버깅이 어려움.







+ 프로세스 상태 변화


Context Switching?

-  Context : 프로세스 제어를 위해 PCB에 저장되는 정보.

- Context Switching : 스케쥴러가 CPU를 다른 프로세스에 할당 할 때, 현재 프로세스의 문맥을 PCB에 저장하고 새로운 context의 PCB로 교체 하는 것.


PCB(Process Control Block)?

- 프로세스 실행에 필요한 제어 정보( 프로세스 상태, 프로세스 카운터 값, CPU 레지스터 값, CPU 스케쥴링 정보 등 )

   를 저장하기 위한 공간.

- Running 중이던 프로세스가 Ready 혹은 Waiting 상태로 바뀌었을 때, 다시 Running 상태로 왔을 때를 위해 작업중이던    정보들을 저장하는 버퍼? 같은 것.


Comments