일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 인터럽트
- B tree 데이터삽입
- 운영체제
- 시그널 핸들러
- Git
- 개발남노씨
- 김영한
- 시스템프로그래밍
- BreadcrumbsComputer-Networking_A-Top-Down-Approach
- Extendable hashing
- 트랜잭션
- recoverability
- 갤럭시 S24
- 코딩테스트 [ ALL IN ONE ]
- 프로세스 주소 공간
- 반효경
- 운영체제와 정보기술의 원리
- SDK
- 백엔드
- concurrency control
- 네트워크
- 쉬운 코드
- 커널 동기화
- vite
- SQL
- CPU 스케줄링
- 코딩애플
- 온디바이스AI
- 데이터베이스
- 쉬운코드
- Today
- Total
티끌모아 태산
CPU 스케줄링(1) 본문
이번 시간에는 CPU 스케줄링에 대해서 배워보도록 하겠습니다. CPU는 프로그램의 기계어 명령을 실제로 수행하는 컴퓨터 내의 중앙처리장치 입니다. 그래서 프로그램이 메모리에 올라가면 프로그램 카운터라는 레지스터가 현재 CPU가 수행할 코드의 메모리 주소값을 갖게 됩니다. 그 후, CPU는 프로그램 카운터가 가리키는 주소의 기계어 명령을 하나씩 수행하게 됩니다. ⭐️결국 CPU 스케줄링은 CPU를 효율적으로 활용하기 위해 준비상태에 있는 프로세스들 중 어떤 프로세스에게 CPU를 먼저 할당할 것인지 결정하는 것
- CPU burst: 사용자 프로그램이 CPU를 직접 갖고 빠른 명령을 수행하는 단계, ex) Add, Load, Store
* Load Instruction: 메모리에 있는 데이터를 CPU로 읽어들이는 명령, Store 명령은 CPU에서 계산된 결과값을 메모리에 저장하는 명령이고 Add명령은 CPU내의 레지스터에 있는 두값을 더해서 레지스터에 저장하는명령
- I/O burst: I/O 요청이 발생해 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계
⭐️CPU스케줄러
CPU 스케줄러란 준비 상태에 있는 프로세스들 중에서 어떤 프로세스에게 CPU를 먼저 할당할 것인지 결정하는 운영체제 코드이다. 그러므로 단위 시간당 처리량을 최대화 하고 효율적으로 CPU 자원을 할당하기 위한 목적을 갖는다. 스케줄링 방식에는 다음과 같이 두가지 방식이 있다.
- 비선점형 방식(nonpreemptive): CPU를 획득한 프로세스가 CPU 자원을 스스로 반납할 때까지 CPU를 빼앗기지 않는 방식
- 선점형 방식(preemptive): 프로세스가 CPU를 계속 사용하기를 원하더라도 강제로 빼앗을 수 있는 스케줄링 방법.
디스패처(dispatcher)
CPU 스케줄러에 의해서 어떤 프로세스에게 CPU를 할당할지 결정한 후에는 실제로 CPU를 이양하는 작업이 필요하다. 이처럼 새롭게 선택된 프로세스가 CPU를 할당 받고 작업을 수행할 수 있도록 환경설정을 하는 운영체제 코드를 디스패처라고 부른다. 즉 디스패처는 현재 수행중인 프로세스의 문맥을 그 프로세스의 PCB에 저장하고, 새롭게 선택된 프로세스의 문맥을 복원한 후 그 프로세스에게 CPU를 넘기는 과정을 수행한다. 새로운 프로세스의 문맥을 복원시키고 나면 시스템의 상태를 사용자모드로 전환해 사용자 프로그램에게 CPU의 제어권을 넘긴다. 그러면 사용자 프로그램은 복원된 문맥 중 프로그램 카운터로부터 현재 수행할 주소를 찾을 수 있게 된다.
스케줄링의 성능 평가
스케줄링의 성능 평가 즉 척도는 시스템 관점과 사용자 관점으로 나누어 볼 수 있다.
- 시스템 관점 지표: CPU 이용률(CPU utilization), 처리량(throughput)
- 사용자 관점 지표: 소요시간(trunaround time), 대기시간(waiting time), 응답시간(response time)
이해를 돕기 위해 예시를 들면서 설명하도록 하겠습니다. 중국집 식당을 예로 들면 중국집에 주방장이 있고 손님이 있다고 가정 했을 때 시스템 관점 지표는 중국집 식당 입장에서의 척도라 할 수 있고 사용자 관점 지표는 손님 입장에서의 척도라 할 수 있다. 이때, 이용률은 전체 시간 중 주방장이 일한 시간의 비율을 의미하고, 처리량은 주방장이 주어진 시간동안 몇 명의 손님에게 요리를 만들어 주었는가를 나타낸다. 중국집 입장에서는 이용률과 처리량을 높이는 것이 좋다. 반면에 소요시간은 손님이 중국집에 들어와서 주문한 음식을 다 먹고 나가기까지 소요된 총 시간(준비 큐에서 CPU를 기다린 시간과 실제로 CPU를 사용한 시간의 합)을 의미한다. 대기시간은 음식을 먹은 시간을 제외한 순수하게 기다린 시간(즉, 프로세스가 준비 큐에서 CPU를 얻기위해 기다린 시간)을 의미한다. 그리고 응답시간은 최초의 음식이 나오기까지 기다린 시간(프로세스가 준비 큐에 들어온 후 첫 번째 CPU를 획득하기까지 기다린 시간)을 뜻한다.
이번 시간에는 CPU 스케줄링의 정의와 방식 그리고 성능 평가에 대해서 전반적으로 알아보았습니다. 다음시간에는 CPU 스케줄링 알고리즘에 대해서 배워보도록 하겠습니다.
'CS 지식 > 운영체제' 카테고리의 다른 글
CPU 스케줄링(2) (0) | 2023.08.17 |
---|---|
프로세스(Process)(4) (0) | 2023.08.02 |
프로세스(Process)(3) (0) | 2023.08.01 |