Q1 : 요구 페이징 기법에 대해, 왜 이 기법이 발생하기 되었는지를 포함하고 요구의 의미를 담아, 요구 페이징을 3줄로 정의하라.
A1 : 설치된 물리 메모리보다 큰 프로세스를 실행시키거나 여러 프로세스들을 합친 크기가 설치된 물리 메모리보다 클때 이를 실행시키기 위한 방법. 프로세스의 모든 페이지를 메모리에 올려 놓지 않고 해당 페이지가 필요할 때 물리메모리로 적재 하고 필요하지 않을때에는 하드디스크의 스왑영역에 저장.
Q2 : dirty page란 어떤 페이지를 뜻하는가? 어떻게 구분하는가?
A2 : 페이지가 프레임에 적재된 이후 수정된 페이지를 스왑아웃 할때 스왑영역에 저장. modified/dirty bit가 1이면 dirty page
Q3 : 페이지 폴트(page fault)는 언제 발생하는가? 발생할 때 페이지 폴트 핸들러(커널)가 새로운 페이지를 가지고 오는 전체 과정을 그림
으로 그리고 자세히 설명하라.
A3 : CPU가 액세스 하려는 페이지가 물리 메모리에 없을 때 발생.
Q4 : 쓰기 시 복사(copy on write)는 어떤 목적을 위해 제안된 기법인가? 쓰기시 복사 과정을 말로 간단히 설명하라.
A4 : 부모프로세스의 fork() 시스템 호출로 자식 프로세스를 생성할 때 부모 프로세스의 모든 페이지를 완전히 복사 한 후 exec() 호출로 곧 바로 다른 파일을 실행하면 시간과 메모리가 낭비되는것을 막기 위해 제안된 기법. fork()호출시 부모 프로세스의 페이지 테이블을 복사하고 부모프로세스와 자식 프로세스가 메모리 프레임을 완전공유한 뒤 페이지 항목에 쓰기시 복사를 표시. 두 프로세스 중 누군가 페이지를 수정할 때 새로운 프레임을 할당받아 공유하고 있는 부모 프레임을 복사한 뒤 페이지를 수정하는 방법.
Q5 : 커널이 적재된 메모리 프레임도 스왑 아웃되는가? 이유와 함께 설명하라.
A5 : 스왑아웃되지 않는다. 커널 코드와 데이터는 항상 물리 메모리에 있어야 하므로 절대 스와핑 시켜서는 안된다. 만약 인터럽트가 발생하였을때 인터럽트 해늘러가 담긴 페이지가 스왑아웃되어 하드 디스크에 존재한다면 인터럽트가 발생하였을때 인터럽트 핸들러가 실행될 수 없거나 실행하는데 시간이 오래 걸리게 될 것이다.
Q6 : 스래싱(thrashing)을 정의하고, 스래싱이 발생하는 원인을 설명하고, 스래싱의 해결책을 제시하라.
A6 : 페이지 폴트가 계속 발생하여 메모리 프레임에 페이지가 반복적으로 교체되고 입출력이 심각하게 증가하는 현상
원인 1. 메모리에 비해 너무 많은 프로세스가 실행되어 프로세스 당 할당되는 프레임 개수가 적을 때. 프로세스가 필요한 충분한 페이지가 적재되지 못하였기 때문. 2. 잘못된 메모리 할당 / 페이지 교체 알고리즘. 3. 기본적으로 물리 메모리 크기가 작을 때. 4. 우연히도 특정 시간에 너무 많은 프로세스 실행
해결 1. 다중 프로그래밍 정도 줄이기. 2. 메모리 늘리기. 3. 하드디스크 대신 빠른 SSD사용
Q7 : 스레싱이 발생하고 있는지 어떤 지표(CPU 활용률 등)의 변화로 알 수 있는가?
A7 : CPU활용률이 급감하고 I/O비율이 급상승 할 때 스래싱이 발생했다는 것을 알 수 있다.
Q8 : 프로그램의 실행 초기에 페이지 폴트가 계속 발생할 것이다. 이 페이지 폴트의 발생과 작업 집합과의 관계는 무엇인가?
A8 : 프로그램이 처음 실행되면 내가 필요한 페이지를 적재하기 위해 페이지 폴트가 발생하는데 일정 이상 적재하고 나면 참조의 지역성으로 인해 작업집합을 형성한다. 즉 참조의 지역성으로 인해 페이지 폴트가 발생하는 것은 작업집합이 형성되는 과정이다.
Q9 : 스래싱, 페이지 폴트, 작업 집합의 3 단어를 엮어 하나의 의미 있는 문장을 만들어보라.
A9 : 페이지 폴트가 발생하여 작업집합을 형성하기 전에 물리 메모리가 부족하여 작업집합을 형성하지 못하게 되면 스래싱이 발생한다.
Q10 : 프로세스가 페이지를 적재하기 위해 메모리 프레임을 요청할 때, 메모리 프레임을 할당하는 전략은 시스템의 성능을 결정하는 중요한 변수이다. 이유가 무엇인가?
A10 : 메모리 프레임을 어떻게 할당하느냐에 따라 페이지 폴트와 스래싱을 예방할 수 있기 때문이다
Q11 : 작업 집합과 운영체제의 프레임 할당 정책과는 어떤 관계가 있는지, 스래싱과 관련하여 설명 해보라.
A11 : 프로세스에게 작업집합에 포함된 페이지들을 적재할 충분한 메모리 프레임을 할당해주면 작업집합을 형성하여 페이지폴트가 줄어들지만 그렇지 않는다면 페이지 폴트가 계속 늘어나 스래싱이 발생한다. 작업집합의 이동으로 프로세스의 작업집합 크기를 정확히 알기 어렵기 때문에 운영체제의 프레임 할당 정책에 따라 스래싱을 예방할 수 있다.
Q12 : 복합 문제 2을 풀어라.
응용프로그램은 컴파일 과정에서 코드와 데이터로 분리되어 실행 파일이 구성된다. 아래는 응용 프로그램을 구성하는 여러 페이지 중에서 일부이다.
(1) main() 함수의 for문이 실행되는 동안 형성되는 작업 집합을 페이지 순서대로 빈 칸 없이 적 어라.
A:
(2) 한번 적재된 페이지는 스왑-아웃되지 않는다고 가정할 때, 다음 중 페이지 폴트가 발생하지 않는 경우는?
① 함수 g() 호출
② 함수 f() 호출
③ 함수 f()의 for 문에서 변수 j 액세스
④ 함수 g()의 변수 y 액세스
A: 3번
13. 복합문제 3번을 풀어라.
다음은 프로세스에게 3개의 메모리 프레임이 할당된 상태에서 페이지 1, 2, 3이 순서대로 참조 되어 프레임에 들어 있는 모습을 보여준다. 그 후 프로세스가 실행되는 동안 페이지들은 다음 순 서대로 참조된다고 할 때 다음 물음에 답하라.
최적 교체(Optimal Replacement), FIFO, LRU의 각 알고리즘을 적용할 경우 3개의 프레임에 적 재되는 페이지들을 표시하고 몇 번의 페이지 폴트가 발생하는지 적어라