반응형

 

 

게임, 전화, 디스플레이, 네트워크 데이터 등등 각각의 프로세스별로 레디큐를 두어 처리 하는 방식이다

(게임 ,전화 등등이 우선순위가 하나의 기준으로 우선순위가 처리되지 않음으로)

각 우선순위를 위한 분리된 큐

 

 

 

위에 있는 것일 수록 우선순위가 높음

각각 레디큐가 별도고 가장 높은 우선순위의 큐가 비게 되면 그다음 system process 의 큐를 실행하고

system process 도 다 끝나면 그다음 interactive process (예를 들어 ui같은) 를 그다음 순위로 처리하는 방식이다

 

그런데 이때 문제점이 있는데

가장 상단의 우선순위가 높기 때문에 아래 있는 것일 수록 실행 되지 않는 기아상태가 발생할 수도 있기 때문에

 

그래서 우선순위가 가장 높은 큐는 퀀텀을 8 을 줘서 짧게 실행하게 하고 나가고 그다음 우순위에선 퀀텀 시간을 16을 줘서 좀 더 실행하게 하고 그다음 후순위는 FCFS 로 아래로 갈 수록 더 많은 CPU Burst time 을 할당 받기 때문에 아래 있는 것도 우선순위가 낮아 대기는 하지만 한번 실행될때 대기 한 만큼 좀 더 실행이 되도록 하여 어느정도 균형을 좀 맞출수 있는 형태가 된다

 

 

 

그런데 현대적 컴퓨터에선 프로세스 스케줄링을 하지 않고 스레드 스케줄링을 한다

그런데 지금까지 본것은 프로세스 스케줄링인데 스레드 스케줄링은 프로세스 스케줄링에 견주어 생각해보면 된다

그리고 프로세스에는 커널스레드와 유저스레드가 있는데 이 중에서도 커널 스레드만 스케줄링 하면 되는데

유저 스레드는 스레드 라이브러리에 의해서 관리 되는 소프트웨어적인 측면이기 때문에 커널 유저스레드에 대해 모른다

즉 커널 스레드가 스케룰이 되면 커널스레드는 유저스레드를 서비스만 해주면 된다

 

즉 지금까지 본것은 커널스레드를 스케줄링한다고 생각하면 된다

 

 

 

반응형

+ Recent posts