일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 1%d
- 블록 체인
- for문 사용해보기
- 함수 사용하기
- 더하기 사이클
- 1546
- 가상 화폐
- Remix
- 단계별로 풀어보기
- 알고리즘 문제풀이
- 2448
- 10817
- Baekjoon
- if문 사용해보기
- 이더리움
- 솔리디티
- Dapp
- 백준
- 1110
- 비트 코인
- 평균은 넘겠지
- 자바스크립트
- 시험 성적
- 10871
- 별 찍기 - 11
- Mist
- 1065
- X보다 작은 수
- 그대로 출력하기
- 세 수
- Today
- Total
블링블링 범블링
[OS 20장] 메모리 관리 - 유효 접근 시간 및 지역성의 원리 본문
프로세스를 메인 메모리에 적재할 때 모든 부분을 다 올리게 되면 메모리 공간이 많이 부족하게 된다. 따라서 프로세스를 적재를 할 때 지금 당장 필요로 하는 코드의 부분만 올리는 방법을 택하여 프로세스들이 다 메모리상에 올라와 있는 것처럼 보이게 하여 메모리 공간이 더 커보이게 보인다. 이러한 방법이 바로 가상 메모리를 사용하는 것이다.
가상 메모리는 요구 페이징 기법을 사용하여 메모리에 올리게 된다. 프로세스는 페이지의 집합이므로 지금 필요한 페이지만 메모리에 올리고 사용하지 않는 페이지들은 backing store에 저장한다. 페이지 테이블은 메인 메모리에 적재되어 있는지 backing store에 있는지를 구분하는 valid 비트를 가지게 된다. 메인 메모리에 있는 페이지는 CPU가 요구할 시 페이지 테이블을 따라 실행을 하면 되지만 backing store에 있는 페이지의 경우에는 CPU의 동작을 멈추고 운영체제가 backing store에서 페이지를 찾아 메인 메모리에 적재를 시키고 valid 비트를 바꾸어주는 작업을 수행해야한다.
유효 접근 시간이라는 것은 Effective Access Time으로 평균적으로 CPU가 요구할 때 메모리를 통해 읽혀지는 시간을 의미한다. 어떤 프로세스의 경우 메인 메모리에 올라와 있으면 바로 읽어서 시간일 짧을 것이고 어떤 프로세스의 경우 backing store에서 메인 메모리로 올려줘야 하는 경우 CPU도 중단시켜야하고 운영체제가 찾아서 올리는 과정까지 해서 시간이 많이 걸릴 것이다. 그래서 페이지 결함이 일어날 확률을 통해 유효 접근 시간을 구하게 된다.
유효 접근 시간을 수학적인 식으로 구하게 되면 다음과 같다.
Teff = (1-p)Tm + pTp
유효 접근 시간은 메모리에 존재하는 페이지와 메모리에 존재하지 않는 페이지의 접근 시간의 평균으로 구한다고 했다. p의 값은 페이지가 결함이 일어날 확률이다. 따라서 1-p는 페이지가 결함이 일어나지 않을 확률이다. Tm 값은 메인 메모리에서 바로 CPU가 실행할 수 있는 시간을 의미하고 Tp는 운영체제가 backing store인 하드디스크에서 페이지를 찾고 메모리에 올리고 실행시키는 시간을 의미한다. 정확하게 Tp는 seek time, rotational delay, transfer time으로 나눌 수 있다. 여기서 seek time인 하드디스크에서 찾아가는 시간으로 가장 오래 걸리는 부분을 차지한다. 당연히 Tp가 Tm에 비해 걸리는 시간이 많은 것이다. 따라서 각각의 확률에 시간을 곱한 후 더하게 되면 평균적으로 페이지를 접근하는데 걸리는 시간이 나오게 된다. Tp가 유효 접근 시간에 큰 영향을 끼치므로 페이지 결함을 줄여야 컴퓨터의 효율이 올라가게 된다.
지역성의 원리는 CPU가 참조하는 주소가 지역에 모여져 있다는 의미이다. 메모리 접근은 시간적, 공간적으로 지역성을 가진다. 시간적인 지역성은 한 번 읽었던 코드를 다시 읽을 확률이 높다는 것을 의미한다. 코드 중에는 while문이나 for문과 같이 같은 구간을 반복하는 명령이 존재하기 때문이다. 이 때 맨 처음에 페이지를 메인 메모리에 적재한 후에는 다시 적재할 필요가 없기 때문에 페이지 결함의 확률이 매우 낮다. 공간적인 지역성은 코드를 읽을 때 현재 코드의 주변에 있는 코드를 읽을 확률이 높다는 것을 의미한다. 페이지 결함이 일어나 하드디스크에서 페이지를 가져올 때 주변 코드들을 block 단위로 가져오게 되면 주변 코드를 읽을 확률이 높으니 다음의 페이지 결함의 확률이 낮아지는 것이다. 따라서 지역성의 원리에 의해 페이지 결함으로 인한 컴퓨터의 효율이 떨어지는 확률이 많이 낮아진다.
'Technology > 오퍼레이팅 시스템' 카테고리의 다른 글
[OS 22장] 메모리 관리 - 프레임 할당 (0) | 2018.04.17 |
---|---|
[OS 21장] 메모리 관리 - 페이지 교체 (0) | 2018.04.17 |
[OS 19장] 메모리 관리 - 가상 메모리 (0) | 2018.04.17 |
[OS 18장] 메모리 관리 - 세그멘테이션(Segmentation) (0) | 2018.04.17 |
[OS 17장] 메모리 관리 - 페이징 (0) | 2018.04.17 |