p.161 ~ 182

Kernel Thread (KT)


커널도 결국은 프로그램이다. 그래서 커널도 쓰레드를 생성 할때가 있다. 이 때 부모와 자식이 가리키는 PC가 다를수도 있다.

커널이 clone() 함수를 호출할때 생성된다. 이때 만들어지는 자식을 커널 쓰레드라고 부른다. 이 커널쓰레드들은 커널 함수를 실행한다. 대부분 이런 쓰레드들은 서버(데몬)이다.

Process State


프로세스의 state에는 running, ready, waitng이 있다.

Linux Scheduling Policy


리눅스에서는 당연히 우선순위(Priority)가 제일 높은게 제일 먼저 실행된다. 하지만 한가지 조건이 더있다. remaining timeslice를 가지고 있냐를 확인한다.

timeslice


task한테 CPU를 줄때 100ms 씩 쓸수 있는 시간을 준다. 하지만 일을 하다가 100ms를 다 채우지 않았는데, 바로 처리해야하는 task가 CPU를 가져간다. 이것을 remaining timeslice라고 한다.

리눅스에서는 CPU를 할당할때 우선순위도 높아야하고 + remaining timeslice도 0이 아니어야 한다.

Scheduling Algorithm


Ready Queue


유저가 많아지면 하나의 큐로만 확인하면 모든 프로세스의 우선순위를 확인해야해서 확인하는 것만도 많은 자원이 필요해진다.