티스토리 뷰
2023.03.09 - [운영체제] - #12 CPU 스케줄링 개요
#12 CPU 스케줄링 개요
● 도입 - 컴퓨터의 자원은 크게 2가지로 분류할 수 있다. 1. 필수 장치 : CPU, 메모리 등 2. 주변 장치 : HDD, 키보드, 마우스 등 - 앞으로 몇 개의 글을 통해 필수 장치 중 하나인 CPU에 대해 배워볼 것
radderveloper.tistory.com
2023.03.12 - [운영체제] - #14 스케줄링 목표
#14 스케줄링 목표
- 미리 읽어보자 2023.02.26 - [운영체제] - #9 컨텍스트 스위칭(Context switching) #9 컨텍스트 스위칭(Context switching) 2023.02.22 - [운영체제] - #7 PCB(Process Control Block) - 프로세스 제어 블록 #7 PCB(Process Control Bl
radderveloper.tistory.com
2023.07.11 - [운영체제] - #37 페이징(배치정책)
#37 페이징(배치정책)
● 페이징 - 고정 분할 방식을 이용한 페이징에 대해 알아보자 - 세그멘테이션 기법(가변 분할 방식, 연속 메모리 할당)은 외부단편화 문제가 있기 때문에 이를 해결하기 위해 페이징 기법이 고
radderveloper.tistory.com
- 먼저 읽어보자
● CPU 스케줄링
- CPU 스케줄링의 목표는 CPU 사용률을 높이는 것이다.
- CPU 사용률을 높이기 위해서는 동시에 실행하는 프로세스의 수(멀티 프로그래밍 정도)를 올려야한다.
ex) 동시에 실행하는 프로세스의 수가 늘어나면 어떤 프로세스가 I/O 작업으로 인해 CPU를 사용할 수 없을 때 다른 프로세스로 컨텍스트 스위칭을 해서 CPU 사용률을 높일 수 있다.
- CPU 사용률을 높이기 위해 멀티 프로그래밍 정도를 늘렸다면 당연히 해당 프로세스들도 각자 필요로 하는 공간이 있기에 물리메모리에 프레임을 할당해야 한다.
- 그러나 물리메모리 크기에는 한계가 있기 때문에 모든 프로세스의 모든 프레임을 물리메모리에 올릴수는 없고 일부는 HDD 스왑 영역에 저장된다.
● 스레싱
- 여기서 문제는 멀티 프로그래밍 정도가 늘어나는 경우에 발생한다.
- 멀티 프로그래밍 정도가 늘어나면 제한된 물리메모리에 모든 프로세스를 올려야하고 당장 실행되는 프레임을 제외한 나머지 프레임들은 스왑 영역에 저장되기에 page fault가 많이 발생하게 된다.
- 이렇게 되면 CPU가 프로세스를 처리(작업)하는 시간보다 스왑 작업(스왑인, 스왑아웃)의 시간이 더 길어지게 되고 결국에는 CPU 사용률이 떨어지게 된다.
스왑인 : 스왑 영역에서 물리 메모리로 데이터를 가져오는 것
스왑아웃 : 물리 메모리에서 스왑 영역으로 데이터를 보내는 것
- 이때 CPU 스케줄러는 CPU 사용률이 낮아졌으므로 더 많은 프로세스를 메모리에 올리게 된다(프로세스를 더 실행시켜서 CPU 사용률을 높이기 위해). 결국 이런식으로 반복하게 되면 CPU 사용률은 0에 가까워질 것이다.
- 이렇듯 CPU 사용률을 높이려 했지만 오히려 CPU 사용률이 낮아지는 상황을 스레싱이라고 한다.
- 스레싱의 근본적 원인은 물리메모리의 크기가 부족한 것이다. 이를 하드웨어 관점에서 해결하려면 메모리의 크기를 늘려주면 된다. ex) 2GB RAM(메모리)을 4GB로 바꿔주면 스레싱 발생 지점이 늦춰질 것이다.(컴퓨터 성능 향상)
- 단, 무작정 메모리의 크기를 늘린다고 해서 무한정 성능이 좋아지지는 않는다.
- 4GB RAM을 16GB RAM으로 바꿔준다고 해도 성능이 크게 향상되는 것을 느끼기 어려운데 이는 이미 4GB RAM만으로도 충분히 스레싱을 해결할 수 있기 때문이다.
- 즉, 현재 메모리(4GB RAM)가 프로세스들을 작업 하는데 충분한 크기라서 스레싱이 발생하지 않는다면 RAM의 크기를 늘려도 별 다른 효과가 발생하지 않는다.
cf) 같이 읽으면 좋은 글
https://velog.io/@anjaekk/OS-Thrashing
[OS] 스레싱(Thrashing)과 해결방법
Thrashing과 해결방법
velog.io
● 워킹셋
- OS가 스레싱을 소프트웨어적으로 해결하기 위한 방법을 알아보자
- 한 프로세스가 실행될 때 너무 많은 페이지가 할당되면 다른 프로세스가 사용할 페이지가 줄어들기 때문에 효율이 떨어진다.
- 반대로 너무 적은 페이지를 할당하면 빈번하게 page fault가 발생하고 스왑 요청이 많이 스레싱이 발생하게 된다.
- 이를 해결하기 위해 프로세스가 실행되면 일정량의 페이지를 할당하고 만약 page fault가 발생하면 더 많은 페이지를 할당한다.
- 반대로 page fault가 너무 적게 발생하면 페이지를 과하게 할당해 메모리가 낭비되는 중이라 판단하고 페이지를 회수한다.
- 이렇게 되면 프로세스가 실행되는 동안 해당 프로세스에게 맞는 적절한 페이지 수가 결정된다.
- 적절한 페이지 수를 결정했다면 이번에는 이 중 어떤 페이지들을 유지할 것인가를 알아야한다. 이때 지역성 이론을 따른다.
- 지역성 이론 : 현재 메모리에 올라온 페이지는 다시 사용할 확률이 높기 때문에 하나의 세트로 묶어서 메모리에 올리는데 이를 워킹셋이라고한다.
- 워킹셋은 프로세스가 준비 상태에서 실행상태가 되는 컨텍스트 스위칭을 할 때 사용된다.
cf)
'CS > 운영체제' 카테고리의 다른 글
#41 페이지 교체정책 (0) | 2023.07.16 |
---|---|
#39 디맨드 페이징(가져오기 정책) (0) | 2023.07.13 |
#38 페이지드 세그멘테이션(배치정책) (0) | 2023.07.12 |
#37 페이징(배치정책) (0) | 2023.07.11 |
#36 파일과 디스크 (0) | 2023.07.10 |
- Total
- Today
- Yesterday
- git
- 운영체제
- API
- jpa
- Phaser3
- 코딩테스트
- node.js
- Phaser
- nosql
- spring
- 메모리
- Advanced Stream
- MongoDB
- 자료구조
- 빅데이터
- SQL
- db
- DART
- 프로그래머스
- Spring Boot
- SpringBoot
- java
- Java8
- Stream
- 알고리즘
- 프로세스
- MySQL
- 빅데이터 분석기사
- OS
- 코테
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |