본문 바로가기
운영체제

퍼옴 // 컨텍스트 스위칭이 일어나는 경우

by 흰색남자 2022. 9. 27.

https://algosketch.tistory.com/m/94

 

프로세스

  1. 프로세스가 CPU 를 양보하는 경우
  2. 프로세스가 시스템 API 를 호출하는 경우
  3. 프로세스가 I/O 를 요청하는 경우
  4. timer interrupt
  1. 프로세스가 자발적으로 CPU 를 포기하는 경우
    임베디드같이 프로세스를 적게 사용하는 경우 프로그래머가 조절해서 사용이 가능하다.
    하지만 고의 혹은 실수로 하나의 프로세스가 CPU 를 계속해서 차지하는 경우가 발생할 수 있다.
  2. 시스템 API 호출을 이용하는 경우
    시스템 API 호출 이후 다시 원래 프로세스로 돌아가는 것이 아니라 컨텍스트 스위칭을 시킨다.
    사용자 상호작용이 많은 경우 사용이 가능하다.
    문제점 : 시스템 API 를 호출하지 않는 프로그램의 경우 장기간 CPU 를 사용할 수 있다.
  3. I/O 요청시 컨텍스트 스위칭하는 경우
    I/O 를 기다릴 필요가 없으므로 I/O 요청이 발생하면 컨텍스트 스위칭한다. 2번과 유사하다.
    문제점 : 2번과 마찬가지로 I/O 요청이 없는 프로세스의 경우 장기간 CPU 를 사용할 가능성이 있다.
  4. timer interrupt 이용 (preemtive context switching)
    컨텍스트 스위칭이 발생할 필요가 없음에도 불구하고 일정 시간 CPU 를 사용했다면 컨텍스트 스위칭이 일어난다. 이것을 preemtive context switcing 이라고 한다. (프로세스 수행 중 포기하는 것을 preemtion 이라고 한다.) 그 일정 시간에 해당하는 용어는 scheduling quantum(스펠링 겁나 어려움 ㅡㅡ) 혹은 time slice 라고 부른다.
    문제점 : 소프트웨어가 아니라 하드웨어에서 타이머를 지원해야 한다. 다행히 현대의 CPU 는 대부분 타이머를 지원하고 여러 개의 타이머를 지원하는 경우도 있다.