From de092f8398cb93d9f6ee7eae3ccfa074b739c8d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:34:36 +0900 Subject: [PATCH 01/33] =?UTF-8?q?[OS]=20=EA=B9=83=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 97 +++++++++++++++++++++++++++-- 1 file changed, 93 insertions(+), 4 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index dea78fa..684f7eb 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -439,6 +439,95 @@ Example ## 가상 메모리 +### 가상 메모리란? + +메인 메모리의 크기가 한정되어 있기때문에, 물리적인 메모리 크기보다 크기가 큰 프로세스를 실행시킬 수 없다. 그렇다면 메인 메모리보다 크기가 큰 프로세스를 실행시키고 싶으면 어떻게 해야 할까? 그래서 나온 방법이 바로 '가상메모리'이다. +
+
+프로세스의 모든 코드는 항상 필요하지 않기 때문에 필요한 부분만 메모리에 올림으로써 메모리에 올라가는 프로세스의 크기를 줄인다. +프로세스 이미지를 모두 메모리에 올릴 필요가 없어지며, 메모리 용량 부족 이슈를 해결할 수 있다. + +### 가상 메모리가 하는 일 + +1. 가상 메모리는 실제 물리 메모리 개념과 사용자의 논리 메모리 개념을 분리한 것이다. 따라서 작은 메모리를 가지고도 얼마든지 큰 가상주소 공간을 프로그래머에게 제공할 수 있다. + +2. 시스템 라이브러리가 여러 프로세스들 사이에 공유될수 있도록 한다. 각 프로세스들은 공유 라이브러리를 자신의 가상 주소 공간에 두고 사용하는 것처럼 인식하지만, 라이브러리가 올라가 있는 물리 메모리 페이지들은 모든 프로세스에 공유되고 있다. + +3. 프로세스들이 메모리를 공유하는 것을 가능하게 하고, 프로세스들은 공유 메모리를 통해 통신할 수 있다. + +4. fork()를 통한 프로세스 생성과정에서 페이지들이 공유되는 것을 가능하게 한다. + +### 요구 페이징 (Demand Paging) 이란? + +1. 프로그램 실행 시작 시, 프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략을 요구 페이징이라 하며, 가상 메모리 시스템에서 많이 사용된다. + +2. 가상메모리는 대개 페이지로 관리된다. + +3. 요구페이징을 사용하는 가상메모리에서는 실행과정에서 필요해질 때 페이지들이 적재된다. 따라서 한번도 접근되지 않은 페이지는 물리 메모리에 적재되지 않는다. + +--- + +## 페이지 교체 알고리즘 + +### 페이지 교체 + +앞선 요구페이징에서 언급된대로 프로세스의 동작에 필요한 페이지를 요청하는 과정에서 ```page fault(페이지 부재)``` 가 발생하게 되면, 원하는 페이지를 보조저장장치에서 가져오게 된다. 하지만, 물리 메모리가 모두 사용중인 상황이라면 **페이지 교체**가 이뤄져야 한다. + +### 페이지 교체 흐름 + +1. 디스크에서 필요한 페이지의 위치를 찾는다. +2. 빈 페이지 프레임을 찾는다. +- 1) 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. +- 2) 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. +3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. +4. 사용자 프로세스 재시작 + +### 페이지 교체 알고리즘 + +#### [FIFO 페이지 교체] (First-In-First-Out Page Replacement) + +물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. + +* 장점 +- * 이해하지 쉽고, 프로그래밍도 쉽다. + +* 단점 +- * 오래된 페이지가 항상 불필요하지 않은 정보를 포함하지 않을 수 있다. +- * 처음부터 활발하게 사용되는 페이지를 교체해서 페이지 부재율을 높일 수 있다. +- * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 객수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. + +#### [최적 페이지 교체] (Optimal Page Replacement) + +모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~ + +* 장점 +- * 가장 낮은 페이지 부재율을 보장한다. + +* 단점 +- * 구현이 어렵다. 모든 프로세스의 메모리 참조 계획을 미리 파악할 수 없기 떄문이다. + +#### [LRU 페이지 교체] (Least-Recently-Used Page Replacement) + +최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. + +* 특징 +```FIFO < LRU < OPT``` + +#### [LFU 페이지 교체] (Least-Frequently-Used Page Replacement) + +참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. + +* 특징 +- + 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 초기 가정에 어긋 날 수 있다. +- + OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. + +#### [MFU 페이지 교체] (Most-Frequently-Used Page Replacement) + +참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. + +* 특징 +- + OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. + --- ## 캐시 @@ -513,7 +602,7 @@ CPU에서 명령어를 수행하며 매번 캐시 메모리를 참조하게 되 ### 교착상태를 막을 방법은 없을까? -#### 예방 기법 (Prevention) +#### [예방 기법 (Prevention)] 교착상태가 발생하지 않도록 사전에 시스템을 제어하는 방법으로, 교착상태 발생의 네 가지 조건중에서 어느 하나를 제거하는 방법이다. 자원 낭비가 가장 심한 기법이다. @@ -522,7 +611,7 @@ CPU에서 명령어를 수행하며 매번 캐시 메모리를 참조하게 되 3. **비선점 부정** : 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다리게 한다. 4. **환형 대기 부정** : 자원을 선형 순서로 분류하여 고유번호를 할당하고, 각 프로세스는 현재 점유한 자원의 고유 번호보다 앞이나 뒤 어느 한쪽 방향으로만 자원을 요구한다. -#### 회피 기법 (Avoidance) +#### [회피 기법 (Avoidance)] 교착상태가 발생할 가능성을 배제하지 않고, 교착상태가 발생하면 적절히 피해나가는 방법으로, **은행원 알고리즘(Banker's Algorithm)** 이 사용된다. @@ -533,11 +622,11 @@ CPU에서 명령어를 수행하며 매번 캐시 메모리를 참조하게 되 > 4. 은행원 알고리즘은 프로세스의 모든 요구를 유한한 시간안에 할당하는 것을 보장함 > ``` -#### 발견 기법 (Detection) +#### [발견 기법 (Detection)] 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 기법이다. 발견 후엔 교착상태 회복(Recovery) 직업을 수행하므로 발견기법과 회복기법을 함께 쓴다. (Detection & Recovery) -#### 회복 기법 (Recovery) +#### [회복 기법 (Recovery)] 교착상태를 일으킨 프로세스를 종료하거나, 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것을 의미한다. 크게 프로세스 종료와 자원 선택으로 나뉜다. From f7e05bf60474e4e03d86af6b9bb0ac7f18f7bdff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:48:19 +0900 Subject: [PATCH 02/33] =?UTF-8?q?[OS]=20=EA=B9=83=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 43 +++++++++++++++-------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 684f7eb..6152376 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -441,29 +441,31 @@ Example ### 가상 메모리란? -메인 메모리의 크기가 한정되어 있기때문에, 물리적인 메모리 크기보다 크기가 큰 프로세스를 실행시킬 수 없다. 그렇다면 메인 메모리보다 크기가 큰 프로세스를 실행시키고 싶으면 어떻게 해야 할까? 그래서 나온 방법이 바로 '가상메모리'이다. +메인 메모리의 크기가 한정되어 있기때문에, 물리적인 메모리 크기보다 큰 프로세스를 실행시킬 수 없다. 그렇다면 메인 메모리보다 크기가 큰 프로세스를 실행시키고 싶으면 어떻게 해야 할까? 그래서 나온 방법이 바로 '가상메모리'이다.

-프로세스의 모든 코드는 항상 필요하지 않기 때문에 필요한 부분만 메모리에 올림으로써 메모리에 올라가는 프로세스의 크기를 줄인다. +프로세스의 모든 코드는 항상 필요하지 않기 때문에 ```필요한 부분만 메모리에 올림으로써 메모리에 올라가는 프로세스의 크기를 줄인다.``` 프로세스 이미지를 모두 메모리에 올릴 필요가 없어지며, 메모리 용량 부족 이슈를 해결할 수 있다. ### 가상 메모리가 하는 일 -1. 가상 메모리는 실제 물리 메모리 개념과 사용자의 논리 메모리 개념을 분리한 것이다. 따라서 작은 메모리를 가지고도 얼마든지 큰 가상주소 공간을 프로그래머에게 제공할 수 있다. +가상 메모리는 실제 ```물리 메모리 개념과 사용자의 논리 메모리 개념을 분리```한 것이다. 따라서 작은 메모리를 가지고도 얼마든지 큰 가상주소 공간을 프로그래머에게 제공할 수 있다. -2. 시스템 라이브러리가 여러 프로세스들 사이에 공유될수 있도록 한다. 각 프로세스들은 공유 라이브러리를 자신의 가상 주소 공간에 두고 사용하는 것처럼 인식하지만, 라이브러리가 올라가 있는 물리 메모리 페이지들은 모든 프로세스에 공유되고 있다. +#### 따라서 가상메모리는... -3. 프로세스들이 메모리를 공유하는 것을 가능하게 하고, 프로세스들은 공유 메모리를 통해 통신할 수 있다. +* 시스템 라이브러리가 여러 프로세스들 사이에 공유될수 있도록 한다. 각 프로세스들은 공유 라이브러리를 자신의 가상 주소 공간에 두고 사용하는 것처럼 인식하지만, 라이브러리가 올라가 있는 물리 메모리 페이지들은 모든 프로세스에 공유되고 있다. -4. fork()를 통한 프로세스 생성과정에서 페이지들이 공유되는 것을 가능하게 한다. +* 프로세스들이 메모리를 공유하는 것을 가능하게 하고, 프로세스들은 공유 메모리를 통해 통신할 수 있다. + +* fork()를 통한 프로세스 생성과정에서 페이지들이 공유되는 것을 가능하게 한다. ### 요구 페이징 (Demand Paging) 이란? -1. 프로그램 실행 시작 시, 프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략을 요구 페이징이라 하며, 가상 메모리 시스템에서 많이 사용된다. +프로그램 실행 시작 시 ```프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략```을 요구 페이징이라 하며, 가상 메모리 시스템에서 많이 사용된다. -2. 가상메모리는 대개 페이지로 관리된다. +* 가상메모리는 대개 페이지로 관리된다. -3. 요구페이징을 사용하는 가상메모리에서는 실행과정에서 필요해질 때 페이지들이 적재된다. 따라서 한번도 접근되지 않은 페이지는 물리 메모리에 적재되지 않는다. +* 요구페이징을 사용하는 가상메모리에서는 실행과정에서 필요해질 때 페이지들이 적재된다. 따라서 한번도 접근되지 않은 페이지는 물리 메모리에 적재되지 않는다. --- @@ -477,8 +479,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. -- 1) 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. -- 2) 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + 1) 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + 2) 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 @@ -489,28 +491,29 @@ Example 물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. * 장점 -- * 이해하지 쉽고, 프로그래밍도 쉽다. + * 이해하지 쉽고, 프로그래밍도 쉽다. * 단점 -- * 오래된 페이지가 항상 불필요하지 않은 정보를 포함하지 않을 수 있다. -- * 처음부터 활발하게 사용되는 페이지를 교체해서 페이지 부재율을 높일 수 있다. -- * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 객수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. + * 오래된 페이지가 항상 불필요하지 않은 정보를 포함하지 않을 수 있다. + * 처음부터 활발하게 사용되는 페이지를 교체해서 페이지 부재율을 높일 수 있다. + * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 객수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. #### [최적 페이지 교체] (Optimal Page Replacement) 모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~ * 장점 -- * 가장 낮은 페이지 부재율을 보장한다. + * 가장 낮은 페이지 부재율을 보장한다. * 단점 -- * 구현이 어렵다. 모든 프로세스의 메모리 참조 계획을 미리 파악할 수 없기 떄문이다. + * 구현이 어렵다. 모든 프로세스의 메모리 참조 계획을 미리 파악할 수 없기 떄문이다. #### [LRU 페이지 교체] (Least-Recently-Used Page Replacement) 최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. * 특징 +
```FIFO < LRU < OPT``` #### [LFU 페이지 교체] (Least-Frequently-Used Page Replacement) @@ -518,15 +521,15 @@ Example 참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. * 특징 -- + 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 초기 가정에 어긋 날 수 있다. -- + OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. + * 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 초기 가정에 어긋 날 수 있다. + * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. #### [MFU 페이지 교체] (Most-Frequently-Used Page Replacement) 참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. * 특징 -- + OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. + * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. --- From 12d42366acbfd0119300070a40d7086f872359db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:51:49 +0900 Subject: [PATCH 03/33] OS/Yoongoing --- contents/operating-system/README.md | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 6152376..d7067da 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -486,8 +486,10 @@ Example ### 페이지 교체 알고리즘 -#### [FIFO 페이지 교체] (First-In-First-Out Page Replacement) +#### [FIFO 페이지 교체] +```First-In-First-Out Page Replacement``` +
물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. * 장점 @@ -498,8 +500,12 @@ Example * 처음부터 활발하게 사용되는 페이지를 교체해서 페이지 부재율을 높일 수 있다. * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 객수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. -#### [최적 페이지 교체] (Optimal Page Replacement) +
+ +#### [최적 페이지 교체] +```Optimal Page Replacement``` +
모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~ * 장점 @@ -508,24 +514,36 @@ Example * 단점 * 구현이 어렵다. 모든 프로세스의 메모리 참조 계획을 미리 파악할 수 없기 떄문이다. -#### [LRU 페이지 교체] (Least-Recently-Used Page Replacement) +
+ +#### [LRU 페이지 교체] +```Least-Recently-Used Page Replacement``` +
최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. * 특징
```FIFO < LRU < OPT``` -#### [LFU 페이지 교체] (Least-Frequently-Used Page Replacement) +
+ +#### [LFU 페이지 교체] +```Least-Frequently-Used Page Replacement``` +
참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. * 특징 * 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 초기 가정에 어긋 날 수 있다. * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. -#### [MFU 페이지 교체] (Most-Frequently-Used Page Replacement) +
+ +#### [MFU 페이지 교체] +```Most-Frequently-Used Page Replacement``` +
참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. * 특징 From ae951f12d03f6cb381084cc009b84ddb2dfa9a0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:55:45 +0900 Subject: [PATCH 04/33] OS/Yoongoing --- contents/operating-system/README.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index d7067da..35632c5 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -467,6 +467,10 @@ Example * 요구페이징을 사용하는 가상메모리에서는 실행과정에서 필요해질 때 페이지들이 적재된다. 따라서 한번도 접근되지 않은 페이지는 물리 메모리에 적재되지 않는다. +### Reference +- 2021 시나공 정보처리기사 필기 +- https://github.com/JaeYeopHan/Interview_Question_for_Beginner + --- ## 페이지 교체 알고리즘 @@ -479,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - 1) 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - 2) 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + - 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + - 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 @@ -523,8 +527,7 @@ Example 최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. * 특징 -
-```FIFO < LRU < OPT``` + * FIFO < LRU < OPT
@@ -549,6 +552,10 @@ Example * 특징 * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. +### Reference +- 2021 시나공 정보처리기사 필기 +- https://github.com/JaeYeopHan/Interview_Question_for_Beginner + --- ## 캐시 From 0b883966141a76b53f4adb508d6e2418355d0597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:57:30 +0900 Subject: [PATCH 05/33] OS/Yoongoing --- contents/operating-system/README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 35632c5..b8b47f9 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - - 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - - 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + 1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + 2. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 @@ -496,6 +496,8 @@ Example
물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. +
+ * 장점 * 이해하지 쉽고, 프로그래밍도 쉽다. @@ -512,6 +514,8 @@ Example
모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~ +
+ * 장점 * 가장 낮은 페이지 부재율을 보장한다. @@ -526,6 +530,8 @@ Example
최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. +
+ * 특징 * FIFO < LRU < OPT @@ -537,6 +543,8 @@ Example
참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. +
+ * 특징 * 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 초기 가정에 어긋 날 수 있다. * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. @@ -549,6 +557,8 @@ Example
참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. +
+ * 특징 * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. From 401067bab5cfa6970ab2f5d5253dbce44089d37f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:58:23 +0900 Subject: [PATCH 06/33] OS/Yoongoing --- contents/operating-system/README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index b8b47f9..8b49e07 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -527,9 +527,7 @@ Example #### [LRU 페이지 교체] ```Least-Recently-Used Page Replacement``` -
최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. -
* 특징 @@ -540,9 +538,7 @@ Example #### [LFU 페이지 교체] ```Least-Frequently-Used Page Replacement``` -
참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. -
* 특징 From e31fc8b8a8896205c0d90492e370787902a9a7fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:59:36 +0900 Subject: [PATCH 07/33] OS/Yoongoing --- contents/operating-system/README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 8b49e07..0d02ad0 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - 1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - 2. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + - 1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + - 2. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 @@ -550,9 +550,7 @@ Example #### [MFU 페이지 교체] ```Most-Frequently-Used Page Replacement``` -
참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. -
* 특징 From 8499445e18b0243533bb5e80bb34ad33e2640922 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:02:27 +0900 Subject: [PATCH 08/33] OS/Yoongoing --- contents/operating-system/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 0d02ad0..c813fa9 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - - 1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - - 2. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + + 1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + + 2. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 From 4f2b08003a97006579790d1850f4cc5d853939db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:02:50 +0900 Subject: [PATCH 09/33] OS/Yoongoing --- contents/operating-system/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index c813fa9..4e37796 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - + 1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - + 2. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + 1-1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + 2-1. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 From afdc99b1f8d95307e2f19032bd12c7f6373872b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:03:12 +0900 Subject: [PATCH 10/33] OS/Yoongoing --- contents/operating-system/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 4e37796..14a9c85 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - 1-1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - 2-1. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + * 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + * 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 From ebfbf0f897d8099f89bf134c074b4282f176da06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:03:31 +0900 Subject: [PATCH 11/33] OS/Yoongoing --- contents/operating-system/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 14a9c85..c3ea976 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - * 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - * 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + * 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + * 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 From 790b5d1f42e8e5dfc7067b7c31e42b0a8d0c1386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:03:48 +0900 Subject: [PATCH 12/33] OS/Yoongoing --- contents/operating-system/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index c3ea976..ce60f08 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - * 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - * 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + 1) 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + 2) 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 From bf677be518e3dabba1f2c2ca6417654f45beb83d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:05:42 +0900 Subject: [PATCH 13/33] OS/Yoongoing --- contents/operating-system/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index ce60f08..c194d27 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -512,6 +512,7 @@ Example ```Optimal Page Replacement```
+ 모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~
From b28eeea833d405e5c3ce27237e9c6372c46a1ece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:06:42 +0900 Subject: [PATCH 14/33] OS/Yoongoing --- contents/operating-system/README.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index c194d27..8078e60 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -496,8 +496,6 @@ Example
물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. -
- * 장점 * 이해하지 쉽고, 프로그래밍도 쉽다. @@ -511,12 +509,8 @@ Example #### [최적 페이지 교체] ```Optimal Page Replacement``` -
- 모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~ -
- * 장점 * 가장 낮은 페이지 부재율을 보장한다. @@ -529,7 +523,6 @@ Example ```Least-Recently-Used Page Replacement``` 최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. -
* 특징 * FIFO < LRU < OPT @@ -540,7 +533,6 @@ Example ```Least-Frequently-Used Page Replacement``` 참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. -
* 특징 * 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 초기 가정에 어긋 날 수 있다. @@ -552,7 +544,6 @@ Example ```Most-Frequently-Used Page Replacement``` 참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. -
* 특징 * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. From 47dce6b8e82dac3b3b03abdd32726753bfbfe446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:07:11 +0900 Subject: [PATCH 15/33] OS/Yoongoing --- contents/operating-system/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 8078e60..2b2faf6 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -493,7 +493,6 @@ Example #### [FIFO 페이지 교체] ```First-In-First-Out Page Replacement``` -
물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. * 장점 From b060460cd99ace5a47663fc0bfb5ab428f9046fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:34:36 +0900 Subject: [PATCH 16/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 97 +++++++++++++++++++++++++++-- 1 file changed, 93 insertions(+), 4 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index dea78fa..684f7eb 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -439,6 +439,95 @@ Example ## 가상 메모리 +### 가상 메모리란? + +메인 메모리의 크기가 한정되어 있기때문에, 물리적인 메모리 크기보다 크기가 큰 프로세스를 실행시킬 수 없다. 그렇다면 메인 메모리보다 크기가 큰 프로세스를 실행시키고 싶으면 어떻게 해야 할까? 그래서 나온 방법이 바로 '가상메모리'이다. +
+
+프로세스의 모든 코드는 항상 필요하지 않기 때문에 필요한 부분만 메모리에 올림으로써 메모리에 올라가는 프로세스의 크기를 줄인다. +프로세스 이미지를 모두 메모리에 올릴 필요가 없어지며, 메모리 용량 부족 이슈를 해결할 수 있다. + +### 가상 메모리가 하는 일 + +1. 가상 메모리는 실제 물리 메모리 개념과 사용자의 논리 메모리 개념을 분리한 것이다. 따라서 작은 메모리를 가지고도 얼마든지 큰 가상주소 공간을 프로그래머에게 제공할 수 있다. + +2. 시스템 라이브러리가 여러 프로세스들 사이에 공유될수 있도록 한다. 각 프로세스들은 공유 라이브러리를 자신의 가상 주소 공간에 두고 사용하는 것처럼 인식하지만, 라이브러리가 올라가 있는 물리 메모리 페이지들은 모든 프로세스에 공유되고 있다. + +3. 프로세스들이 메모리를 공유하는 것을 가능하게 하고, 프로세스들은 공유 메모리를 통해 통신할 수 있다. + +4. fork()를 통한 프로세스 생성과정에서 페이지들이 공유되는 것을 가능하게 한다. + +### 요구 페이징 (Demand Paging) 이란? + +1. 프로그램 실행 시작 시, 프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략을 요구 페이징이라 하며, 가상 메모리 시스템에서 많이 사용된다. + +2. 가상메모리는 대개 페이지로 관리된다. + +3. 요구페이징을 사용하는 가상메모리에서는 실행과정에서 필요해질 때 페이지들이 적재된다. 따라서 한번도 접근되지 않은 페이지는 물리 메모리에 적재되지 않는다. + +--- + +## 페이지 교체 알고리즘 + +### 페이지 교체 + +앞선 요구페이징에서 언급된대로 프로세스의 동작에 필요한 페이지를 요청하는 과정에서 ```page fault(페이지 부재)``` 가 발생하게 되면, 원하는 페이지를 보조저장장치에서 가져오게 된다. 하지만, 물리 메모리가 모두 사용중인 상황이라면 **페이지 교체**가 이뤄져야 한다. + +### 페이지 교체 흐름 + +1. 디스크에서 필요한 페이지의 위치를 찾는다. +2. 빈 페이지 프레임을 찾는다. +- 1) 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. +- 2) 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. +3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. +4. 사용자 프로세스 재시작 + +### 페이지 교체 알고리즘 + +#### [FIFO 페이지 교체] (First-In-First-Out Page Replacement) + +물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. + +* 장점 +- * 이해하지 쉽고, 프로그래밍도 쉽다. + +* 단점 +- * 오래된 페이지가 항상 불필요하지 않은 정보를 포함하지 않을 수 있다. +- * 처음부터 활발하게 사용되는 페이지를 교체해서 페이지 부재율을 높일 수 있다. +- * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 객수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. + +#### [최적 페이지 교체] (Optimal Page Replacement) + +모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~ + +* 장점 +- * 가장 낮은 페이지 부재율을 보장한다. + +* 단점 +- * 구현이 어렵다. 모든 프로세스의 메모리 참조 계획을 미리 파악할 수 없기 떄문이다. + +#### [LRU 페이지 교체] (Least-Recently-Used Page Replacement) + +최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. + +* 특징 +```FIFO < LRU < OPT``` + +#### [LFU 페이지 교체] (Least-Frequently-Used Page Replacement) + +참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. + +* 특징 +- + 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 초기 가정에 어긋 날 수 있다. +- + OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. + +#### [MFU 페이지 교체] (Most-Frequently-Used Page Replacement) + +참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. + +* 특징 +- + OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. + --- ## 캐시 @@ -513,7 +602,7 @@ CPU에서 명령어를 수행하며 매번 캐시 메모리를 참조하게 되 ### 교착상태를 막을 방법은 없을까? -#### 예방 기법 (Prevention) +#### [예방 기법 (Prevention)] 교착상태가 발생하지 않도록 사전에 시스템을 제어하는 방법으로, 교착상태 발생의 네 가지 조건중에서 어느 하나를 제거하는 방법이다. 자원 낭비가 가장 심한 기법이다. @@ -522,7 +611,7 @@ CPU에서 명령어를 수행하며 매번 캐시 메모리를 참조하게 되 3. **비선점 부정** : 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다리게 한다. 4. **환형 대기 부정** : 자원을 선형 순서로 분류하여 고유번호를 할당하고, 각 프로세스는 현재 점유한 자원의 고유 번호보다 앞이나 뒤 어느 한쪽 방향으로만 자원을 요구한다. -#### 회피 기법 (Avoidance) +#### [회피 기법 (Avoidance)] 교착상태가 발생할 가능성을 배제하지 않고, 교착상태가 발생하면 적절히 피해나가는 방법으로, **은행원 알고리즘(Banker's Algorithm)** 이 사용된다. @@ -533,11 +622,11 @@ CPU에서 명령어를 수행하며 매번 캐시 메모리를 참조하게 되 > 4. 은행원 알고리즘은 프로세스의 모든 요구를 유한한 시간안에 할당하는 것을 보장함 > ``` -#### 발견 기법 (Detection) +#### [발견 기법 (Detection)] 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 기법이다. 발견 후엔 교착상태 회복(Recovery) 직업을 수행하므로 발견기법과 회복기법을 함께 쓴다. (Detection & Recovery) -#### 회복 기법 (Recovery) +#### [회복 기법 (Recovery)] 교착상태를 일으킨 프로세스를 종료하거나, 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것을 의미한다. 크게 프로세스 종료와 자원 선택으로 나뉜다. From 9d579bcacfc227029f6a991b967e522c89d33ca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:48:19 +0900 Subject: [PATCH 17/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 43 +++++++++++++++-------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 684f7eb..6152376 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -441,29 +441,31 @@ Example ### 가상 메모리란? -메인 메모리의 크기가 한정되어 있기때문에, 물리적인 메모리 크기보다 크기가 큰 프로세스를 실행시킬 수 없다. 그렇다면 메인 메모리보다 크기가 큰 프로세스를 실행시키고 싶으면 어떻게 해야 할까? 그래서 나온 방법이 바로 '가상메모리'이다. +메인 메모리의 크기가 한정되어 있기때문에, 물리적인 메모리 크기보다 큰 프로세스를 실행시킬 수 없다. 그렇다면 메인 메모리보다 크기가 큰 프로세스를 실행시키고 싶으면 어떻게 해야 할까? 그래서 나온 방법이 바로 '가상메모리'이다.

-프로세스의 모든 코드는 항상 필요하지 않기 때문에 필요한 부분만 메모리에 올림으로써 메모리에 올라가는 프로세스의 크기를 줄인다. +프로세스의 모든 코드는 항상 필요하지 않기 때문에 ```필요한 부분만 메모리에 올림으로써 메모리에 올라가는 프로세스의 크기를 줄인다.``` 프로세스 이미지를 모두 메모리에 올릴 필요가 없어지며, 메모리 용량 부족 이슈를 해결할 수 있다. ### 가상 메모리가 하는 일 -1. 가상 메모리는 실제 물리 메모리 개념과 사용자의 논리 메모리 개념을 분리한 것이다. 따라서 작은 메모리를 가지고도 얼마든지 큰 가상주소 공간을 프로그래머에게 제공할 수 있다. +가상 메모리는 실제 ```물리 메모리 개념과 사용자의 논리 메모리 개념을 분리```한 것이다. 따라서 작은 메모리를 가지고도 얼마든지 큰 가상주소 공간을 프로그래머에게 제공할 수 있다. -2. 시스템 라이브러리가 여러 프로세스들 사이에 공유될수 있도록 한다. 각 프로세스들은 공유 라이브러리를 자신의 가상 주소 공간에 두고 사용하는 것처럼 인식하지만, 라이브러리가 올라가 있는 물리 메모리 페이지들은 모든 프로세스에 공유되고 있다. +#### 따라서 가상메모리는... -3. 프로세스들이 메모리를 공유하는 것을 가능하게 하고, 프로세스들은 공유 메모리를 통해 통신할 수 있다. +* 시스템 라이브러리가 여러 프로세스들 사이에 공유될수 있도록 한다. 각 프로세스들은 공유 라이브러리를 자신의 가상 주소 공간에 두고 사용하는 것처럼 인식하지만, 라이브러리가 올라가 있는 물리 메모리 페이지들은 모든 프로세스에 공유되고 있다. -4. fork()를 통한 프로세스 생성과정에서 페이지들이 공유되는 것을 가능하게 한다. +* 프로세스들이 메모리를 공유하는 것을 가능하게 하고, 프로세스들은 공유 메모리를 통해 통신할 수 있다. + +* fork()를 통한 프로세스 생성과정에서 페이지들이 공유되는 것을 가능하게 한다. ### 요구 페이징 (Demand Paging) 이란? -1. 프로그램 실행 시작 시, 프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략을 요구 페이징이라 하며, 가상 메모리 시스템에서 많이 사용된다. +프로그램 실행 시작 시 ```프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략```을 요구 페이징이라 하며, 가상 메모리 시스템에서 많이 사용된다. -2. 가상메모리는 대개 페이지로 관리된다. +* 가상메모리는 대개 페이지로 관리된다. -3. 요구페이징을 사용하는 가상메모리에서는 실행과정에서 필요해질 때 페이지들이 적재된다. 따라서 한번도 접근되지 않은 페이지는 물리 메모리에 적재되지 않는다. +* 요구페이징을 사용하는 가상메모리에서는 실행과정에서 필요해질 때 페이지들이 적재된다. 따라서 한번도 접근되지 않은 페이지는 물리 메모리에 적재되지 않는다. --- @@ -477,8 +479,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. -- 1) 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. -- 2) 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + 1) 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + 2) 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 @@ -489,28 +491,29 @@ Example 물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. * 장점 -- * 이해하지 쉽고, 프로그래밍도 쉽다. + * 이해하지 쉽고, 프로그래밍도 쉽다. * 단점 -- * 오래된 페이지가 항상 불필요하지 않은 정보를 포함하지 않을 수 있다. -- * 처음부터 활발하게 사용되는 페이지를 교체해서 페이지 부재율을 높일 수 있다. -- * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 객수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. + * 오래된 페이지가 항상 불필요하지 않은 정보를 포함하지 않을 수 있다. + * 처음부터 활발하게 사용되는 페이지를 교체해서 페이지 부재율을 높일 수 있다. + * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 객수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. #### [최적 페이지 교체] (Optimal Page Replacement) 모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~ * 장점 -- * 가장 낮은 페이지 부재율을 보장한다. + * 가장 낮은 페이지 부재율을 보장한다. * 단점 -- * 구현이 어렵다. 모든 프로세스의 메모리 참조 계획을 미리 파악할 수 없기 떄문이다. + * 구현이 어렵다. 모든 프로세스의 메모리 참조 계획을 미리 파악할 수 없기 떄문이다. #### [LRU 페이지 교체] (Least-Recently-Used Page Replacement) 최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. * 특징 +
```FIFO < LRU < OPT``` #### [LFU 페이지 교체] (Least-Frequently-Used Page Replacement) @@ -518,15 +521,15 @@ Example 참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. * 특징 -- + 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 초기 가정에 어긋 날 수 있다. -- + OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. + * 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 초기 가정에 어긋 날 수 있다. + * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. #### [MFU 페이지 교체] (Most-Frequently-Used Page Replacement) 참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. * 특징 -- + OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. + * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. --- From a3b47b331ea277ba258778f1d6e87a5786b43045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:51:49 +0900 Subject: [PATCH 18/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 6152376..d7067da 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -486,8 +486,10 @@ Example ### 페이지 교체 알고리즘 -#### [FIFO 페이지 교체] (First-In-First-Out Page Replacement) +#### [FIFO 페이지 교체] +```First-In-First-Out Page Replacement``` +
물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. * 장점 @@ -498,8 +500,12 @@ Example * 처음부터 활발하게 사용되는 페이지를 교체해서 페이지 부재율을 높일 수 있다. * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 객수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. -#### [최적 페이지 교체] (Optimal Page Replacement) +
+ +#### [최적 페이지 교체] +```Optimal Page Replacement``` +
모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~ * 장점 @@ -508,24 +514,36 @@ Example * 단점 * 구현이 어렵다. 모든 프로세스의 메모리 참조 계획을 미리 파악할 수 없기 떄문이다. -#### [LRU 페이지 교체] (Least-Recently-Used Page Replacement) +
+ +#### [LRU 페이지 교체] +```Least-Recently-Used Page Replacement``` +
최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. * 특징
```FIFO < LRU < OPT``` -#### [LFU 페이지 교체] (Least-Frequently-Used Page Replacement) +
+ +#### [LFU 페이지 교체] +```Least-Frequently-Used Page Replacement``` +
참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. * 특징 * 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 초기 가정에 어긋 날 수 있다. * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. -#### [MFU 페이지 교체] (Most-Frequently-Used Page Replacement) +
+ +#### [MFU 페이지 교체] +```Most-Frequently-Used Page Replacement``` +
참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. * 특징 From d7ba9e26140ff704ad03d99142e03c4ff844d336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:55:45 +0900 Subject: [PATCH 19/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index d7067da..35632c5 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -467,6 +467,10 @@ Example * 요구페이징을 사용하는 가상메모리에서는 실행과정에서 필요해질 때 페이지들이 적재된다. 따라서 한번도 접근되지 않은 페이지는 물리 메모리에 적재되지 않는다. +### Reference +- 2021 시나공 정보처리기사 필기 +- https://github.com/JaeYeopHan/Interview_Question_for_Beginner + --- ## 페이지 교체 알고리즘 @@ -479,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - 1) 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - 2) 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + - 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + - 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 @@ -523,8 +527,7 @@ Example 최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. * 특징 -
-```FIFO < LRU < OPT``` + * FIFO < LRU < OPT
@@ -549,6 +552,10 @@ Example * 특징 * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. +### Reference +- 2021 시나공 정보처리기사 필기 +- https://github.com/JaeYeopHan/Interview_Question_for_Beginner + --- ## 캐시 From aa499447076fb34dc939e200a440e86c90d57b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:57:30 +0900 Subject: [PATCH 20/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 35632c5..b8b47f9 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - - 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - - 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + 1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + 2. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 @@ -496,6 +496,8 @@ Example
물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. +
+ * 장점 * 이해하지 쉽고, 프로그래밍도 쉽다. @@ -512,6 +514,8 @@ Example
모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~ +
+ * 장점 * 가장 낮은 페이지 부재율을 보장한다. @@ -526,6 +530,8 @@ Example
최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. +
+ * 특징 * FIFO < LRU < OPT @@ -537,6 +543,8 @@ Example
참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. +
+ * 특징 * 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 초기 가정에 어긋 날 수 있다. * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. @@ -549,6 +557,8 @@ Example
참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. +
+ * 특징 * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. From 89f574c587ad42745906022022e42b0f706c2d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:58:23 +0900 Subject: [PATCH 21/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index b8b47f9..8b49e07 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -527,9 +527,7 @@ Example #### [LRU 페이지 교체] ```Least-Recently-Used Page Replacement``` -
최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. -
* 특징 @@ -540,9 +538,7 @@ Example #### [LFU 페이지 교체] ```Least-Frequently-Used Page Replacement``` -
참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. -
* 특징 From 6bd3a0e6454a328e5d720c95f2307a7a954ece3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 11:59:36 +0900 Subject: [PATCH 22/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 8b49e07..0d02ad0 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - 1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - 2. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + - 1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + - 2. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 @@ -550,9 +550,7 @@ Example #### [MFU 페이지 교체] ```Most-Frequently-Used Page Replacement``` -
참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. -
* 특징 From 3ae635221488fef15cb15b49bd6ce2aaac73844c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:02:27 +0900 Subject: [PATCH 23/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 0d02ad0..c813fa9 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - - 1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - - 2. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + + 1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + + 2. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 From 8f2191a0ae08d306e3b1670a278eb821f41a98cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:02:50 +0900 Subject: [PATCH 24/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index c813fa9..4e37796 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - + 1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - + 2. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + 1-1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + 2-1. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 From 0aa8c2ee4bc04634a889e6d21d3f3afb24893558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:03:12 +0900 Subject: [PATCH 25/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 4e37796..14a9c85 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - 1-1. 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - 2-1. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + * 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + * 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 From 02c5f090d222bc843cd5cbc7a709179f1f9ff850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:03:31 +0900 Subject: [PATCH 26/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 14a9c85..c3ea976 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - * 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - * 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + * 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + * 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 From db4a8f8fd0bafffcfc30d6fb46779c1c064c8a3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:03:48 +0900 Subject: [PATCH 27/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index c3ea976..ce60f08 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -483,8 +483,8 @@ Example 1. 디스크에서 필요한 페이지의 위치를 찾는다. 2. 빈 페이지 프레임을 찾는다. - * 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. - * 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. + 1) 페이지 교체 알고리즘을 통해 희생될 페이지를 고른다. + 2) 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정한다. 3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고, 프레임 테이블을 수정한다. 4. 사용자 프로세스 재시작 From a244886d413e9e4593a44cf11c5bf410e37e1e86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:05:42 +0900 Subject: [PATCH 28/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index ce60f08..c194d27 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -512,6 +512,7 @@ Example ```Optimal Page Replacement```
+ 모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~
From 8fec9093ec2170c2a9266e0ba35d49c7ffcda396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:06:42 +0900 Subject: [PATCH 29/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index c194d27..8078e60 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -496,8 +496,6 @@ Example
물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. -
- * 장점 * 이해하지 쉽고, 프로그래밍도 쉽다. @@ -511,12 +509,8 @@ Example #### [최적 페이지 교체] ```Optimal Page Replacement``` -
- 모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~ -
- * 장점 * 가장 낮은 페이지 부재율을 보장한다. @@ -529,7 +523,6 @@ Example ```Least-Recently-Used Page Replacement``` 최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. -
* 특징 * FIFO < LRU < OPT @@ -540,7 +533,6 @@ Example ```Least-Frequently-Used Page Replacement``` 참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. -
* 특징 * 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 초기 가정에 어긋 날 수 있다. @@ -552,7 +544,6 @@ Example ```Most-Frequently-Used Page Replacement``` 참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. -
* 특징 * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. From 436f1826a49358898369b082435019891eaf5801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Sat, 24 Jul 2021 12:07:11 +0900 Subject: [PATCH 30/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 8078e60..2b2faf6 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -493,7 +493,6 @@ Example #### [FIFO 페이지 교체] ```First-In-First-Out Page Replacement``` -
물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. * 장점 From 666f40f52b1c545bb2902f999f924c1065befcf6 Mon Sep 17 00:00:00 2001 From: Hee-Jae Date: Sun, 25 Jul 2021 15:29:48 +0900 Subject: [PATCH 31/33] =?UTF-8?q?[OS]=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 2b2faf6..dd4bb5a 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -496,12 +496,12 @@ Example 물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. * 장점 - * 이해하지 쉽고, 프로그래밍도 쉽다. + * 이해하기 쉽고, 프로그래밍도 쉽다. * 단점 * 오래된 페이지가 항상 불필요하지 않은 정보를 포함하지 않을 수 있다. * 처음부터 활발하게 사용되는 페이지를 교체해서 페이지 부재율을 높일 수 있다. - * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 객수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. + * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 개수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다.
From 7ee0276fc53f02480816787d8d84e14f07bf7f93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Mon, 26 Jul 2021 19:05:22 +0900 Subject: [PATCH 32/33] =?UTF-8?q?[OS]=20=EA=B0=80=EC=83=81=EB=A9=94?= =?UTF-8?q?=EB=AA=A8=EB=A6=AC,=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 1aac8ed..4c8eb67 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -441,15 +441,15 @@ Example ### 가상 메모리란? -메인 메모리의 크기가 한정되어 있기때문에, 물리적인 메모리 크기보다 큰 프로세스를 실행시킬 수 없다. 그렇다면 메인 메모리보다 크기가 큰 프로세스를 실행시키고 싶으면 어떻게 해야 할까? 그래서 나온 방법이 바로 '가상메모리'이다. +메인 메모리의 크기가 한정되어 있기 때문에 물리적인 메모리 크기보다 큰 프로세스를 실행시킬 수 없다. 그렇다면 메인 메모리보다 크기가 큰 프로세스를 실행시키고 싶으면 어떻게 해야 할까? 그래서 나온 방법이 바로 '가상메모리'이다.

-프로세스의 모든 코드는 항상 필요하지 않기 때문에 ```필요한 부분만 메모리에 올림으로써 메모리에 올라가는 프로세스의 크기를 줄인다.``` -프로세스 이미지를 모두 메모리에 올릴 필요가 없어지며, 메모리 용량 부족 이슈를 해결할 수 있다. + +**프로세스 전체가 메모리 내에 올라오지 않더라고 실행히 가능하도록 하는 기법을 통틀어 가상메모리**라고 하며, `필요한 부분만 메모리에 올림으로써 메모리에 올라가는 프로세스의 크기를 줄이는` 요구 페이징 기법을 사용한다. 프로세스 이미지를 모두 메모리에 올릴 필요가 없어지며, 메모리 용량 부족 이슈를 해결할 수 있다. ### 가상 메모리가 하는 일 -가상 메모리는 실제 ```물리 메모리 개념과 사용자의 논리 메모리 개념을 분리```한 것이다. 따라서 작은 메모리를 가지고도 얼마든지 큰 가상주소 공간을 프로그래머에게 제공할 수 있다. +가상 메모리는 실제 `물리 메모리 개념과 사용자의 논리 메모리 개념을 분리`한 것이다. 따라서 작은 메모리를 가지고도 얼마든지 큰 가상주소 공간을 프로그래머에게 제공할 수 있다. #### 따라서 가상메모리는... @@ -461,7 +461,7 @@ Example ### 요구 페이징 (Demand Paging) 이란? -프로그램 실행 시작 시 ```프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략```을 요구 페이징이라 하며, 가상 메모리 시스템에서 많이 사용된다. +프로그램 실행 시작 시 `프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략`을 요구 페이징이라 하며, 가상 메모리 시스템에서 많이 사용된다. * 가상메모리는 대개 페이지로 관리된다. @@ -477,7 +477,7 @@ Example ### 페이지 교체 -앞선 요구페이징에서 언급된대로 프로세스의 동작에 필요한 페이지를 요청하는 과정에서 ```page fault(페이지 부재)``` 가 발생하게 되면, 원하는 페이지를 보조저장장치에서 가져오게 된다. 하지만, 물리 메모리가 모두 사용중인 상황이라면 **페이지 교체**가 이뤄져야 한다. +앞선 요구페이징에서 언급된대로 프로세스의 동작에 필요한 페이지를 요청하는 과정에서 `page fault(페이지 부재)` 가 발생하게 되면, 원하는 페이지를 보조저장장치에서 가져오게 된다. 하지만, 물리 메모리가 모두 사용중인 상황이라면 **페이지 교체**가 이뤄져야 한다. ### 페이지 교체 흐름 @@ -491,7 +491,7 @@ Example ### 페이지 교체 알고리즘 #### [FIFO 페이지 교체] -```First-In-First-Out Page Replacement``` +`First-In-First-Out Page Replacement` 물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. @@ -503,20 +503,20 @@ Example >>>>>>> 666f40f52b1c545bb2902f999f924c1065befcf6 * 단점 - * 오래된 페이지가 항상 불필요하지 않은 정보를 포함하지 않을 수 있다. + * 오래된 페이지가 불필요한 정보를 포함한다고 보장할 수 없다. * 처음부터 활발하게 사용되는 페이지를 교체해서 페이지 부재율을 높일 수 있다. <<<<<<< HEAD * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 객수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. ======= - * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 개수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. + * `Belady의 모순` : 페이지를 저장할 수 있는 페이지 프레임의 개수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. >>>>>>> 666f40f52b1c545bb2902f999f924c1065befcf6
#### [최적 페이지 교체] -```Optimal Page Replacement``` +`Optimal Page Replacement` -모든 알고리즘보다 낮은 페이지 부재율을 보이며 ```Belady의 모순``` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~ +모든 알고리즘보다 낮은 페이지 부재율을 보이며 `Belady의 모순` 또한 발생하지 않는다. 이 알고리즘의 핵심은 **앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체**하는 것이다. 주로 비교 연구 목적을 위해 사용된다.~(안사용된다는 말)~ * 장점 * 가장 낮은 페이지 부재율을 보장한다. @@ -527,7 +527,7 @@ Example
#### [LRU 페이지 교체] -```Least-Recently-Used Page Replacement``` +`Least-Recently-Used Page Replacement` 최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체한다. @@ -537,7 +537,7 @@ Example
#### [LFU 페이지 교체] -```Least-Frequently-Used Page Replacement``` +`Least-Frequently-Used Page Replacement` 참조 횟수가 가장 적은 페이지를 교체한다. 활발하게 사용되는 페이지는 참조 횟수가 많아질 거라는 가정에서 만들어졌다. @@ -548,7 +548,7 @@ Example
#### [MFU 페이지 교체] -```Most-Frequently-Used Page Replacement``` +`Most-Frequently-Used Page Replacement` 참조 횟수가 가장 적은 페이지가 최근에 메모리에 올라왔고, 앞으로 계속 사용될 것이라는 가정에 기반한다. @@ -556,6 +556,7 @@ Example * OPT 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않는다. ### Reference + - 2021 시나공 정보처리기사 필기 - https://github.com/JaeYeopHan/Interview_Question_for_Beginner From 53b74bb8b853aaf0fdd734eb7fbe504afa96efd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A4=EA=B0=80=EC=98=81?= Date: Mon, 26 Jul 2021 19:09:24 +0900 Subject: [PATCH 33/33] =?UTF-8?q?[OS]=20=EC=B5=9C=EC=A2=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contents/operating-system/README.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 4c8eb67..14f770b 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -454,9 +454,7 @@ Example #### 따라서 가상메모리는... * 시스템 라이브러리가 여러 프로세스들 사이에 공유될수 있도록 한다. 각 프로세스들은 공유 라이브러리를 자신의 가상 주소 공간에 두고 사용하는 것처럼 인식하지만, 라이브러리가 올라가 있는 물리 메모리 페이지들은 모든 프로세스에 공유되고 있다. - * 프로세스들이 메모리를 공유하는 것을 가능하게 하고, 프로세스들은 공유 메모리를 통해 통신할 수 있다. - * fork()를 통한 프로세스 생성과정에서 페이지들이 공유되는 것을 가능하게 한다. ### 요구 페이징 (Demand Paging) 이란? @@ -464,7 +462,6 @@ Example 프로그램 실행 시작 시 `프로그램 전체를 디스크에서 물리 메모리에 적재하는 대신, 초기에 필요한 것들만 적재하는 전략`을 요구 페이징이라 하며, 가상 메모리 시스템에서 많이 사용된다. * 가상메모리는 대개 페이지로 관리된다. - * 요구페이징을 사용하는 가상메모리에서는 실행과정에서 필요해질 때 페이지들이 적재된다. 따라서 한번도 접근되지 않은 페이지는 물리 메모리에 적재되지 않는다. ### Reference @@ -496,20 +493,12 @@ Example 물리메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 된다. * 장점 -<<<<<<< HEAD - * 이해하지 쉽고, 프로그래밍도 쉽다. -======= * 이해하기 쉽고, 프로그래밍도 쉽다. ->>>>>>> 666f40f52b1c545bb2902f999f924c1065befcf6 * 단점 * 오래된 페이지가 불필요한 정보를 포함한다고 보장할 수 없다. * 처음부터 활발하게 사용되는 페이지를 교체해서 페이지 부재율을 높일 수 있다. -<<<<<<< HEAD - * ```Belady의 모순``` : 페이지를 저장할 수 있는 페이지 프레임의 객수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. -======= * `Belady의 모순` : 페이지를 저장할 수 있는 페이지 프레임의 개수를 늘려도 되려 페이지 부재가 더 많이 발생한다는 모순이 존재한다. ->>>>>>> 666f40f52b1c545bb2902f999f924c1065befcf6