일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- PYTHON
- 컴퓨터네트워크
- TCP
- S3
- http
- HADOOP
- airflow
- 데이터 엔지니어링
- dockerfile
- airflow.cfg
- sql
- Docker
- 데이터 웨어하우스
- Django
- 데이터엔지니어링
- 정리
- 가상환경
- redshift
- AWS
- 데이터베이스
- 데브코스
- TIL
- 운영체제
- 자료구조
- 파이썬
- 컴퓨터 네트워크
- Go
- 데이터 파이프라인
- linux
- 종류
- Today
- Total
홍카나의 공부방
[운영체제] Ch.5-1 프로세스 스케쥴링의 목적, 기준, 단계, 정책 본문
본 글은 김덕수 교수님의 2019년도 봄학기 운영체제(CPA310)
강의 내용을 바탕으로 요약 정리한 내용입니다.
https://sites.google.com/view/hpclab/courses/operating-system
Scheduling
현재 우리는 멀티프로그래밍 환경의 운영체제를 사용하고 있다.
이는 여러 개의 프로세스가 시스템 내에 존재한다는 것이고,
자원을 할당할 프로세스를 선택하는 과정이 수반된다는 것이다.
이번 글의 주제인 스케쥴링이 바로 자원을 할당할 프로세스를 선정하는 과정을 의미한다.
자원을 관리하는 방법은 크게
- time sharing 관리
- space sharing 관리가 있는데
시간 분할 관리는 하나의 자원을 여러 프로세스들이 번갈아 사용하는 것이다.
CPU를 여러 프로세스들이 사용한다고 생각해 보자. 이때 프로세스 스케쥴링이 필요하다.
공간 분할 관리는 하나의 자원을 분할하여 여러 프로세스들이 동시에 사용하는 것이다. RAM을 예시로 들 수 있다.
스케쥴링의 목적은 시스템 성능을 향상하는 것에 있다.
이때 성능(Performance)이라는 단어는 굉장히 모호하다. 어떤 것이 성능인가?
이를 분명히 하기 위해서 대표적인 시스템 성능 지표들이 존재한다.
(1) 응답시간 (response time) = 작업 요청으로부터 응답을 받을 때까지의 시간
(2) 쓰루풋 (throughput) = 단위 시간 동안 완료된 작업의 수
(3) 자원 활용도 (resource utilization) = 주어진 시간(T_c)동안 자원의 활용된 시간(T_r)
시스템의 목적에 따라 중요한 지표가 다르다. real-time 시스템의 경우 응답시간이 중요하겠고,
Batch system의 경우 쓰루풋이 중요한 지표가 될 수 있다.
따라서 목적에 맞는 지표를 고려하여 스케쥴링 기법을 선택하면 된다.
대기시간, 응답시간, 반환시간
대기시간, 응답시간, 반환시간의 개념을 짚고 넘어가자.
Waiting Time은 프로세스가 작업 요청으로부터 running 상태(실행)로 들어갈 때까지의 시간을 의미한다.
Response Time은 작업 요청으로부터 첫 번째 응답을 받을 때까지의 시간을 의미한다.
Burst Time은 실행 시작부터 종료까지 걸린 시간을 의미한다.
Turn-around Time은 작업 요청으로부터 실행 종료까지 시간을 의미한다.
스케쥴링의 기준
스케쥴링 기법이 고려하는 항목들은
- 프로세스의 특성, 즉 I/O bounded냐 compute-bounded냐..
- 시스템의 특성
- 프로세스의 긴급성
- 프로세스의 우선순위
- 등등...
이 있을 것이다. 다음으로는 CPU Burst와 I/O Burst 개념에 대해 짚고 넘어가자.
일반적으로 프로세스가 수행될 때는 계산에 CPU가 사용되고, I/O를 대기하는 과정의 반복이다.
여기서 프로세스가 CPU 사용시간이 많다면 CPU burst, I/O 사용시간이 많다면 I/O burst process라고 지칭한다.
어느 과정이 더 오래걸리냐에 따라 스케쥴링 기준이 달라진다.
스케쥴링의 단계
스케쥴링의 단계(Level)은 발생하는 빈도 및 할당 자원에 따라 구분하는데
Long Term, Mid Term, Short Term이 존재한다.
Long Term 스케쥴링은 Job scheduling이라고도 하며,
이는 시스템에 제출 할(Kernel에 등록할) 작업을 결정하는 것이다.
MultiProgramming Degree, 즉 시스템 내 프로세스수를 조절하는 것과 같다.
시분할 시스템에서는 모든 작업을 시스템에 등록하기 때문에 Long-Term scheduling은 불필요하다.
Mid Term 스케쥴링은 메모리 할당 결정(memory allocation)과 관련된다.
메모리 Swapping(swap in and out)을 결정한다.
어떤 프로세스를 메모리에 올릴 것인가.
Short Term 스케쥴링은 Process Scheduling 단계이며,
프로세서를 할당할 프로세스를 결정하는 과정이다.
가장 빈번하게 발생한다.
위 그림의 과정이 모두 이해가 되거나 머릿속에 그려지기까지 한다면
Process State Transition Diagram과 스케쥴링의 단계는 이해한 것이다.
스케쥴링의 정책(Policy)
스케쥴링의 정책은 Preemptive냐 Non-Preemptive냐로 나뉜다.
프림프티브 스케쥴링은 타의에 의해 자원을 빼앗길 수 있는 스케쥴링이다.
(ex. 할당 시간의 종료, 우선순위가 높은 프로세스가 등장할 때)
이는 Context Switching Overhead가 비교적 크다.
이에 비해 논-프림프티브 스케쥴링은 할당 받은 자원을 스스로 반납할 때까지 사용할 수 있는 스케쥴링 기법이다.
(ex. System Call, I/O 등)
선점 스케쥴링 기법보다 Context Switching Overhead가 적을 것이지만
프로세스들의 평균 응답 시간이 증가한다는 단점이 있다.
생각해 보자.
작업이 매우 많은 프로세스가 비선점 스케쥴링 기법으로 자원을 계속 할당받고 있다면
다른 대기 중인 프로세스들의 응답시간이 증가하지 않겠는가?
우선순위(Priority)라는 개념도 짚고 넘어가자.
우선순위는 프로세스의 중요도를 의미한다.
프로세스 생성 시 결정된 우선순위가 유지된다면 Static
프로세스의 상태 변화에 따라 우선순위가 변경된다면 Dynamic Priority로 지칭한다.
작업관리자에 가면 프로세스의 우선순위를 직접 조정해 줄 수 있다.
'Operating System' 카테고리의 다른 글
[운영체제] Ch.6 프로세스 동기화와 상호배제, 세마포어 Python 구현 (0) | 2023.03.28 |
---|---|
[운영체제] Ch.5-2 스케쥴링 알고리즘 (0) | 2023.03.24 |
[운영체제] Ch.4 쓰레드의 개념, 유저 쓰레드, 커널 쓰레드 (0) | 2023.03.21 |
[운영체제] Ch.3 프로세스의 정의, 상태, state diagram, 인터럽트 (0) | 2023.03.18 |
[운영체제] Ch.2 운영체제의 역할, 구분, 구조, 기능 (0) | 2023.03.17 |