2023. 3. 15. 12:33ㆍzerobase/CS
운영체제 스케줄링 기본
● 배치 처리 시스템
○ 여러 프로그램을 순차적으로 실행시킬 수 있도록 해야함
- 어떤 프로그램은 실행이 너무 시간이 많이 걸려서, 다른 프로그램이 실행하는데 시간을 많이 기다 려야 한다.
● 시분할 시스템
○ 시분할 시스템: 다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템
- 여러 사용자가 동시에 하나의 컴퓨터를 쓰려면 어떻게 해야 하나요? (다중 사용자 지원)
● 멀티 태스킹
○ 멀티 태스킹: 단일 CPU에서, 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템
- 나는 MP3 음악을 들으며, 문서 작성을 한다.
○ 10 ~ 20 ms 단위로도 실행 응용 프로그램이 바뀜
● 멀티 프로그래밍
○ 최대한 CPU를 많이 활용하도록 하는 시스템
- 응용 프로그램은 CPU외 다양한 하드웨어 사용 (파일 읽기)
● 메모리 계층 ‑ 컴퓨터 구조 이해

● System Bus ‑ 컴퓨터 구조 이해

● 멀티 프로그래밍과 Wait
○ 멀티 프로그래밍: CPU 활용도를 극대화 하는 스케쥴링 알고리즘
○ Wait: 간단히 저장매체로부터 파일 읽기를 기다리는 시간으로 가정

● 멀티 태스킹과 멀티 프로세싱
○ 멀티 태스킹: 단일 CPU
○ 멀티 프로세싱: 여러 CPU에 하나의 프로그램을 병렬로 실행해서 실행속도를 극대화시키는 시스템

● 현업, IT 기술과 컴퓨터공학의 이해
○ 프로그램 성능을 높이는 방법
- 가능한 메모리상에서 실행하도록 해야 함
- 예: Redis, Scala
● 정리
○ 시분할 시스템: 다중 사용자 지원, 컴퓨터 응답시간을 최소화하는 시스템
○ 멀티 태스킹: 단일 CPU에서 여러 응용 프로그램을 동시에 실행하는 것처럼 보이게 하는 시스템
○ 멀티 프로그래밍: 최대한 CPU를 일정 시간당 많이 활용하는 시스템
○ 멀티 프로세싱: 여러 CPU에서 하나의 응용 프로그램을 병렬로 실행해서, 실행속도를 높이는 기법
스케쥴링 알고리즘 구현 이해
● 스케쥴링 알고리즘
○ 목표
- 시분할 시스템 예: 프로세스 응답 시간을 가능한 짧게
- 멀티 프로그래밍 예: CPU 활용도를 최대로 높혀서, 프로세스를 빨리 실행
● FIFO 스케쥴러
○ 프로세스가 저장매체를 읽는 다든지, 프린팅을 한다든지 하는 작업 없이, 쭉 CPU를 처음부터 끝까지 사용한다.
○ 가장 간단한 스케쥴러 (배치 처리 시스템)
○ FCFS (First Come First Served) 스케쥴러

● 최단 작업 우선(SJF,Shortest Job First) 스케쥴러
○ 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행을 시키는 알고리즘
○ SJF 스케쥴러도 실제로 좋은 개발자답게 작성한다면?
- 자료구조와 알고리즘에 익숙한 상태라면, 좋은 개발자는 분명히 최소한 우선순위 큐와 힙 자료구 조 사용을 고려할 것임 (시간복잡도가 O(nlogn) 임)
- 스케쥴러는 운영체제 핵심기능으로 빈번하게 호출되므로, 스케쥴러 알고리즘은 운영체제 성능에 큰 영향을 미침
- 왜 자료구조와 알고리즘이 필요한지, 코딩테스트를 왜 보는지 이해할 수 있음
「가끔 이야기가 나오는 용어 알아두기
● RealTime OS(RTOS): 응용 프로그램 실시간 성능 보장을 목표로 하는 OS
○ 정확하게 프로그램 시작, 완료 시간을 보장
○ Hardware RTOS, Software RTOS
● General Purpose OS(GPOS): 프로세스 실행시간에 민감하지 않고, 일반적인 목적으로 사용되는 OS
○ 예: Windows, Linux 등 」
● 우선순위 기반(Priority‑Based) 스케쥴러
○ 정적 우선순위
- 프로세스마다 우선순위를 미리 지정
○ 동적 우선순위
- 스케쥴러가 상황에 따라 우선순위를 동적으로 변경
● Round Robin 스케쥴러

● 프로세스 상태 기반 스케쥴러

○ running state: 현재 CPU에서 실행 상태
○ ready state: CPU에서 실행 가능 상태(실행 대기 상태)
○ block state: 특정 이벤트 발생 대기 상태(예: 프린팅이 다 되었다!)
● 프로세스 상태간 관계
○ ready, running, block states

● 정리
○ FIFO (FCFS) 스케쥴링 알고리즘 (배치 처리 시스템)
○ 최단 작업 우선(SJF) 스케쥴링 알고리즘
○ 우선순위 기반 스케쥴링 알고리즘
- 정적 우선순위, 동적 우선순위
○ Round Robin 스케쥴링 알고리즘
- 시분할 시스템
○ 프로세스 상태 기반 스케쥴링 알고리즘
- 멀티 프로그래밍
● 현업, IT 기술과 컴퓨터공학의 이해
○ 랙?: 마우스 / 키보드 반응이 느린 경우?
- 스케쥴러가 해결해야하는 이슈! 다양하고 복잡한 스케쥴링 알고리즘 필요
○ 최근 리눅스 스케쥴러: O(1) 와 같이 보다 효율적인 알고리즘을 사용 중
○ 현업 프로그램은 성능에 민감함
- 대용량 서비스
○ 성능을 위해 꼭 체크해야 하는 포인트
- 당신의 프로그램이 IO‑bound 냐, CPU‑bound 냐
- IO‑bound : IO 관련 기능이 주로 사용하는 프로그램
- CPU‑bound : CPU / 메모리를 주로 사용하는 프로그램
'zerobase > CS' 카테고리의 다른 글
Cross Browsing(크로스 브라우징) (0) | 2023.03.30 |
---|---|
운영체제(3) (0) | 2023.03.15 |
운영체제(1) (0) | 2023.03.15 |
컴퓨터 구조(Computer Science)(2) (0) | 2023.03.11 |
컴퓨터 구조(Computer Science)(1) (0) | 2023.03.05 |