프로세스
- 현재 실행중인 프로그램
(프로그램 - 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 |
---|