운영체제

운영체제 8.1 하드웨어와 제어구조

공부승식 2021. 5. 20. 20:12
728x90

사실 세그멘테이션, 페이징기법을 이용한다면 수행시간에 프로세스의 모든 페이지(또는 세그먼트)가 주기억장치에 적재되어있을 필요가 없다.

어떻게 그렇게 할 수있을까? 페이징에서는 페이지를, 세그먼테이션에서는 세그먼트를 block이라고 불러보자. 

 

만약 새로운 프로세스가 메모리에 반입되어야 할 상황을 가정해보자. 

운영체제는 초기에 수행될 코드와 참조될 데이터가 포함되도록 단지 '하나 혹은 몇개의 블록'만 반입한다. 

프로세스의 코드나 데이터중 메인 메모리에 적재되어있는 부분을 resident set이라고 한다. 

프로세스가 resident set에 포함된 주소를 참조하며 수행하게 되었을 경우에는 이상이 없다.

cpu는 세그먼트테이블이나 페이지테이블을 이용하여 프로세스의 참조 주소가 적재집합에 포함되어 있는지를 판단할 수 있다. 만약 메인메모리에 적재되지 않은 논리주소가 참조될경우, 처리기는 memory fault를 발생시킨다. 

운영체제는 인터럽트당한 프로세스를 블록상태에 두고 제어를 넘겨받는다. 나중에 그 프로세스의 수행을 재개하려면, 해당 논리주소를 포함한 프로세스의 블록을 메인메모리로 적재해야한다. 이를 위해 운영체제는 디스크 io요청을 하게 되며, 그 후 다른 프로세스에게 cpu를 넘겨 디스크 입출력이 진행되는동안 수행할 수 있게 한다. 

요청된 디스크입출력이 끝나면, 입출력 인터럽트가 발생, 이를 통해 제어를 돌려받은 운영체제는 이전에 메모리 접근 오류를 발생시켜 블록되었던 프로세스를 준비상태로 전환시킨다.

 

프로세스가 일부 블록만 적재한 채 수행되기 때문에 System utility가 좋아진다.

장점 1. 일부 블록만 적재하기 때문에 보다 많은 프로세스를 적재할 수 있다. ->처리기의 활용도가 높아진다. 

장점 2. 주기억장치보다 큰 프로세스를 수행할 수 있다. 프로세스를 다 올릴 필요가 없기때문에 오버레이를 프로그래머가 하지 않고 운영체제와 하드웨어가 알아서 하는 페이징과 세그멘테이션을 사용한다. 

프로세스는 메인메모리에서 수행할 수 있기 때문에, 주 기억장치는 real memory라고 하고, 

디스크상에 할당된 훨씬 큰 잠재적 메모리를 virtual memory라고 부른다.