사실 별거는 아니다.. Segmentation을 먼저 진행한 후, Paging 기법을 통해 Memory를 할당한다. 일반적으로 Paging 기법을 적용했다는 것은 해당 Process를 하나의 Segment로 다루었다는 것이다. Segment Table에는 각 Segment의 Base Address대신 Page Table의 위치가 저장된다. 또한 기존의 Bound값 대신 Page의 개수를 저장한다. ( Segment Table은 MMU 내부에 해당 Table를 가리키는 Register가 존재한다. ) 기본적으로 Virtual Address가 주어지고 그에 따라 위와같은 단계를 거쳐 물리주소를 구할 수 있다. Paged Segmentation의 장/단점. - 기존의 Paging 기법만 사용했을 때보다 Pag..
Segmentation 기법. 프로그래머가 생각하는대로 메모리를 구분지어주는 메모리 관리기법이다. 사용자 관점에서 Stack, Data, Symbol Table 등과 같은 커다란 조각으로 논리주소를 분할한다. 각각 Segmentation에는 번호가 System에 의해서 매겨진다. 따라서 논리주소는 으로 구성된다. 그리고 Segmentation Table에 의해서 해당 논리주소는 물리주소로 변환된다. 결국 목적은 연속된 논리주소를 연속되지 않는 물리주소에 할당시키기 위함이다 !!! Segmentation 기법이 없다면...? - 두 User Process가 동일한 Memory 영역을 공유하기가 힘들다. - 하나의 Process에서 특정 영역에 따른 권한부여를 할 수 없다. Segmentation의 크기가 ..
프로그램을 실행시켜 Process를 만드는 과정에서 반드시 해당 Process는 Memory에 위치해야한다. 가상메모리 기법이 적용되었다면 전체가 아닐 수 있지만, 적용되지 않았다고 하면 해당 Process의 전체는 항상 Memory에 위치해야 정상적으로 Process를 진행할 수 있다. (Very Simple Version) - Memory를 모두 동일한 크기로 분할한다. - 그리고 분할된 조각당 하나의 Process를 할당한다. - 지금은 절대 사용할 수 없는 기법인듯.. ( 프로그램의 크기도 커지고... 일정하지도 않고... 단편화도 심할듯 ) (MUT - 가변분할) - OS가 Memory의 사용된 영역과 미사용된 영역을 파악하기 위한 Table을 구성한다. ( OverHead... ) - Proc..
약간의 순서가 잘못 되었지만 가상메모리에 대한 개념이 없을 때라고 가정한 내용이다. Swapping이란 ? Process를 실행중 임시로 예비저장장치인 Disk로 Swap-out 했다가 다시 Memory로 Swap-in할 수 있도록 지원하는 기술이다. 이를 통해 다중 프로그래밍의 정도를 증가시킬 수 있다. 1) 이 예비저장장치는 User Memory Image를 저장할 수 있을만큼 커야한다. 2) 시스템은 Process Ready Queue가 있어야한다. Swapping의 진행순서는 아래와 같다. CPU는 디스패처를 통해 Ready Queue에 있는 다음 Process를 메모리에 있는지 확인한다. 없으면 Disk에서 불러와야한다. 불러오려는데 메모리에 자리가 없다면 현재 메모리에 올라온 Process를 ..
페이지 교체는 Demand Paging 기법에서의 기본이다. 가상메모리 기법을 사용하면 다중 프로그래밍의 정도를 높여서 프로세스의 수를 늘릴 수 있다. But, 갑자기 프로세스들의 페이지를 모두 필요로한다면, 메모리 과할당이 발생할 수 있다. Page-Fault가 발생하고 Page를 Disk에서 Memory로 가져오기 위해서 Free Frame을 찾는데 없을경우? 1) 해당 프로세스를 강제종료한다. (사용자에게 Pageing System을 들키는 꼴이다 !!) 2) 프로세스 하나를 Swap-out해 Free Frame을 확보한다. (비효율적 ...) 3) 페이지 교체를 통해 사용중이지 않은 페이지와 교체한다. (Page Replacement) Demand Paging System에서 가장 중요한 2가지는..
다중 프로그래밍을 실현하기 위해 메모리에 여러 개의 프로세스들이 동시에 올라와 있어야한다. 그러나, 실제 프로그램의 크기가 컴퓨터에서 사용하는 메모리의 크기보다 크다면 어떻게 될까 ? 생각의 전환 프로그램을 실행하는데 얼마나 많은 메모리가 필요한가 ? ↓ 프로그램을 실행하는데 필요한 최소메모리는 얼마인가 ? ( 프로그램에서 메모리 접근은 순차적이고 지역화되어있어서 훨씬 적은 메모리로도 충분하다. ) 가상메모리란 ? 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법이다. 이렇게 함으로써 프로그램이 물리메모리의 크기보다 커져도 된다. 물리메모리로부터 사용자 관점의 논리메모리를 분리시켜 메인 메모리를 균일한 크기의 저장공간으로 구성된 엄청나게 큰 배열로 추상화 시켜준다. 따라서 프로그..