1. 가상기억장치
․ 주기억장치(main storage)의 비용은 비싼 자원으로 여겨져 왔습니다. 따라서 초기에는 주기억장치의 사용을 최적화하기 위해 노력했습니다. 최근에는 주기억장치의 단가가 상당히 내렸음에도 보조기억장치에 비해서는 여전히 비싼 편입니다. 또한 최근의 응용 소프트웨어들은 상당 양의 주기억장치를 필요로 합니다.
1) 가상기억장치
(1) 가상기억장치
․ 컴퓨터의 이용의 효율성을 높이기 위한 노력
단일사용자를 지원하는 실기억장치 시스템으로부터 페이징(paging) 기법과 세그멘테이션(segmentation) 기법의 기술을 조합한 가상기억장치 시스템으로 변천하였다.
(2) 가상기억장치의 개념
․실행중인 프로세스에 의해 참조되는 주소를 주기억장치에서 사용할 수 있는 주소와 분리
․가상주소(virtual address): 실행프로세스가 참조하는 주소
․실주소(real address): 주기억장치에서 사용할 수 있는 주소
2) 블록사상
블록사상의 배경 | ․동적 주소변환(DAT)방법은 가상기억장소 위치가 현재 실기억장치의 어디에 위치하는지를 나타내 주는 주소변환사상(address translation map)을 유지해야 한다. ․만약 이러한 사상이 워드(word)나 바이트(byte) 단위로 수행되게 되면, 즉 V 에 있는 모든 항목에 대해 사상정보를 제공하려면, 사상정보는 실제로 그 프로세스가 필요로 하는 실기억장소보다 더 큰 기억장소를 필요로 할 것이며, 가상기억 장소를 효율적으로 구현하기 위하여 사상정보의 양을 줄이는 방법이 필요하게 된다. ․각각의 모든 주소를 사상할 여유가 없기 때문에 정보를 블록(block)으로 분류하며 시스템은 여러 가상기억장소를 블록이 실기억장치의 어느 곳에 위치하는지 만을 관리하기 위해서는 블록 사상(block mapping)이 필요하게 된다. |
블록의 크기 문제 | ․블록이 커짐에 따라 사상정보를 저장할 실기억장소의 크기가 작아진다. 블록을 크게 하면 사상기법 자체가 필요로 하는 기억장소의 크기는 줄일 수 있으나, 커다란 블록은 주기억장치와 보조기억장치 사이의 이동시간을 길게 하며, 많은 실기억장소를 소모하고, 실기억장치를 공유할 수 있는 프로세스의 수를 제한한다. ․블록의 크기를 모두 동일하게 해야 하는지 다르게 해야하는지에 대한 몇 가지 문제가 있다. 블록의 크기가 동일할 때 그 블록을 페이지(page)라고 부르고, 그와 관련된 가상기억장소 구성을 페이지기법(paging)이라고 한다. ․블록의 크기가 다를 때 그것을 세그먼트(segment)라 하고, 그런 가상 기억장소 구성을 세그먼트기법(segmentation)이라 한다. 어떤 시스템은 이 두 기술을 결합하여 고정된 크기의 페이지들로 이루어진 다양한 크기의 세그먼트를 구현한다. |
블록 사상 시스템의 주소 | ․블록 사상 시스템의 주소는 이차원적(2-dimensional)이다. ․특정 항목을 참조하기 위해 프로그램은 그 항목이 들어 있는 블록과 그 블록의 시작부분으로부터 항목까지의 변위(displacement)를 지정한다. 즉, 가상 주소 V는 참조될 항목이 있는 블록의 번호 b 와 블록의 시작점으로부터의 변위 d로서 구성된 순서쌍(b, d)에 의하여 지정된다. ․가상기억장소의 주소 v=(b, d)로부터 실기억장치의 주소 r로의 변환과정은 아래의 그림과 같다. |
볼록사상 테이블 | ․각각의 프로세스는 실기억장치 내의 시스템에 의해 유지되는 블록 사상 테이블(block map table)을 가지고 있다. 맥교환(context switching) 시간에 처리장치내의 블록 사상 테이블 초기점 레지스터(block map table origin register)라고 하는 특별한 레지스터는 프로세스의 블록 사상 테이블의 실제 주소인 a를 기억한다. ․블록 사상 테이블은 프로세스의 각 블록에 대하여 하나의 항목을 포함하며, 각 항목들은 블록 0, 블록 1과 같이 연속적인 순서로 유지됩니다. 이제 블록 번호 b는 블록 사상 테이블에 있는 블록 b를 위한 항목의 실제주소를 형성하기 위하여 블록 사상 테이블의 시작 주소 a에 더해진다. 이 항목은 블록 b의 시작을 나타내는 실제주소 b를 포함하며, 변위 d를 블록 시작 주소인 b와 더하면 우리가 원하는 실제주소 r=b+d를 얻게 된다. |
2. 가상기억장치의 주소변환 매커니즘
․동적분할 다중 프로그래밍 하에서 가상기억장치의 주소를 변환하는 메커니즘은 페이징 기법, 세그멘테이션 기법, 페이징 세그멘테이션 혼용기법이 있습니다.
1) 페이징 기법
․동적분할 다중 프로그래밍 하에서 고정된 크기의 블록사상을 살펴보겠습니다.
여기서는 순수페이징 기법(pure paging)에 대해 다루겠습니다.
(1) 페이징 기법의 개념
․페이징 기법의 가상주소는 순서쌍(p, d)인데 여기서 p는 가상 기억장치 내에서 참조된 항목이 속해 있는 페이지 번호이며 d는 페이지 p에서의 참조될 항목이 위치하고 있는 곳의 변위이다.
․만일 프로세스의 현재 페이지가 주기억장치에 있다면 그 프로세스는 실행될 수 있다. 페이지는 블록 단위로 보조기억장치로부터 주기억장치로 옮겨져서 페이지 프레임(page frame)이라 불리는 주기억장치의 블록에 위치하게 되며, 각 페이지 프레임은 입력되는 페이지와 같은 크기이다.
․페이징 기법에서의 동적 주소변환은 실행되는 프로세스는 가상기억장치의 주소 v=(p, d)를 참조한다.
․페이지 사상 절차는 페이지 사상 테이블(page map table)에서 페이지 p를 찾아서 페이지 p가 페이지 프레임 p'에 있음을 결정한다. 그러면 실기억장치의 주소는 p'와 d'의 결합으로 형성된다.
(2) 직접사상에 의한 페이지 기법
․실행 프로세스는 가상주소를 v=(p, d)로 참조한다.
① 프로세스가 실행되기 전에 운영체제는 문맥교환시간(context switching time)에 주기억장치 내의 ....페이지 사상 테이블의 주소를 페이지 사상 테이블 초기점 레지스터(page map table origin ....register)에 적재함.
② 페이지 사상 테이블의 시작주소인 b는 페이지 번호 p와 더해져서 페이지 p에 대한 페이지 사상 .... 테이블의 내용을 가리키는 주기억장소의 주소 b+p를 생성함. → 페이지 프레임 p가 가상 페이지 .... p와 대응
③ p'는 변위 d와 결합하여 실제주소 r을 나타냄.
․이 기법은 프로세스의 가상기억장치를 구성하는 모든 페이지에 대한 항목이 페이지 사상 테이블에 포함되기 때문에 직접 사상의 예라고 할 수 있다. 프로세스가 그 가상기억장치에 n개의 페이지를 0에서 페이지 n-1까지에 대한 연속적인 항목들을 포함한다. 테이블의 모든 항목은 테이블의 단일 액세스 (single access)로 직접 위치시키게 되므로 직접사상은 첨자를 통하여 배열의 위치로 접근하는 것과 유사하다.
․변환될 가상주소와 페이지 사상 테이블의 시작주소는 제어 프로세서의 고속 레지스터에 존재하여 이들과 관련된 동작은 단일 명령실행주기 안에 빠르게 실행될 수 있다.
․직접 사상된 페이지 사상 테이블은 매우 클 수도 있으며, 보통 주기억장소에서 다루어진다.
․페이지 사상 테이블의 참조는 하나의 완전한 주기억장치의 주기를 필요로 한다.
주기억장치의 주기가 보통 명령 실행주기를 필요로 하므로 직접 사상 페이지 주소변화의 사용은 컴퓨터 시스템의 속도를 절반으로 떨어뜨린다. 이것은 허용될 수 없으므로 보다 빠른 변환을 성취하기 위해 오늘날의 많은 시스템은 매우 빠른 속도의 캐시 기억장치에서 완전히 직접 사상되는 페이지 사상 테이블을 구현한다. 기억장치의 발달로 인한 캐시 기억장치의 가격의 하락은 이것을 가능하게 했다.
(3) 순수연관사상(associative mapping)을 이용한 동적 주소변환의 과정
․실행 프로그램이 가상주소 v=(p, d)를 참조한다.
- 페이지 p를 찾기 위해 연관기억장치의 모든 내용이 동시에 탐색된다.
- 페이지 p에 대응하는 페이지 프레임 p'를 반환하고 p'는 d와 합쳐져서 실제주소 r을 형성한다.
- 연관사상 테이블로의 화살표는 실제로 사상 테이블의 모든단위항목으로 들어가는 것에 주목해한다.
- p와 일치하는 것을 찾기 위하여 연관기억장치의 모든 단위항목이 동시에 조사된다는 것을 의미한다. 이 때문에 연관기억장치에 비해서 매우 비싸며, 따라서 순수한 연관사상은 보통 사용되지 않는다.
․가상 기억장소와 개념을 편리하게 사용하기 위해서는 동적 주소변환이 빠르게 진행되어야 한다는 문제점에 직면한다.
- 순수한 직접사상방식을 구현하기 위해 캐시 기억장치를 사용하거나 순수한 직접사상방식을 구현하기 위해 연관기억장치를 사용하는 것이 너무 비싸다면, 설계자는 가장 적절한 가격으로 캐시와 연관기억장치의 많은 이점을 제공하는 혼합방식을 선택할 것이다.
연관 / 직접 사상에 의한 페이지 기법의 사용 배경
․컴퓨터 하드웨어의 관점에 있어서 가상기억장치를 효율적으로 구현하기 위한 많은 방안들이 논의되어왔다. 우리는 하드웨어 장치의 자세한 구조보다는 기능적 구조와 상대적인 속도에만 관심을 둔다. 이런 하드웨어의 관점은 특히 하드웨어 설계가 수정되어야 하는 개발환경에서 운영체제 설계자들이 가져야 할 전형적인 관점인 것이다.
․지난 30년간 하드웨어는 소프트웨어보다 더욱 빠른 진보를 해왔다. 그래서 설계자들은 보다 나은 기술이 곧 유통되어질 것이라고 예상하기 때문에 특정 하드웨어 기술에 집착하는 것을 꺼려한다. 그러나 운영체제 설계자는 현존하는 기술로 운영체제를 구현해야 하므로 선택의 여지가 거의 없다.
또한 그들은 하드웨어의 현실성과 경제성을 고려해야 한다. 요즘은 캐시 기억장치와 연관기억장치는 직접 액세스 주기억장치보다 훨씬 비싸다. 이러한 이유로 몇몇 설계자들은 혼합된 페이지 사상방법을 사용하고 있다.
연관 / 직접 사상에 의한 페이지 기법의 주소 변환
․아래 그림은 전체 페이지 사상 테이블의 일부만 수용할 수 있는 크기의 연관기억장치를 사용한 것을 보여주고 있다.
연관 / 직접 사상에 의한 페이지 기법의 동적 주소변환 과정
․최근에 참조된 페이지는 조만간 다시 또 사용되기 쉽다는 사실을 이용하여, 이 사상테이블에는 가장 최근에 참조된 페이지 항목들만 유지한다.
․동적 주소변환과정
이 사상테이블에는 가장 최근에 참조된 페이지 항목들만 유지한다.
① 실행 프로그램은 가상주소 v=(p, d)를 참조한다.
② 주소변환절차는 우선 부분적 연관 페이지 사상테이블은 가상 페이지 p를 찾는 것을 시도한다.
③ p가 그 곳에 있다면, 연관사상 테이블은 가상 페이지 p에 사상하는 프레임 p'를 반환하고, p'는 변위 d와 합쳐져서 가상주소 v=(p,d)에 사상하는 실제주소r을 형성한다.
2) 세그먼테이션 기법
․실기억장소의 세그먼트 기업 시스템에서는 이러한 제한이 제거되며, 프로그램과 데이터는 실기억장소의 분리된 많은 블록을 점유할 수 있다.
(1) 세그멘테이션 기법의 도입
․실기억 장치에 대한 설명에서 동적영역 다중 프로그램이 있어서 기억장소에 프로그램을 위치시키는 것은 최초 적합, 최적접합, 최악적합에 의해 주행되어진다는 것을 알 수 있다.
․아직까지는 실행 프로그램이 실기억장치의 하나의 인접한 기억장소 블록에 고정된다는 제약이 있다.
․실기억장소의 세그먼트 기업 시스템에서는 이러한 제한이 제거되며, 프로그램과 데이터는 실기억장소의 분리된 많은 블록을 점유할 수 있다.
(2) 세그멘테이션 기법의 개념
․블록은 그 크기가 동일할 필요는 없으나 연속된 기억장소로 구성되어야 한다. 그러나 서로 다른 블록이 서로 인접할 필요는 없다.
․가상기억장치 세그먼트 기법 시스템에서 가상기억장소는 참조된 항목이 있는 실제주소의 세그먼트 번호 s와 s내에서의 변위 d의 순서쌍 v=(s, d)로 나타낸다.
․프로세스는 현재의 세그먼트가 주기억 장소에 있을 경우에만 실행할 수 있다.
※ 프로세스가 현재 세그먼트가 주기억 장소에 있을 경우에 실행되는 이유
전체 세그먼트가 하나의 단위로서 보조기억장치에서 주기억장치로 옮겨진다.
세그먼트 내의 모든 위치는 주변장치에 대한 이용도가 크게 개선되었으므로 주기억장소의 인접한 위치에 놓이게 된다. 들어오는 세그먼트는 자신을 수용할 수 있을 만큼 충분히 큰 기억장소의 사용가능한 영역에 놓여진다.
․세그먼테이션 기법의 위치 지정방법은 동적영역 다중 프로그래밍에서 흔히 사용되는 first-fit과 best-fit의 방법과 동일하다.
․세그먼테이션 기법 하에서 동적 주소변환과정은 실행 프로세스가 가상기억장소의 주소 v=(s,d)를 참고한다.
(3) 순수 세그먼테이션 기법의 가상주소 변환
․세그먼테이션 사상기법은 우선 세그먼트 사상 테이블 (segment map table)에서 세그먼트 s를 찾고 세그먼트 s가 실기억장치의 s'위치에서 시작함을 결정한다.
․가상기억주소 v=(s,d)와 사상하는 실기억장치 주소는 s'와 d를 더함으로써 형성한다.
세그먼테이션 기법과 페이징 기법이 가상기억 장치 구조에 제공하는 이점
․세그먼테이션 기법과 페이징 기법은 가상기억장치의 구조에 중요한 이점을 제공합니다. 1960년대 중반에 설계된 시스템을 시초로, 특히 Multics와 IBM의 TSS와 같은 많은 컴퓨터 시스템은 페이지 기법과 세그먼트 기법을 결합해서 설계되었다.
․시스템들은 2개의 가상기억장치 구조의 이점을 제공한다.
* 세그먼트는 보통 그 크기가 페이지의 정수배이며 모든 세그먼트의 페이지가 주기억장소에 한꺼번에 있을 필요가 없다.
* 가상기억장소에서 인접한 페이지들이 실기억 장소에서 연속일 필요가 없다.
* 가상기억장소의 주소 v에 대한 주소지정은 v=(s, p, d)의 세 순서쌍으로 표현되는 3차원이다.
* s는 세그먼트 번호, p는 세그먼트의 페이지 번호, d는 항목이 위치하는 페이지내의 변위이다.
페이징 / 세그먼테이션 혼용기법의 가상주소 변환과정
․페이징/세그먼테이션 혼용기법에서 연관/직접 사상을 혼용하여 가상주소로부터 실주소로의 동적 주소 변환에 대해 생각해 볼 필요가 있다.
* 실행 프로세스는 가상주소 v=(s, p, d)를 참조한다.
* 가장 최근에 참조된 페이지들은 부분적인 연관기억장치에 있다.
* 우선 연관기억장치에서 (s, p)위치를 찾기 위한 탐색이 수행된다.
* (s, p)가 발견되면 세그먼트 s의 페이지 p에 대응하는 주기억장소에 위치하는 페이지 프레임 p'가 변위 d와 합쳐져서 가상주소 v=(s, p, d)에 사상하는 실제주소 r을 형성함으로써 주소변환이 종료된다.
연관 기억장치의 탐색에 희해 만족되어지지 않을 때 일어나는 직접 사상변환
․보통 대부분의 주소변환 요구가 이 연관기억장치 탐색에 의해 만족된다.
․한 요구가 연관기억장치의 탐색에 의해 만족되어지지 않을 때의 직접 사상변환
* 주기억장소의 세그먼트 사상 테이블의 시작주소 b가 세그먼트 번호 s와 더해져서 세그먼트 s에 대한 세그먼트 사상 테이블의 항목주소 b+s를 형성한다.
* 세그먼트 사상 테이블의 항목은 세그먼트 s에 대한 페이지 테이블의 시작주소 s'를 가리킨다.
* 페이지 번호 p가 s'와 더해져서 세그먼트 s의 페이지 p에 대한 페이지 테이블의 항목의 주소 p+s'를 형성합니다. 이 테이블을 p'가 가상페이지 p에 대응하는 페이지 프레임 번호라는 사실을 말해준다.
* 프레임 번호 p'는 변위 d와 합쳐져서 가상주소 v=(s, p, d)에 사상하는 실주소 r을 형성한다.
가상주소 변환과정에서 실패하는 단계에 대한 해결방안
․세그먼트 결함 오류(missing segment fault)
세그먼트 사상 테이블의 탐색 결과 세그먼트 s가 주기억장소에 없다고 판명될 수도 있으며 이 경우 세그먼트 결함 오류(missing segment fault)를 발생하고 운영체제는 보조기억장치의 세그먼트의 위치를 정하고, 그 세그먼트에 대한 페이지 테이블을 생성하고, 적절한 페이지를 주기억장소로 옮기고, 아마도 이 프로세스나 다른 프로세스의 현존하는 페이지를 대체하게 될 것이다.
․페이지 결함 오류(missing page fault)
세그먼트가 주기억장소에 있다 하더라도 페이지 사상 테이블의 참조는 원하는 페이지가 주기억장소에 없다고 지시할 수 있다. 이 경우 페이지 결함 오류 (missing page fault)를 발생하고 운영체제로 제어가 넘어가 보조기억장치의 페이지 위치를 정하고 페이지를 주기억장소로 옮긴다.
․세그먼트 오버플로우 예외(segment overflow exception)
순수한 세그먼테이션 기법과 마찬가지로 가상기억장소의 주소가 세그먼트의 경계를 넘어가면 세그먼트 오버플로우 예외(segment overflow exception)가 발생할 것이다.
․세그먼트 보호 예외(segment protection exception)
보호 비트가 참조된 가상주소에 대해 수행할 작동이 허락되지 않는다고 지시한다면 세그먼트 보호 예외(segment protection exception)가 발생할 것이다.
동적주소변환과정에서 효율적인 작동에 중요한 연관기억 장치
․연관기억장치(혹은 이와 유사한 고속의 캐시 기억장치)는 이러한 동적 주소 변환과정의 효율적인 작동에 매우 중요하다.
․만약 주기억장치에서 보존되는 완전한 사상 테이블과 함께 순수한 직접 사상 방식이 사용된다면 가상 기억장소의 평균적인 참조는 세그먼트 사상테이블을 액세스하기 위한 하나의 기억장치의 주기와 페이지 사상 테이블을 참조하기 위한 두 번째 기억장치 주기, 실기억장소에 원하는 항목을 참조하는 세 번째 기억장치 주기를 필요로 할 것이다.
․항목에 대한 모든 참조는 3개의 기억장치 주기를 포함할 것이며. 그 컴퓨터 시스템은 대략 정상속도의 3분의 1의 속도로 작동하고, 그 정상 시간의 3분의 2는 주소변환에 소모되어질 것이다.
․단지 8˜16개의 연관레지스터만으로 많은 시스템이 제어 프로세서의 완전한 처리속도의 90%이상의 작동속도를 갖는다.
3. 페이지 교체기법
․페이징 시스템에서는 모든 페이지 프레임이 사용되는 것이 일반적이다.
이러한 경우에 운영체제의 기억장치 관리 루틴은 새로 주기억장치에 적재되어야 할 페이지를 위하여 기존의 어느 페이지가 주기억장치로부터 제거되어야 할지를 결정해야 하는데 이러한 기법을 페이지 교체기법(page replacement strategy)이라 한다.
1) 최적화의 원칙
․운영체제의 기억장치 관리 루틴은 새로 주기억장치에 적재되어야 할 페이지를 위하여 기존의 어느 페이지가 주기억장치로부터 제거되어야 할지를 결정하는데 이러한 기법을 페이지 교체기법(page replacement strategy)이라 한다.
※ 최적화 원칙
․최적화 원칙(principle of optimality)은 최적의 성과를 얻기 위해서는 교체되어야 할 페이지가 그 이후로 가장 오랫동안 사용되지 않을 페이지가 교체되어야 함을 의미한다.
․이 기법의 최적성은 증명될 수 있지만 미래를 예측할 수 없기 때문에 이 기법은 사실상 실현 불가능하다. 이와 같은 최적화 교체기법을 OPT 혹은 MIN이라 한다.
․이 기법은 다른 페이지 교체기법이 얼마나 최적성을 갖고 있는지 비교하는데 사용되어진다.
2) 무작위 페이지 교체
․어떤 특별한 기준에 근거를 두지 않는 페이지 교체기법을 생각해보면 간단한 기법은 무작위 페이지 교체(random page replacement)기법이다.
※ 무작위 페이지 교체기법
․주기억장치 내의 모든 페이지들은 교체될 가능성이 모두 균일하다.
․이 기법은 어느 페이지도 교체될 수 있음을 뜻하면 최악의 경우, 바로 뒤에 참조될 페이지도 교체될 수 있다. 이러한 이유 때문에 이 방법은 거의 사용되지 않는다.
3) FIFO 페이지 교체
․FIFO(First-In First-Out) 페이지 교체기법에서는 각 페이지가 주기억 장치에 적재될 때마다 그때의 시간을 기억시킨다.
․한 페이지가 교체될 때에는 주기억장치 내에 가장 오래 있었던 페이지를 교체시킨다.
․이 기법은 주기억장치에 가장 오래 있었던 페이지를 교체시킴으로써 직관적으로 타당한 듯 보이지만 실제로 주기억장치에 가장 오래 있었던 페이지는 앞으로도 계속 사용될 가능성이 높기 때문에 가장 많이 쓰이는 페이지를 교체시킬 가능성이 있다.
․FIFO페이지 교체기법은 또한 간단한 FIFO 큐로서 구현될 수도 있다.
각 페이지가 도착했을 때 큐의 끝부분(tail)에 두고 큐의 앞부분(head)에서 교체할 페이지를 고르게 된다. 이러한 FIFO 기법의 가장 큰 단점은 변칙(anomaly)이 일어난다는 것이다.
4) LRU 페이지 교체기법
․LRU 기법은 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체하는 전략이다.
최근의 상황이 가까운 미래에 대한 좋은 척도라는 국부성 휴어리스틱(locality heuristic)에 의존하는 것이다.
※ LRU 페이지 교체 기법
․최적화 원칙(principle of optimality)은 최적의 성과를 얻기 위해서는 교체되어야 할 페이지가 그 이후로 가장 오랫동안 사용되지 않을 페이지가 교체되어야 함을 의미한다
․이 기법의 최적성은 증명될 수 있지만 미래를 예측할 수 없기 때문에 이 기법은 사실상 실현 불가능하다. 이와 같은 최적화 교체기법을 OPT 혹은 MIN이라 한다.
․이 기법은 다른 페이지 교체기법이 얼마나 최적성을 갖고 있는지 비교하는데 사용되어진다.
※ LRU 페이지 교체기법의 예
LRU 페이지 교체기법에서 볼 때 하나의 프로그램이 여러 페이지로 구성되는 커다란 루프를 가지고 있을 때는 가장 오랫동안 사용되지 않는 페이지가 바로 가장 가까운 장래에 사용되어질 페이지가 된다. 이러한 경우 LRU 페이지를 교체하게 되면 페이지는 즉시 다시 주기억장치로 호출되어야만 한다.
5) LFU 페이지 교체기법
․LRU와 근사한 기법으로 LFU(Least Frequently Used) 페이지 교체기법에서는 각 페이지들이 얼마나 많이 사용되어 졌는지에 착안한다.
※ LFU 페이지 교체 기법
․여기서 참조된 횟수가 가장 적은 페이지가 교체된다. 이 방법도 직관적으로 흥미를 끌지만 종종 교체의 결과가 좋지 않은 수가 있다.
․모든 페이지 교체기법들은 항상 좋지 않은 결정을 내릴 여지를 안고 있다. 그 근본적인 원인은 정확히 미래를 예측할 수 없기 때문이므로 항상 좋은 결정만 내리기를 기대할 수는 없지만 대체로 옳은 결정을 내리는 대신에 시간이 적게 걸리며 오버헤드가 적을수록 바람직하다.
※ LFU 페이지 교체기법의 예
가장 드물게 이용되는 페이지가 가장 최근에 주기억장치로 옮겨진 페이지일 가능성이 있다.
이때의 페이지는 다른 페이지들이 두 번 이상 사용되었음에 반해 한번만 사용되었을 것이다. 따라서 이 경우 LFU 페이지 교체기법은 이 페이지를 교체시키게 되며, 이 페이지는 즉시 주기억장치로 재호출 될 것이다.
6) NUR 페이지 교체기법
․LRU와 근사한 기법으로 LFU(Least Frequently Used) 페이지 교체기법에서는 각 페이지들이 얼마나 많이 사용되어 졌는지에 착안한다.
(1) NUR 페이지 교체 기법
※ NUR 페이지 교체기법의 작동
․하나의 페이지가 교체될 때 먼저 참조된 적이 없는 페이지를 찾게 됩니다.
․만일 그러한 페이지가 없는 경우에는 참조된 적이 있는 페이지를 교체시킵니다.
․만일 어떤 페이지가 참조되지 않았다면 다음으로 그 페이지가 변형되었는지를 검사합니다.
․만일 그 페이지가 변형되지 않았다면 그 페이지를 교체시키는데, 그 이유는 변형된 페이지를 교체시키는 경우 그 페이지를 다시 보조 기억장치에 써야 하는 오버헤드가 따르기 때문입니다.
만일 모든 페이지가 변형되었다면 변형된 페이지들 중에서 하나를 교체시킵니다.
(2) NUR 페이지 교체 기법의 특성
․NUR 페이지 교체기법에는 4가지 그룹 페이지가 있다.
* 제일 앞의 그룹에 속한 페이지들이 먼저 그리고 제일 뒤에 그룹에 속한 페이지들이 마지막으로 교체되어져야 합니다. 같은 그룹 내에서는 무작위로 선택된다.
* 그룹 2는 참조되지 않고 변형된 페이지들임을 나타내므로 실제로 불가능한 상황처럼 보이지만 실제로 이것은 참조 비트를 주기적으로 0으로 만들고 변형 비트는 그대로 둠으로써 생기는 결과이다.
(6) NUR 페이지 교체기법(1/2)
․FIFO 방식에 있어서 분명한 단점은 가장 오랫동안 메모리에 있었던 가장 자주 쓰이던 페이지가 대체될 수도 있다는 것이다.
이러한 가능성은 그들의 호출 비트가 off'인 것들만 대체함으로써 사라질 수 있다.
(3) NUR 페이지 교체 기법의 단점
※ 2차 기회 페이지 교체기법
․FIFO에 대한 한 가지 변형으로 2차 기회(second chance)라는 것이 있는데 이 방법은 가장 오래된 페이지의(리스트의 머리부분) 참조 비트를 조사하여 만약 그 비트가 off'라면 그 페이지는 대체되어지는 것이다.
․‘on'이라면 off'로 만든 다음 FIFO 리스트의 꼬리(tail)로 옮겨 놓아 마치 새로운 페이지가 도착한 것처럼 취급하는 것이다. 그러면 이 페이지는 점점 앞으로 이동할 것이며, 끝(머리)에 이르렀을 때 참조 비트가 off'라면 그 페이지는 새로운 페이지로 대체되어지는 것이다.
․물론 on'이라면 다시 리스트의 꼬리로 놓여지게 되는 것이다. 이것은 근본적으로 한 페이지에게 주기억장치에 남아 있을 수 있는 2차 기회 (second chance)를 주는 것이다. (물론 이 페이지가 리스트의 머리에 이르기 전에 참조가 되었을 경우를 가정한 것이다).
․자주 참조되는 페이지들은 반복적으로 그들의 참조 비트를 on'시키면서 리스트의 앞으로 이동하고 다시 참조 비트를 off'시키면서 리스트의 맨 뒤로 이동하게 된다.
․변형된 페이지는 반드시 대체시키기 전에 보조기억장치로 복사되어야 한다. 그래서 그 페이지들은 참조 비트가 off'되더라도 복사과정이 완전히 끝나기 전에는 잠시 동안은 대체될 수 없는 상태로 남아 있어야 한다.
물론 이 페이지가 대체되기 전에 참조가 된다면 다시 남아 있게 되는 것이다. 그렇게 함으로써 보조기억장치에서 페이지를 다시 가져와야 하는 수고를 덜게 되는 것이다.
※ 클록 페이지 교체기법
․2차 기회 알고리즘의 변형으로 클록 페이지 교체기법 (clock page replacement) 이라는 것이 있는데, 이 방식은 선형 리스트 대신 원형 리스트를 사용하여 페이지를 배열시켜 놓는다.
․리스트의 포인터가 마치 시계 바늘이 돌아가는 것처럼 그 원형 리스트를 돌아가게 되는 것이다.
․한 페이지의 참조 비트 off'라면 포인터는 리스트의 다음 번 요소를 가리키도록 움직이게 된다. 즉, 그 페이지를 FIFO 리스트의 맨 뒤쪽으로 이동시키는 셈이다.
4. 국부성
․국부성이란 프로세스들은 기억장치내의 정보를 균일하게 액세스 하는 것이 아니라 어느 한 순간에 특정부분을 집중적으로 참조한다는 것이다.
1) 국부성의 개념
․국부성(locality)이란 개념은 기억장치 관리기법에 중요한 역할을 한다.
(1) 국부성
․국부성의 개념: 국부성(locality)이란 개념은 기억장치 관리기법에 중요한 역할을 한다.
․국부성의 의미: 프로세스들은 기억장치 내의 정보를 균일하게 액세스하는 것이 아니라 어느 한 순간에 특정부분을 집중적으로 참조한다
(2) 국부성의 사례
․국부성은 시간과 공간에서 공히 나타난다.
시간 국부성(temporal locality)의 예 | 만일 오늘 오후 3시에 날씨가 맑았다면 오후 2시 30분에도 날씨가 맑았을 가능성이 짙으며 오후 3시 30분에도 날씨가 맑을 가능성이 높다. |
공간 국부성(spetial Locality)의 예 | 만일 서울의 날씨가 맑다면 인천의 날씨도 맑을 가능성이 많다. |
․국부성은 운영체제에서 특히 기억장치관리에서 많이 나타난다. 그것은 이론적인 특성이라기보다는 관측된 실험적인 특성이며 항상 그러한 특성이 나타난다고 보장되는 것은 아니지만 매우 자주 나타나는 현상이다.
운영체제의 기억장치에서 국부성의 예 |
페이징 시스템에서 프로세스들은 각각 그들의 페이지 중에서 소수의 몇몇 페이지들을 특히 많이 사용하는 경향이 있으며, 이 몇몇 페이지들은 그 프로세스의 가상주소공간(virtual address space) 내에서 서로 인접해 있는 경향이 많다. 이것은 하나의 프로세스가 새로운 페이지를 참고하지 않음을 의미 하는 것은 아니다. 다만 각 프로세스가 어떤 주어진 기간 동안 그의 전 페이지들 중 특별한 몇 개의 페이지 내에서 실행되는 경향이 있음을 의미한다. 실제로 국부성은 컴퓨터 시스템에서 프로그램과 데이터의 구성을 볼 때 매우 있음직한 성질이다. |
2) 시간 국부성과 공간 국부성
(1) 국부성
․기억장치에 있어서 국부성의 가장 중요한 결과로는 각 프로그램이 많이 참조하는 페이지들이 주기억장치에 있는 한 그 프로그램은 효율적으로 실행될 수 있다는 것이다.
․Denning은 프로그램 동작(program behavior)에 관한 Working Set 이론을 정립했는데, 이것은 국부성에 근거를 두고 있다.
5. 워킹세트(Working Set)
․Working Set이란 가상기억장치 관리기법에서 페이지폴트 비율을 감소시키기 위해 제안된 모델입니다. 어떤 특성을 가지고 있고, 어떻게 작동되는지 살펴보겠습니다.
1) Working Set의 개념
․Working Set이란?
Working Set은 가상기억장치 관리기법에서 페이지 폴트 비율을 감소시키기 위해 Denning에 의해서 제안된 모델로서 페이징 시스템하에서의 프로그램의 동작에 대한 이론을 정립한 것이다.
․Working Set은 하나의 프로세스가 자주 참조하는 페이지들의 집합이다.
․Denning은 하나의 프로그램이 효율적으로 실행되기 위해서는 그의 Working Set가 주기억장치 내에 유지되어야 하며, 그렇지 않은 경우에는 그 프로그램이 보조기억장치로부터 계속 페이지들을 요구하게 되므로 스래싱(thrashing)이라 불리는 과대한 페이징 행동을 하게 된다고 주장했다.
2) Working Set 기억장치 관리 기법
․Working Set 기억장치 관리기법 (Working set storage management policy)은 실행중인 프로그램의 Working Set를 주기억장치에 유지시키는 것을 원칙으로 하는 기억장치 관리기법이다.
․기억장치에 새로운 프로세스를 더 추가시킬 것인가에 대한 결정은 그 프로세스의 Working Set가 주기억장치에 모두 유지될 수 있는가의 여부로 결정되는데, 처음 시작 되는 프로세스인 경우에는 시스템이 그 프로세스의 Working Set의 크기를 미리 알 수 없으므로 종종 어림짐작으로 책정이 된다.
3) 프로세스의 Working Set
․시간 t에서 한 프로세스의 Working Set W(t, w)는 프로세스 시간 간격 t-w부터 t까지 동안에 참조된 페이지들의 집합이다.
․프로세스 시간: 프로세스가 중앙처리장치(CPU)를 점유하고 있는 시간을 의미하며 변수 w는 Working Set Window size라 불리우는데, 이 w의 시간을 의미하며, 이 w의 크기가 Working Set 기억장치 관리기법의 효과적인 운용에 중추적인 역할을 한다.
4) Working Set의 실행
․Working Set는 프로세스가 실행함에 따라 때로는 페이지들이 삭제되기도 하고 추가되기도 하며, 프로세스가 전혀 다른 Working Set로 전이를 할 경우에는 많은 변화가 생긴다.
․따라서 한 프로세스의 초기의 Working Set의 크기나 내용에 대한 가정은 그 후로 프로세스가 진행함에 따라 많은 변화를 겪게 된다. 이러한 점으로 인하여 Working Set 기법 하에서의 기억장치관리는 더욱 복잡해지는 것이다.
6. PFF 페이지 교체기법
․페이지 기법 환경에서 프로세스가 얼마나 잘 실행되고 있는가 하는 척도는 페이지 부재율(page fault rate) 라고 하는데, 이 페이지 부재율을 조정하는 방법중의 하나가 PFF 페이지 교체기법입니다.
1) 페이지 부재율
․페이지 부재율(page fault rate)은 페이지 기법 환경에서 프로세스가 얼마나 잘 실행하는가의 한 척도이다.
․페이지 부재율이 나타나는 극단적인 사례
* 계속적으로 부재가 일어나는 프로세스은 프레임을 너무 적게 가지고 있고 주기억장치 내에 그들의 Working Set를 가질 수 없기 떄문에 스래싱을 할 수도 있다.
* 절대로 부재가 일어나지 않는 프로세스 실제 너무 많은 페이지 프레임을 가지고 있어서 같은 시스템내의 다른 프로세스를 방해할 수도 있다.
․페이지 부재율이 나타날 수 있는 극단적인 경우에는 중간정도의 운영을 갖는 것이 이상적이다.
2) PFF(Page Fault Frequency) 알고리즘
(1) PFF(Page Fault Frequency) 알고리즘 특징
․프로세스의 상주 페이지 세트(resident page set)를 바꾸게 되는데, 상주 페이지 세트란 프로세스가 페이지 부제 때문에 멈추게 되는 빈도에 기초한 페이지 세트 이다.
․두 페이지 부재가 일어난 사이의 시간(interfault time)에 따라 빈도를 계산한다.
(2) PFF 페이지 교체기법의 예
3) PFF 알고리즘의 장점
․PFF는 현재 페이지 부재와 바로 전의 페이지 부재 사이의 시간을 관찰하여 그 시간이 지금까지의 최고 시간보다 크다면 그 사이에 호출되지 않았던 페이지들은 모두 제거하고, 만약 지금까지의 최저시간보다 작다면 들어오려는 페이지는 그 프로세스의 상주 페이지세트에 첨가되게 된다.
※ PFF 알고리즘의 장점
․PFF의 이런 장점은 프로세스의 바뀌어 가는 행동에 따라 유동적으로 레지던트 페이지 세트를 바꿀 수 있다는. 즉, 어떤 프로세스가 좀더 큰 Working Set로 바뀐다면 부재 빈도가 커지게 되어 PFF는 좀더 많이 페이지 프레임을 줄 것이다.
․축소된 Working Set를 만나게 되면 페이지 부재율도 낮아져서 PFF는 레지던트 페이지 세트를 그대로 유지하거나 축소시키게 된다.
․Working Set 페이지 대체기법에 대해 PFF 방식의 이점은 Working Set방식은 매번 기억장치를 참조하고 나서 세트를 고쳐야 하지만 이 방식은페이지 부재가 일어날 때에만 세트를 고친다는 것이다.
7. 페이지 호출기법
․한 프로세스의 페이지들은 요구될 때 주 기억장치로 옮겨지게 된다.
이때 어떠한 페이지들이 호출되는가에 따라 요구 페이지 호출기법(demand page fetch strategy), 예상페이지 호출기법이 있을 수 있다.
1) 요구페이지 호출기법
(1) 요구페이지 호출 기법
․한 프로세스의 페이지들은 요구될 때 주기억장치로 옮겨지는 것이 요구 페이지 호출기법(demand page fetch strategy)이다.
․각 페이지는 실행중인 프로세스에 의하여 명백히 참조될 때에만 보조기억장치에서 주기억장치로 옮겨진다
(2) 요구페이지 호출 기법의 특징
․정지문제(halting problem)같은 계산 가능성 문제의 결과에서 볼 수 있듯이 한 프로그램의 실행순서는 정확히 예측될 수 없기 때문에 그들의 이용을 예상하여 주기억장치에 미리 적재시키는 일은 잘못된 결과를 초래할 수 있다..
․요구 페이지 호출기법에서는 주기억장치에 옮겨진 페이지들이 모두 프로세스에 의해 실제로 참조된 것임을 확신할 수 있다.
․어느 페이지를 주기억장치에 옮길지를 결정하는 데 있어서의 오버헤드를 최소화 시킨다.
예상 페이지 호출기법(anticipatory page fetch strategy)은 실행 시간상 막대한 오버헤드를 초래할 수 있다.
(3) 요구페이지 호출 기법의 문제
․ 프로세스는 아무일도 못하고 대기해야 한다. 이 대기하는 구간마다 이미 기억장치에 할당된 그 프로세스의 페이지들은 유휴상태에 머무는 셈이고 이 프로세스에게 할당된 페이지수가 많을수록 대기하는 낭비되는 기억장치의 희생은 커지기 마련이다.
․아래 그림은 한 프로세스의 기억장치 사용도를 평가하기 위하여 운영체제에서 종종 사용하는 시간-공간 곱(space-time product)의 개념을 보여주고 있다.
․시간-공간 곱은 그림에서 선 아래의 면적에 해당하며 프로세스가 페이지를 기다리는 동안의 이 시간-공간 곱을 줄이는 것은 기억장치 관리에 있어서 중요한 목적 중의 하나이다.
2) 예상페이지 호출기법
(1) 예상 페이지 호출기법
․자원의 상대적인 가치에 따라 그 자원이 얼마나 집중적으로 관리되어져야 하는지가 자원관리에 있어서의 중심적인 문제이다.
․하드웨어의 가격은 급속히 하락하고 있으며, 따라서 기계의 시간은 사람의 시간에 비해 상대적으로 덜 중요하게 되어가고 있다.
․운영체제의 설계자들은 사람들의 컴퓨터로부터 기다리는 시간을 줄이는 데 관심을 가지고 있으며, 예상 페이지 호출기법은 이를 위한 한 가지 기법이다.
․예상 페이지 기법은 때때로 예비 페이징 기법(prepaging)이라 불리기도 한다.
예상 페이지 호출기법에서 운영체제는 프로세스가 필요로 할 페이지들을 예상하여 주기억장치에 여유가 있을 때 이 페이지들을 미리 적재 시킨다. 결정이 옳았다면 그 프로세스의 실행시간은 대단히 줄어든다.
․프로세스가 현재 주기억장치에 있는 페이지들로써 실행되는 동안 시스템은 프로세스가 추후 요구할 때 즉시 사용할 수 있도록 새로운 페이지들을 주기억장치에 적재 시킨다.
(2) 예상 페이지 호출기법의 장점
․예측 결정이 옳았으면 프로세스의 실행시간은 대단히 감소것이다. 따라서 비록 100%의 정확성을 기할 수 없더라도 예상 페이지 기법을 개발할 가치는 있다.
․많은 경우에 정확한 결정이 내려질 수 있습니다. 만일이러한 결정방법이 적은 오버헤드로 구성될 수 있다면 주어진 프로세스의 실행은 다른 실행중인 프로세스에영향을 주지 않고 가속화될 수 있다.
․컴퓨터 하드웨어 가격의 하락으로 옳지 못한 결정의 결과도 그리 심각하지 않게 될 것이다. 예상 페이지 기법으로 주기억장치에 적재 시킬 페이지의 초과량을 수용할 수 있는 정도의 주기억장치를 추가로 설치할 수 도 있다.
3) 페이지 크기
(1) 페이지 기법의 특성
․페이지 기법에서 실기억장치는 일반적으로 고정된 크기의 페이지 프레임들로 분리된다.
- 이러한 페이지 프레임들은 과연 얼마나 커야 하는가?
- 페이지의 크기는 얼마이어야 하는가?
- 한 시스템 내에서 모든 페이지들이 같은 크기이어야 하는가?
- 아니면 다른 크기의 페이지들이 사용되어져야 하는가?
- 만일 다른 크기의 페이지들이 사용되어져야 한다면 각 페이지의 크기는 그 보다 작은 페이지의 크기에 정수배이어야 하는가??
․이런 물음들은 하드웨어와 소프트웨어 그리고 특별한 시스템에 예정된 응용 등에 대한 주의 깊은 이해와 판단 등을 필요로 한다. 여기에는 보편적인 해답도 없으며 그 문제에 대해 모든 컴퓨터 시스템이 같은 페이지 크기를 가져야 할 필요도 없다.
(2) 페이지 크기에 대해 고려해야 할 점
․테이블 단편화(table fagmentation)
페이지 크기가 작을 수록 더 많은 페이지와 페이지 프레임이 존재하게 되고 더 큰 페이지 테이블이 필요하게 될 것이며, 따라서 페이지 테이블이 주기억 장치 내에 존재하는 시스템에서는 더 큰 페이지 테이블 공간을 필요로 하게 된다.
․페이지 크기가 큰 경우에는 참조되는 정보와는 무관한 많은 양의 정보가 함께 주기억 장치에 적재되므로 이러한 면에서는 더 작은 페이지들이 고려될 수 있다.
․디스크로부터 입출력 전송은 많은 시간을 소비하게 되므로 프로그램이 실행되는 동안 페이지 전송의 횟수를 줄이는 것이 바람직하다. 이러한 면에서는 큰 크기의 페이지가 고려될 수 있다.
․주기억장치에서 유지되는 Working Set페이지는 보다 더 집중적으로 참조될 항목을 포함하게 된다.프로그램들은 참조에 있어서 국부성을 가지며 이러한 국부성은 작아지는 경향이 있다. 따라서 작은 크기의 페이지를 사용하는 경우 프로그램은 보다 알찬 Working Set을 가질 수 있게 된다.
정리하기
1. 고정된 크기의 블록은 페이지(page)라고 하고 가변 크기의 블록을 세그먼트(segment)라고 한다. 몇몇 시스템은 고정된 크기의 페이지들의 정수 배의 길이에 해당하는 세그먼트를 사용하여 두 기법을 결합하여 사용한다.
2. 페이징 기법을 사용하는 시스템의 가상주소는 v=(p, d)의 순서쌍으로 나타내며, 여기에서 p는 v를 포함하는 페이지, d는 p의 시작으로부터 v의 변위이며 페이징 기법 하에서의 동적 주소변환은 페이지 번호 p에서 페이지 프레임 p'로의 사상을 포함한다.
3. 세그멘테이션 기법을 사용한 시스템에서의 가상주소는 v=(s, d)의 순서쌍이며, 여기서 s는 v가 있는 세그먼트, d는 s안에 있는 v의 변위이다. 동적 주소변환은 페이지기법 시스템에서 수행되는 직접, 연관, 직접/연관사상과 본질적으로 동일한 형태로 수행될 수 있다.
4. 페이징/세그멘테이션 혼용기법은 가상주소는 v=(s, p, d)의 순서쌍이며 s는 v가 있는 세그먼트, p는 v를 포함하는 s내의 페이지, d는 p내의 v에 대한 변위를 각각 나타낸다.
5. 교체기법(replacement strategy)은 주기억장치가 완전히 사용되고 있을 때 새로이 적재되어야 할 페이지나 세그먼트를 위해 어느 페이지나 세그먼트가 교체되어야 하는지와 관계된다.
① 최적화 원칙(principle of optimality) : 이후로 가장 오랫동안 사용되지 않을 페이지를 교체한다.
② 무작위 교체기법(random) : 교체될 페이지가 무작위로 결정된다.
③ FIFO : 주기억장치내에 가장 오랫동안 있었던 페이지가 교체된다.
④ LRU : 가장 오랫동안 사용되지 않았던(least-recently-used) 페이지가 교체된다.
⑤ LFU : 가장 적게 사용된(least-frequently-used) 페이지를 교체한다.
⑥ NUR : 비용이 적게 들고 LRU의 효율적인 근사기법으로서 근래에 쓰이지 않은 (not-used-recently) 페이지를 교체시킨다.
⑦ 워킹세트 : 프로세스가 최근 참조하는 페이지들의 집합에 속하지 않은 페이지를 교체 시킨다.
⑧ page fault frequently : 프로세스의 페이지 부재율의 변화에 따라 프로세스 레지던트세트의 크기를 결정한다.
6. 국부성(locality)은 실행중인 프로세스에 의해 나타나는 성질로서 프로세스들은 한 실행구간 동안 그들의 페이지들의 일부를 선호하는 경향이 있음을 나타내는 것으로 크게 시간 국부성과 공간 국부성으로 구분된다.
7. 워킹세트(Working Set) 기억장치 관리기법(working set storage management strategy)은 프로세스의 Working Set내의 페이지들, 즉 최근에 참조된 페이지들은 주기억장치 내에 유지시키도록 하여 프로세스가 빠르게 실행할 수 있도록 한다. 새로운 프로세스들은 주기억장치 내에 그들의 워킹세트들이 적재될 수 있는 공간이 있을 때에만 시작될 수 있도록 한다.
8. 다음 사항들이 주어진 시스템에서 최적의 페이지 크기를 결정하는 데 영향을 미친다.
① 페이지 크기가 작으면 페이지 테이블이 커지며 결국 페이지 테이블 단편화(table fragmentation)를 초래하게 된다.
② 페이지 크기가 크면 실제로 참조되지 않는 명령문이나 데이터들이 주기억장치에 불필요하게 수반되어 적재된다.
③ 입출력 전송은 큰 페이지가 더 효율적이다.
④ 국부성은 작아지는 경향이 있다.
⑤ 작은 페이지들은 사용하면 내부 단편화(internal fragmentation)가 감소된다.
'정보과학 > 운영체제특론' 카테고리의 다른 글
네트워크와 분산처리 (1) | 2023.12.09 |
---|---|
파일관리 (3) | 2023.12.05 |
입출력관리와 디스크 스케줄링 (1) | 2023.12.03 |
병행프로세스 (2) | 2023.12.02 |
운영체제의 개요 (1) | 2023.11.28 |