728x90
Context switching (문맥 전환)
- CPU가 프로세스에서 작업을 하던 중 인터럽트가 발생하거나 OS의 스케줄대로 프로세스가 변경될 수 있다.
- 프로세스가 변경될 때 PCB에 있던 정보를 저장하고, 새로 작업해야할 프로세스의 정보는 불러와야한다. 스케줄러가 선택한 프로세스에 실질적으로 프로세서를 할당하는 역할을 한다.
- 이러한 작업을 해주는 것을 Dispathcher 라 하며 디스패쳐는 OS의 프로세스 관리 부서에 있다.
- 디스패쳐는 운영체제 모드를 커널에서 유저로 변경하는 역할까찌 수행한다.
- 그러나 디스패쳐는 Context switching overhead를 일으킨다. 그러므로 너무 많은 전환은 성능에 좋지 않다. 그래서 CPU 스케줄러가 중요하다.
- 컴퓨터 구조를 간략하게 그려보면 다음과 같다. 하드디스크에서 메인 메모리에 적재할 프로그램을 job queue에서 job 스케줄러의 스케줄대로 적재한다.
- 그리고 메인 메모리에 들어가 프로세스가 되면 프로세스는 준비상태로 들어가고 준비가 되면 Ready Queue에 들어간다.
- 레디큐에서 cpu로 작업을 넘길 때는 cpu 스케줄러가 역할을 담당하게 된다.
- 그리고 가장 빈번하게 일어나는 작업이 바로 cpu 스케줄러이다.
CPU Scheduling
- 선점 vs 비선점
- 선점과 비선점은 말 그대로 선점권이 있느냐 없느냐를 뜻한다.
- 예를들면 선점은 응급실과 같다. 나보다 급한 환자들이 오면 나는 더 기다려야한다.
- 비선점은 동네 병원과 같다. 앞 사람이 끝날 때 까지 기다려야한다.
- 스케줄링 척도
- CPU 이용률
- 처리율
- 반환시간
- 대기시간
- 응답시간
- CPU 스케줄링 알고리즘
- First-Come, First-Serverd
- Shortest-Job-Frist
- Priority
- Round-Robin
- Multilevel Qeueu
- Multilevel Feedback Queue
First-Come, First-Serverd
- 이름 그대로 들어온 순서부터 처리하는 알고리즘이다. 가장 간편하고 효과적으로 보일 수 있다.
- 평균 대기 시간 관점
- 프로세스가 들어온 순서대로 처리하면 평균 17초씩 기다려야한다. 그러나 짧은 시간을 먼저 하면 3초만 기다리면 된다. 이 것은 알고리즘 문제에서도 자주 볼 수 있는 최적화 문제이기도 하다.
https://school.programmers.co.kr/learn/courses/30/lessons/42627
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- Convoy Effect
- 위 처럼 p1을 p2, p3는 마치 호위무사처럼 뒤에서 기다려야한다. 그래서 이런 이름이 붙었다.
- FCFS는 비선점 알고리즘이다.
'CS > 운영체제(OS)' 카테고리의 다른 글
OS - CPU 스케줄링(3), 프로세스의 생성과 소멸, 쓰레드 (0) | 2023.11.07 |
---|---|
OS - CPU 스케줄링(2) (0) | 2023.11.04 |
OS - 프로세스 관리 (0) | 2023.11.01 |
OS - 운영체제의 주요 서비스: 프로세스, 메모리, 파일관리 (1) | 2023.10.29 |
OS - 듀얼모드와 하드웨어 보호 (0) | 2023.10.28 |