티스토리 뷰

학교/운영체제

[18] 운영체제 - Virtual Memory-3

군옥수수수 2017. 9. 26. 20:15

안녕하세요.
저번 시간에 이어서 오늘은 Page Replacement로 인해 발생하는 문제점인
Thrashing 현상에 대해 공부해보도록 하겠습니다.
그럼 바로 시작하겠습니다!
Thrashing
Thrashing 현상의 정의를 바로 설명하지 않고 Thrashing 현상이 일어난 원인들을 하나하나 이야기하면서 설명해보도록 하겠습니다.
가상 메모리 기법의 구현 원리는 그때그때 필요한 부분만을 메모리에 올려 실행하는 것이고 당장 실행에 필요하지 않는 부분은 디스크에 보관하는 것입니다.
메모리에 올라간 부분들은 Page Table에 표시가 되며 각각은 할당받은 Frame에 올라가게 됩니다.
하지만 만일 현재 실행 시점에서 필요한 부분이 메모리상에 존재하지 않고 디스크에 존재하며 여유 Frame이 없다면 디스크에서 필요한 부분을 찾은 후 Swap-out 시킬 Victim Frame을 찾아 디스크로 보내거나 덮어씌운 후 새로 올린 부분의 명령어를 다시 실행시킵니다.
이러한 현상을 Page Fault라고 합니다. 이러한 Page Fault 현상은 대표적인 CPU 자원 효율성을 떨어뜨리는 현상 중 하나입니다.
왜냐하면 자원을 할당받은 시간 내에 CPU 자원을 사용하기보다는 I/O 작업에 시간을 더욱 소비하기 때문입니다. 여기서 우리는 이전에 공부했던 Multi-Programming에 대해서 다시 생각해볼 필요가 있습니다.
Multi-Programming은 CPU 자원의 효율성을 높이기 위해 보다 많은 프로세스에게 CPU를 할당주면서 자원을 더욱 바쁘게 효율적으로 관리하는 기법입니다. 
이제 Page fault와 Multi-Programming 간의 관계를 다음 그래프를 통해서 살펴보도록 하겠습니다.


한정된 자원 안에서 운영체제는 CPU의 효율성을 높이기 위해 보다 많은 프로세스를 동시에 실행시키기 위해 메모리에 많은 프로세스를 올리게 됩니다. 
이로써 CPU 효율성은 높아지게 됩니다. 하지만 동시에 실행 중인 프로세스의 수가 많아질수록 하나의 프로세스가 할당받는 자원의 양은 점점 적어지게 됩니다. 
그렇게 된다면 할당받는 Frame의 수도 적어지게 되는데 이렇게 Frame의 수가 줄어들게 되면 그만큼 Page Fault가 많이 발생하게 되고 그렇다면 자원의 활용보다는 I/O 작업에 시간을 더욱 소비하게 됩니다.
이렇게 되면 프로그램의 진행속도는 굉장히 느려지고 CPU의 효율성 역시 굉장히 떨어지게 됩니다. 
하지만 여기서 문제점 운영체제는 이러한 CPU 효율성의 저하를 극복하기 위해 메모리에 프로세스를 더욱 올리게 됩니다.
이런 악순환으로 CPU 효율성은 기하급수적으로 떨어지게 되고 결국에는 프로그램의 비정상적인 종료로 이어지게 되고
이러한 현상을 Thrashing이라고 합니다.
To prevent Thrashing
이러한 Thrashing 현상을 막기 위해서는 매 실행 시점마다 프로세스가 필요로 하는 Frame 수만큼을 할당해주어야 합니다. 전체가 아닌 실행 시간마다 필요한 만큼의 Frame 수를 확하게 알기는 불가능합니다.
우리는 그 양을 예측을 해야 하는데 어떻게 예측을 해야 할까요?
바로 Locality를 통해 필요한 Frame의 양을 예측해볼 수 있습니다. 
Locality는 특정한 해당 시점에서 실행되기 위해 필요한 Page들의 집합입니다.
즉, 그 Locality만큼을 담을 수 있는 Frame의 양을 할당해주면 Thrashing 현상을 막을 수 있습니다.


그리고 이러한 Locality Map에서 
현시점에서부터 일정 시점 전의 Locality를 바탕으로 현재의 Locality 영역을 추정하게 됩니다.
그렇기 때문에 Locality가 분기되는 시점(Locality의 영역이 급변)에서는 순간 Page fault의 횟수가 치솟게 되지만 시간이 지날수록 수치는 안정적인 값을 갖게 됩니다.
이렇게 현재 시점으로부터 과거의 Locality를 측정하는 시점의 간격을 Working Set Size이라 합니다.
Working Set의 크기는 보다 정확한 Locality를 추정하기 위해서는 신중하게 결정되어야 합니다.


오늘은 이렇게 간단하게 Thrashing에 대해서 공부해보았는데요!
저에게는 Locality와 Working Set은 조금은 이해하기 어렵고 받아들이기 힘든 개념이었습니다.
그러한 것이 글에도 나타나는 것 같아 굉장히 아쉽기도 합니다.
후에 보다 공부를 하여 내용을 보충하는 시간을 갖도록 하겠습니다.
감사합니다.

'학교 > 운영체제' 카테고리의 다른 글

[17] 운영체제 - Virtual Memory-2  (2) 2017.09.26
[16] 운영체제 - Virtual Memory-1  (0) 2017.09.26
[15] 운영체제 - Memory-4  (0) 2017.09.22
[14] 운영체제 - Memory-3  (3) 2017.09.22
[13] 운영체제 - Memory-2  (0) 2017.09.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함