timer interrupt는 해당 프로세스의 CPU 할당 시간이 끝나 다른 프로세스에게 CPU를 넘길 의도를 가진 인터럽트이다. I/O 요청은 프로세스 상태가Blocked되어 당장 instruction 실행이 불가능하다. 따라서 이와 같은 경우에는 사진에 있는 아래 과정처럼 커널에서 사용자 모드로 돌아올 때문맥 교환이 일어난다.
프로세스를 스케줄링하기 위한 큐
Job queue
현재 시스템 내에 있는 모든 프로세스의 집합
Ready queue
현재 메모리 내에 있으면서 CPU를 할당받아 실행되기를 기다리는 프로세스의 집합
Device queues
I/O device의 처리를 기다리는 프로세스의 집합
프로세스들은 놀이공원에서 여러 놀이기구를 기다렸다 타는 것처럼 각 큐들을 오가며 수행된다.
스케줄러 (Scheduler)
Long-term scheduler(장기 스케줄러, job scheduler)
시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정
프로세스에memory를 주는 문제
시분할 시스템에는 보통 장기 스케줄러가 없고, 무조건ready상태로 간다.
Short-term scheduler(단기 스케줄러, CPU shceduler)
어떤 프로세스를 다음번에running시킬지 결정
프로세스에CPU를 주는 문제
Medium-term scheduler(중기 스케줄러, Swapper)
여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
프로세스로부터memory를 뺏는 문제
지금의 시스템은 장기 스케줄러 없이 시작하면 일단 메모리를 할당해준다. 이 경우 너무 많은 프로그램이 메모리에 올라가면 문제가 될 수 있다. 이러한 것을 조절해주는 것이 중기 스케줄러이고, 스와퍼가 일부 프로그램을 메모리에서 통째로 쫓아내준다.
Thread
A thread is a basic unit of CPU utilization,프로세스 하나에 CPU 수행 단위만 여러개를 두고 있는 것
Thread의 구성
program counter
register set
stack space
프로세스 상태나 각종 자원은 공유하나 PC, register, stack과 같이 CPU 수행과 관련된 정보는 별도로 갖고 있다.
Thread끼리 공유하는 부분 (=task)
code section
data section
OS resources
Thread 장점
다중 스레드로 구성된 태스크 구조에서는 하나의 스레드가blocked상태인 동안에도 다른 스레드가running되어 빠른 처리 가능
동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율과 성능 향상을 얻을 수 있음
병렬성을 높일 수 있음
Benefits of Threads
Responsiveness
ex) multi-threaded Web
웹 브라우저가 여러 스레드를 갖고 있으면 한 스레드가 이미지 서버에 이미지 파일을 다시 요청했을 때 다른 스레드가 이미 렌더링한 html 텍스트라도 화면에 보여줌으로써 사용자는 더 빨리 화면을 볼 수 있음
Resource Sharing 하나의 프로세스를 만들고 그 안에 CPU 수행 단위를 여러개 만들게 되면 code, data, 각종 자원을 공유하여 자원을 효율적으로 사용할 수 있음
Economy
creating and CPU switching
프로세스를 하나 만드는 것은 오버헤드가 꽤 크다. 하지만 프로세스 안에 스레드를 하나 더 만드는 것은 밥상에 숟가락 얹는 것처럼 간편하다. 문맥 교환 또한 오버헤드가 굉장히 크다. 반면 프로세스 내부에서 스레드 간CPU switching은 동일한 주소 공간을 쓰고 있기 때문에 더 간단하다.