컨텍스트 스위칭 주체

지식저장공간·2023년 2월 24일
0

운영체제

목록 보기
10/15

컨텍스트 스위칭 역할을 담당하는 건 누구일까요?
또는, CPU에서 어떤 프로세스 혹은 스레드가 실행될지 누가 어떻게 결정하는 걸까요?
출처 : 쉬운코드 유튜브

컨텍스트 스위칭 주체

scheduler

CPU에서 실행될 프로세스를 선택하는 역할

CPU에서 동작하고 싶은 프로세스들은 ready queue에 저장되어 있고, scheduler는 ready queue에서 동작 시킬 프로세스를 선택한다.

dispatcher

scheduler에의해 선택된 프로세스를 실제로 CPU에서 실행될 수 있도록 만드는 역할
선택된 프로세스에게 CPU를 할당하는 역할
컨텍스트 스위칭을 시키는 역할 (컨텍스트 스위칭은 커널모드에서 실행된다.)
선택된 프로세스가 실행 되어야할 적절한 위치로 이동시킨다.

스케줄링 선점 방식

Nonpreemptive scheduling

프로세스가 자발적으로 running상태를 벗어나고, 다른 프로세스가 CPU에서 동작할 수 있도록 양보한다.

  1. 작업 완료 후 terminated
  2. I/O 작업을 위해 waiting
  3. running 상태에서 자발적으로 ready

신사적, 협력적(cooperative), 느린 응답성

Preemptive scheduling

실행 중인 프로세스의 작업이 끝나지 않았지만, OS에 의해 ready 상태가 된다.

  1. running 상태에서 time slice 후 운영체제에 의해 ready queue로 들어간다.
  2. waiting 상태인 프로세스가 I/O작업을 마치고 ready 상태로 돌아온 경우 현재 실행중인 프로세스의 우선 순위가 낮으면 ready queue에 넣는다.

적극적, 강제적, 빠른 응답성, 데이터 일관성 문제(race condition의 위험)
-> 여러 프로세스가 CPU에서 더 자주 동작하도록 한다.

스케줄링 알고리즘

FCFS

first-come, first-served : 먼저 도착한 순서대로 처리

SJF

shortest-job-first : 프로세스의 다음 CPU burst가 가장 짧은 프로세스부터 실행

ex)
p1 - 7ms
p2 - 5ms
p3 - 10ms

p2 -> p1 ->p3

SRTF

shortest-remaining-time-first : 남은 CPU burst가 가장 짧은 프로세스부터 실행

ex)
p1 - 10ms
p2 - 5ms
p3 - 16ms

p1 -> p1이 6ms가 남은 상황에서 p4 - 3ms ready로 들어오면 p4가 실행된다.

p1 -> p4 -> p2 -> p1-> p3

Priority

우선순위가 높은 프로세스부터 실행

RR

round-robin : time slice로 나눠진 CPU time을 번갈아가며 실행

Multilevel queue

프로세스들을 그룹화해서 그룹마다 큐를 두는 방식

비슷한 프로세스 또는 우선 순위가 높은 프로세스들을 큐를 생성하여 넣는다.

profile
발전하는 개발자가 꿈입니다. 지식을 쌓고 지식을 활용해 목표 달성을 추구합니다.

0개의 댓글