요즘 하나씩 듣고 있는 반효경 교수님, 2014년-1학기 운영체제 강의.
구매한 교재 안에 필기하고 있기 때문에, 블로그에 따로 정리하고 있지는 않다.
하지만 교재 <5장 프로세스 관리>에서 Thread
관련 설명은 없어서 블로그에 정리해둔다.
Thread
개념
Thread
란? 프로세스 내부에 CPU 수행 단위
보통 프로세스가 생기면 프로세스 마다 주소 공간(stack
, data
, code
)이 생기고, CPU
안에는 프로세스 마다 PCB
가 생김. (PCB 안에는 현재 메모리의 어떤 instruction을 실행 중인지 가리키는 Program Counter
가 있음.)
같은 프로그램을 여러 개 실행한다고 했을 때, 프로세스 마다 주소 공간이 메번 생기면? 너무 비효율적. Thread
는 이러한 문제를 해결하기 위한 방안. 메모리에 data
, code
는 하나만 띄워 놓고, 프로세스 속 각 Thread
마다 다른 코드를 실행할 수 있도록 하면 됨.
즉, 공유할 부분은 공유하고, CPU
사용과 관련된 부분(stack
: 각 프로세스가 어느 함수를 호출했는지, PCB
내 PC
, Register set
등)을 각자 두면 됨.
Thread 구성(CPU 사용과 관련된 부분)
- Program Counter
- Register Set
- Stack space
Thread가 동료 thread와 공유하는 부분(=task)
- Code section
- Data section
- OS resources
다중 Thread 장점
- 하나의 서버 스레드가 blocked인 상태인 동안 다른 스레드가 실행되어 빠른 처리 가능.
예시) 웹 서버에서 컨텐츠를 가져 올 때 시간이 오래 걸리는 이미지를 가져오는 동안 다른 스레드는 텍스트를 먼저 띄워줄 수 있는. 사용자 입장에서 답답함이 좀 줄어들 수 있게.
- 동일한 프로세스가 여러 주소 공간을 갖지 않고 공유할 수 있는 부분은 공유하니까 메모리 낭비가 줄어듦.
- 동일한 일을 수행하는 다중 스레드가 서로 협력, 높은 처리율(throughput)과 성능 향상
- CPU가 여러 개 있는 컴퓨터의 경우, 병렬성을 높일 수 있음.
참고자료
본문 속 링크 참조