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