프로세스의 fork()시스템 호출 동작과 다음 스케쥴링 epoch시에

swhong의 이미지

제목이 조금 길었네요...^^;;

정말 궁금한데요...

다음은 Understanding the Linux Kernel에서 본 내용입니다.

do_fork()함수의 호출시, parent(current)와 child(p)의 counter field값은 다음과 같이 조정된다고 합니다.

current->counter >>= 1;
p->counter = current->counter;

즉 parent의 time quantum을 반으로 쪼개서 child에게 나누어 주는 셈이지요...

그렇다면, parent와 child가 time quantum을 모두 소비(exhaust)한후 다음 scheduling epoch에서(즉, 모든 프로세스가 time quantum을 소비하여 다시 time quantum을 부여해 줄때)

이 두 parent와 child의 time quantum은 어떻게 부여되나요?

아무 관계없이 process의 종류에 따라 배분이 되나요... 아니면 어떤 penalty가 주어지나요?

마지막으로, 만약 parent가 하나가 아닌 두개의 같은 종류의 process를 fork()했다면 또 어떻게 되나요?

아.... 정말.... 머리아포라....

커널 코드에서 한 epoch 가 끝나서(모든 프로세스의 time quantum이 다 소모되어) 다시 time quantum을 할당 하는 부분의 코드는 어디에 있죠?

아..... 정말.... 머리 아푸시죠?

죄성합니다.... 그래도 열씸히 하는 하수에게 가르침을....