Process / Thread

Computer/OS 2012. 9. 17. 23:51

프로세스

- 현재 실행중인 프로그램

(프로그램 - passive entity; 실행되기전 상태, 프로세스 - active entity; 프로그램이 실행되어 메모리상에 올라간 상태)

- 프로그램카운터와 연관된 자원의 집합

- PCB, CODE, DATA, STACK

- 상태 변화

New, Running, Waiting, Ready, Terminated

- PCB 역할 : 특정 프로세스와 연관된 여러 정보 수록

프로세스 상태, 프로그램카운터(PC), CPU 레지스터, CPU 스케줄링 정보, 메모리 관리 정보, Accounting, I/O status



쓰레드

- 프로세스보다 작은 단위, 프로세스안에 존재

- 같은 프로세스 내에서 Context Switch가 프로세스보다 빠름(Code와 Data영역 교체 불필요)

Context-switch : 실행되는 쓰레드가 바뀌는것

- TCB, STACK

- 단일 쓰레드, 다중 쓰레드

멀티(다중)쓰레드 - 프로세스 안에서 돌아가는 여러개의 실행 흐름

- 쓰레드는 운영체제가 관리.

- 프로세스는 쓰레드를 담아두는 용도로만 사용

- 쓰레드간 데이터공유

- CPU가 쓰레드를 실행하고, 스케줄러가 쓰레드 실행 순서 정함

- Main 쓰레드가 여러 Sub 쓰레드에 할당

- 쓰레드 풀링

쓰레드를 생성, 제거하는데 드는 비용이 크기때문에 미리 사용할 쓰레드를 생성해두고 사용이 끝난 쓰레드는 일시정지해둠.

- 동기화(Synchronization)

일종의 락. 메모리를 여러개의 쓰레드에서 동시에 참조할 때 문제생김.

Critical Section, Mutex, Semaphore

커널모드(0) 동기화 : 많은기능, 속도느림

유저모드(1) 동기화 : 속도빠름

 

 

'Computer > OS' 카테고리의 다른 글

운영체제, 프로세스, 인터럽트, 커널  (0) 2012.09.22
Process / Thread  (0) 2012.09.17
Posted by Xapilla

댓글을 달아 주세요