Dazzling 개발 노트
[CS] 운영체제 - 스케줄링 / 메모리 본문
스케줄링
스케줄링 목적
- 멀티 프로세스 환경에서 모든 프로세스를 공평하게 실행하는 것
- CPU 사용률 : CPU를 놀리지 않고 사용하는지 판단
- 처리량 : 단위 시간 당 실행한 프로세스 수
- 응답 시간 : 요청 발생 후 응답까지 걸린 시간
- 반환 시간 : 로드 후 종료까지 걸린 시간
- 대기 시간 : 대기 큐에서 대기한 시간의 총합
스와핑 Swapping
프로세스를 통으로 메모리 영역과 저장 공간으로 옮기는 것
- 메모리 공간보다 많은 프로세스를 실행할 수 있음
- 스왑 아웃
- 이벤트 요청 대기중인 프로세스를 통으로 저장 공간으로 이동
- 스왑 인
- 스왑 아웃한 프로세스에서 이벤트 요청 발생 시 프로세스를 통으로 다시 메모리에 로드
- 스왑 아웃
비선점형 스케줄링
실행중인 프로세스가 종료될 때까지 다른 프로세스를 실행할 수 없음
- FCFS 스케줄링
- 준비 큐에 먼저 들어온 프로세스가 먼저 실행
- SJF 스케줄링
- 실행 시간이 짧은 프로세스를 먼저 실행
선점형 스케줄링
스케줄러가 실행 중인 프로세스를 중단시키고 다른 프로세스를 실행할 수 있음
- 선점형 스케줄링 알고리즘
- RR 스케줄링 Round Robin
- 모든 프로세스를 순서대로 일정 시간 동안 실행, 시간 초과 시 다른 프로세스를 실행
- SRTF 스케줄링 Shortest Remaining Time First
- 준비 큐에서 대기 시간이 가장 짧게 남은 프로세스를 먼저 실행
- 멀티 레벨 스케줄링 Multi Level
- RR 스케줄링 Round Robin
메모리
연속 메모리 할당
멀티 프로세스 환경에서 여러 프로세스를 메모리에 연속적으로 로드
- 고정 분할 방식
- 메모리 영역을 분할한 후 각 영역에 프로세스 할당
- 가변 분할 방식
- 할당할 프로세스의 크게에 따라 메모리 공간 분할
비연속 메모리 할당
- 페이징 Paging
- 프로그램의 주기억장치 영역을 동일한 크기로 분할
- 세그먼테이션 Srgmentation
- 프로그램을 다양한 크기의 논리적 단위로 분할
가상 메모리
프로세스의 일부만 메모리에 로드하고, 나머지는 디스크에 유지한 상태로 프로세스를 실행하는 방식
스레싱 Thrashing
시스템이 작동되는 시간보다 페이지 교체가 더 자주 발생해 CPU의 이용률이 낮아지는 증상을 의미
- 동시에 일정 수 이상의 프로그램 실행 시 CPU 이용률이 떨어지는 상황
- 다중 프로그래밍 정도가 일정 수준 이상 시 페이징이 빈번하게 일어나면서 스레싱 발생
워킹 세트 Working Set
지역성을 기반으로 자주 사용하는 페이지를 저장해 두는 것
캐시 메모리
CPU와 메인 메모리 간에 데이터 접근 시 속도 차이를 줄이기 위해 사용
캐시 메모리에 저장되는 데이터는 지역성을 바탕으로 결정
지역성
자주 참조되는 데이터가 고르게 분포되지 않고 특정 부분에 몰려있는 것
- 시간 지역성
- 최근 참조한 페이지를 계속 참조
- 공간 지역성
- 한 번 참조한 페이지 근처의 페이지를 계속 참조