OS

1. File and File System(1) File 파일이라고 하면, 흔히 하드디스크에다 저장하는 단위를 말합니다. 메모리 시스템에 대해 메모리는 주소를 통해 접근했다면, 파일은 이름을 통해 접근하는 단위입니다.   그래서 파일의 정의를 보면, A named collection of related information으로 쉽게 말해 관련된 정보를 이름을 가지고 저장하는 것을 말합니다.  (운영체제에서는 특히 리눅스에서는 장치들도 관리하기 위해서 파일이라는 이름을 사용해 관리하는데 일반적으로 생각하는 데이터를 저장하는 목적이 아닌, 다양한 저장장치들을 운영체제는 다른 파일로 관리합니다. 이런 것은 Device Special File이라고 부르는데 일반적으로 생각하는 파일과는 다른 개념입니다.)  Fi..
지난 포스팅에 이어, 이번 포스팅에서는 페이지 교체(Page Replacement)에 대해 알아보겠습니다.  1. 페이지 교체 비어있는 페이지가 없는 경우에 어떤 페이지를 쫓아낸 후, 해당 메모리에 페이지를 올려야 합니다. 이를 페이지 교체라고 하며, 운영체제가 관리합니다. 어떤 페이지를 빼앗아올지 결정해야 하는데, 이때 사용하는 알고리즘을 Replacement Algorithm이라고 합니다. 지난 포스팅에서 언급했던 Effective Access Time을 보시면 page fault가 일어났을 때 오버헤드가 큰 것을 볼 수 있었습니다. 그래서 이 알고리즘은 가능하면 Page Fault가 일어나는 것이 아닌, 메모리에서 직접 처리할 수 있도록 하는 것이 목표입니다.   아래는 페이지 교체의 과정을 도식화..
이번 포스팅에서는 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 기법은 프로그램을 구성하는 논리적 메모리(가상 ..
이번 포스팅부터는 물리적인 메모리를 어떻게 관리할 것인가에 대해 살펴보겠습니다. 물리적 메모리는 일반적으로 두 영역으로 나뉘어 사용됩니다.낮은 주소 영역에는 운영체제 커널이 항상 상주해있고, 높은 주소 영역에는 사용자 프로그램이 있습니다.   사용자 프로그램이 올라간 영역을 관리하는 방법은 크게 두 가지로 나누어 볼 수 있습니다.  첫 번째는 연속 할당(Contiguous allocation)으로 프로그램이 메모리에 올라갈 때 통째로 메모리에 올라가는 방식입니다. 즉 각각의 프로세스가 메모리의 연속적인 공간에 적재되는 것입니다.  두 번째는 불연속 할당(Noncontiguous allocation)으로 프로그램을 구성하는 주소 공간을 같은 크기의 페이지 단위로 쪼개서 페이지 단위로 메모리에 올리는 방식입..
1. 동적 로딩(Dynamic loading) 프로그램을 메모리에 동적으로 올린다는 것은 프로그램 전체를 메모리에 미리 다 올리는 것이 아니라, 필요할 때마다 해당하는 루틴을 메모리에 올리는 것을 말합니다.  프로그램이 실행될 때 프로그램 전체가 균일하게 사용되는 것이 아니라, 자주 사용되는 부분은 한정적이고, 오류 처리 루틴과 같이 가끔씩 사용되는 많은 양의 코드가 있습니다. 그래서 프로그램이 실행될 때마다 이것을 전부 메모리에 올리는 것은 비효율적이기 때문에, 미리 올려놓는 것이 아닌 필요할 때마다 메모리에 올리는 방식을 동적 로딩이라고 합니다.    여기서 주의해야할 개념이 한 가지 있습니다. 이후에 다룰 Paging 기법인데, Paging은 물리적인 메모리를 고정 크기의 페이지로 나누어 프로그램 ..
동구름이
'OS' 태그의 글 목록 (2 Page)