일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- two pointer
- 완전탐색
- 정렬
- 투포인터
- python3
- sort
- backtracking
- BF
- 코딩테스트
- 재귀
- CS
- 코테
- 백트래킹
- 프로그래머스
- dfs
- 백준
- 1일1솔
- Github
- ML
- Python
- 머신러닝
- OS
- 재귀함수
- 알고리즘
- Algorithm
- 브루트포스
- 신나는함수실행
- Loss
- Virtual Memory
- 파이썬
Archives
- Today
- Total
이것저것 공부 기록하기
[OS] 프로세스와 기본 스케쥴링 알고리즘 본문
프로세스(Process) 란?
- 실행 중인 프로그램은 프로세스라고 함
- 프로세스 : 메모리에 올려져서 실행 중인 프로그램
- 코드 이미지(바이너리) : 실행 파일 ex) ELF format
- 프로세스라는 용어는 작업, task, job 이라는 용어와도 혼용되어 사용됨
- 여기서 주의해야 할 점은 응용 프로그램은 프로세스가 아니라는 점 (= 응용 프로그램은 여러 개의 프로세스로 이루어질 수 있다.
- 하나의 응용 프로그램은 여러 개의 프로세스(프로그램)가 상호작용을 하면서 실행될 수도 있음
- 간단한 C/C++ 프로그램을 만든다면 하나의 프로세스라고 할 수 있음
- 여러 프로그램을 만들어서 서로 통신하면서 프로그램을 작성할 수도 있음 (IPC 기법)
스케쥴러와 프로세스
- 스케쥴러는 프로세스 실행을 관리함
- 스케쥴링 알고리즘
- 목표에 따라 어떤 순서대로 프로세스를 실행시킬지 결정
- 시분할 시스템 ex. 프로세스 응답 시간을 가능한 짧게
- 멀티 프로그래밍 ex. CPU 활용도를 최대로 높혀서 프로세스를 빠르게 실행
- 적용 시점에 따라 비선점형과 선점형으로 구분할 수 있음
- 비선점형 스케쥴링
- 프로세스가 (실행 → 대기), (실행 → 종료) 로의 상태전이가 있을 때 적용됨
- ex. FIFO(First In Fist Out), SJF(Shortest Remaining Time First Scheduling), HRN(Highest Response-ratio Next)
- 선점형 스케쥴링
- 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선 순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 기법
- 모든 프로세스에게 CPU 사용 시간을 동일하게 부여 가능
- 빠른 응답 시간을 요하는 대화식 시분할 시스템에 적합
- 긴급한 프로세서 제어 가능
- ex. SRT(Shortest Remaining Time), RR(Round Robin), 다단계 큐(MQ, Multi-level Queue)
- 비선점형 스케쥴링
- 목표에 따라 어떤 순서대로 프로세스를 실행시킬지 결정
FIFO 스케쥴러
- 비선점형 스케쥴링 알고리즘
- 프로세스가 저장매체를 읽거나 프린팅을 하는 등의 작업 없이 CPU를 처음부터 끝까지 쭉 사용
- 가장 간단한 스케쥴러 (배치 처리 시스템)
- FCFS (First Come First Served) 스케쥴러
최단 작업 우선(SJF) 스케쥴러
- SJF(Shortest Job First) 스케쥴러
- 비선점형 스케쥴링 알고리즘
- 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행을 시키는 알고리즘
💡참고💡
- RealTime OS(RTOS) : 응용 프로그램 실시간 성능 보장을 목표로 하는 OS
- 시간이 민감하게 다뤄지는 컴퓨팅 환경에서의 프로세스를 동작할 때 사용
- 정확하게 시간에 맞춰 프로그램을 시작하고 완료되는 것을 보장
- GPOS 보다 간단하게 구성된 경우가 많음 (복잡하게 구성되면 프로세스가 늘어질 수 있기 때문)
- 이 때는 SJF 처럼 각각의 프로세스 실행시간까지 알 수 있음
- Hardware RTOS, Software RTOS 으로 세분화하여 사용하기도 함
- General Purpose OS (GPOS) : 프로세스 실행시간에 민감하지 않고, 일반적인 목적으로 사용되는 OS
- ex. Windows, Linux
- RTOS가 사용되지 않는, 시간에 민감하지 않은 환경 대다수에서 사용됨
우선순위 기반 스케쥴러
- Priority-Based 스케쥴러
- 정적 우선순위
- 프로세스마다(응용 프로그램마다) 우선순위를 미리 지정
- ex. 웹브라우저는 우선순위를 높게 해놓고 카카오톡은 좀낮게 해놓는 식으로
- 모든 프로그램마다 우선순위를 지정해놓는다는 건 사실 현실적으로 번잡스러운 경향이 있음
- 프로세스마다(응용 프로그램마다) 우선순위를 미리 지정
- 동적 우선순위
- 스케쥴러가 상황에 따라 우선순위를 동적으로 변경
- 컴퓨터 응답시간이 빨라야하는 상황이라고 했을 때, 어떤 응용 프로그램은 실행한 지 오래 되었는데도 일정 시간(ex.10분)내에 한 번도 CPU에서 실행이 안 되었으면 해당 프로세스에서 사용자가 어떤 반응을 얻고자 해도 느릴 수가 있음
- 따라서 그런 프로세스에 대해서는 스케쥴러가 우선순위를 동적으로 바꾸며 사용자가 CPU를 필요로 할 때 바로 제공할 수 있도록 함
- 정적 우선순위
Round Robin 스케쥴러
- 선점형 스케쥴링 알고리즘
- 시분할 시스템 기반
- 프로세스들 사이에 우선순위를 두지 않고 순서대로 시간 단위로 CPU를 할당하는 방식
- 보통 시간 단위는 10ms ~ 100ms 정도이고, 시간 단위 동안 수행한 프로세스는 준비 큐의 끝으로 밀려나게 됨.
- 문맥 전환의 오버헤드가 큰 반면, 응답 시간이 짧아지는 장점이 있어 실시간 시스템에 유리
- 할당되는 시간이 클 경우 FIFO 기법과 같아지게 됨
References
fastcampus 컴퓨터공학 올인원 패키지 강의
반응형
'CS > OS' 카테고리의 다른 글
[OS] 세그멘테이션(Segmentation) (0) | 2021.05.22 |
---|---|
[OS] 페이징 시스템(Paging System) (0) | 2021.05.19 |
[OS] 가상 메모리 기본 개념 (0) | 2021.05.17 |
Comments