CS/운영체제

지난 포스팅에서 가상 메모리 시스템에서 사용되는 Replacement 알고리즘에 대해 알아보았습니다.  이번 포스팅에서는 Replacement 알고리즘이 가상 메모리가 아닌 다양한 Caching 환경(cache memory, buffer caching, Web caching 등)에서 쓰이는 것을 살펴보겠습니다. 다양한 Caching 환경 Caching이란 한정된 빠른 공간(Cache)에 요청된 데이터를 저장해 두었다가, 다음에 똑같은 요청이 왔을 때 느린 저장 장치까지 가지 않고 Cache로부터 직접 서비스하는 방식입니다.  다양한 Caching 환경들을 살펴보겠습니다.  (1) Paging System 지난 포스팅까지 살펴본 개념입니다. Paging System에서는 한정된 빠른 공간이 메인 메모리이고..
지난 포스팅에 이어, 이번 포스팅에서는 페이지 교체(Page Replacement)에 대해 알아보겠습니다.  1. 페이지 교체 비어있는 페이지가 없는 경우에 어떤 페이지를 쫓아낸 후, 해당 메모리에 페이지를 올려야 합니다. 이를 페이지 교체라고 하며, 운영체제가 관리합니다. 어떤 페이지를 빼앗아올지 결정해야 하는데, 이때 사용하는 알고리즘을 Replacement Algorithm이라고 합니다. 지난 포스팅에서 언급했던 Effective Access Time을 보시면 page fault가 일어났을 때 오버헤드가 큰 것을 볼 수 있었습니다. 그래서 이 알고리즘은 가능하면 Page Fault가 일어나는 것이 아닌, 메모리에서 직접 처리할 수 있도록 하는 것이 목표입니다.   아래는 페이지 교체의 과정을 도식화..
이번 포스팅에서는 가상 메모리에 대해 살펴보겠습니다. 이전 포스팅까지 다루었던 물리적인 메모리의 주소 변환은 운영체제가 관여하지 않지만, 가상 메모리에서의 주소 변환은 전적으로 운영체제가 관리합니다.  앞으로 살펴볼 가상 메모리 챕터에서는 앞의 메모리 관리 기법 중에 페이징 기법을 사용하는 것으로 가정합니다. 실제로 대부분의 시스템은 페이징 기법을 사용합니다.  우선, 몇 가지 개념을 살펴보겠습니다. 1. Demand Paging Demand Paging은 프로그램이 실행될 때, 프로세스를 구성하는 주소 공간을 전부 물리적 메모리에 올리는 것이 아닌 Page 요청이 있을 때 메모리에 올리는 것입니다.  좋은 소프트웨어일수록 방어적으로 코드를 작성하기 때문에, 프로그램을 구성하는 코드 중 실제로 자주 사용..
1. Segmentation 기법 Paging 기법이 프로그램의 주소 공간을 같은 크기의 Page 단위로 쪼갠 것이라면, Segmentation 기법은 크기를 기준으로 자르는 것이 아닌 의미 있는 단위로 자르는 것을 말합니다.  프로그램이 의미 있는 단위인 Segment로 구성되고, 일반적으로는 하나 씩의 세그먼트가 code, data, stack으로 구성됩니다.   (1) Segmentation ArchitectureSegmentation에서의 주소 변환은 페이징 기법과 비슷한 측면이 있습니다.   우선 논리적 주소를 Segment-number와 segment table안에서 얼마만큼 떨어져있는지 나타내는 Offset으로 구성합니다. 각 세그먼트 별로 서로 다른 물리적 메모리 주소에 올라갈 수 있기에 ..
이번 포스팅에서는 Page table에 대해 좀 더 구체적으로 살펴보겠습니다. 1. Memory Protection 이전 포스팅에서 Page Table에는 Entry와 물리적 주소 정보로 구성된다고 했습니다. 그런데 이 두 가지뿐 아니라 Valid-Invalid bit와 Protection bit이라는 부가적인 bit가 페이지 테이블의 Entry마다 존재합니다. (1) Valid - Invalid Bit in a Page Table  Valid-Invalid bit은 정말 엔트리가 사용되는지 여부를 나타내기 위한 것입니다. 테이블이라는 자료 구조상 인덱스로 접근하기 때문에 프로그램에 주소 공간이 가질 수 있는 최대 크기만큼 페이지 테이블 Entry가 있어야 합니다.  위 그림에서는 논리적 메모리가 Pa..
이전 포스팅에서 연속 할당에 대해 살펴보았습니다. 연속 할당 방법은 프로그램이 메모리에 올라갈 때 통째로 메모리에 올라가는 방식입니다. 각각의 프로세스가 메모리의 연속적인 공간에 적재됩니다.   반면 불연속 할당은 프로그램을 구성하는 주소 공간을 같은 크기의 단위(페이지)로 잘개 쪼개서 페이지 단위로 메모리에 올리는 방식입니다. 즉 하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있습니다.  불연속 할당에는 Paging 기법과 Segmentation기법, Page Segmentation기법 등이 있습니다.    이번 포스팅에서는 불연속 할당의 Paging 기법에 대해 살펴보겠습니다.   1. Paging (1) Paging 기법이란? Paging 기법은 프로그램을 구성하는 논리적 메모리(가상 ..
동구름이
'CS/운영체제' 카테고리의 글 목록 (3 Page)