전체 글

전체 글

    운영 체제 (Operating System) - Memory Management (2)

    1. Page Replacement 이전 포스터에서 Demaind Paging을 다뤘는데, 필요할 때 VM을 Secondary storage에서 PM으로 로드하는 방식을 이용한다고 하였다. 하지만 User process가 사용하는 VM의 Page수보다 PM의 Frame 수가 적기 때문에 이미 할당된 PM의 Frame을 요구된 Page로 교체해줄 필요성이 생겼다. 이것이 Page replacement이다. Page replacement는 PM에 위치한 Page를 Disk에 저장하고 요구된 Page가 해당 Frame을 할당 받도록 하는 방법이다. 이는 다음과 같은 순서로 진행된다. 디스크에서 요구된 Page의 위치를 찾는다 -> 물리 Memory에서 Free frame을 찾는다. (Free frame이 있다..

    운영 체제 (Operating System) - Memory Management (1)

    CPU의 활용률을 극대화 하며, 사용자에게 빠른 응답을 제공해야 하기 때문에(여러 프로세스를 동시에 실행가능하게 된 Multi-programming때 부터 특히) 한정된 Memory의 관리에 대한 필요성이 대두되었다. 1. 주소 주소 공간(Address space)는 Process에서 참조할 수 있는 주소들의 범위로, Process와 1:1로 매핑된다. 이 주소 공간의 크기는 Address Bus(HW간의 Address를 주고받는 통로)의 크기에 의해 결정되는데, 가령 이 크기가 32bit라면 0~(2^32)-1의 범위를 가질 것이다. 주소는 실제 물리 주소(PM)와 프로세스 관점의 가상 주소(VM)로 나뉘게 된다. CPU관점의 주소는 물리 주소도, 가상 주소도 될 수 있는데 VM이 PM과 어떻게 매핑되..

    운영 체제 (Operating System) - 동기화 (2)

    저번 시간에는 어떻게 동기화를 어떻게 얻을 수 있는지에 대해서 알아보았다. 이번 시간에는 동기화에 어떤 문제들이 있고, 어떻게 해결했는지에 대해서 알아보자. 이번에 알아볼 동기화 고전 문제는 1)Bounded-buffer problem(Consumer produce problem), 2)Readers and writers problem, 3)Dining philosophers problem이다. 1. Bounded-buffer problem(Consumer produce problem) 말그대로 Bounded-buffer(유한 크기의 버퍼)에서 발생할 수 있는 동기화 문제이다. 그 Bounded buffer에 여러 생산자와 여러 소비자가 동시에 접근하게 되면서 생기는 동기화 문제를 다룬다. 문제 설명에 ..

    운영 체제 (Operating System) - 9. 동기화 (1)

    1. Data Consistency 이번 강의는 Data Consistency(데이터 일관성)를 해치는 동시 접근 문제에 대해서 알아보자. 데이터 일관성을 유지하기 위해서 서로 협력하는 프로세스들이 순차적으로 수행하게 만드는 동기화 기법이 필요하다. 이를 Process synchronization이라고 표현한다. 그렇다면 Data consistency라는게 어떤 상황에서 발생할까? Shared memory를 사용하는 A와 B가 있다고 가정하자. 다음은 그 프로세스의 코드이다. 얼핏 보기에는 어떤 문장이 먼저 실행되든지 한 문장씩 실행되면 되므로 Data consistency를 해치지 않을 것 처럼 보인다. 하지만 이를 어셈블리로 분해해서 레지스터까지 고려한다면 이야기는 달라진다. CPU는 계산을 위해서 ..

    운영 체제 (Operating System) - Thread

    1. Thread의 정의 이전 강의에서 보았듯이, Process는 Scheduling 단위인 Execution unit과 자원의 보호인 Protection domain의 추상화로, Program을 실행한 개념이다. 그런데 프로세스에 실행 흐름이 다수 개라면 이 개념만으로 표현할 수 있을까? 그래서 하나의 실행 흐름(실행 혹은 스케줄링 단위, Execution unit)인 Thread를 도입하였다. Thread는 프로세스 내의 실행 흐름으로 프로세스보다 작으며 동일 프로세스 내의 Thread간에는 Protection domain이 존재하지 않는다(Data, Code, Heap영역을 공유한다). Thread를 여러 개로 표현하여 다수의 실행 흐름을 구현하면 병렬적으로 태스크를 실행할 수 있기 때문에 병렬적으..

    운영 체제 (Operating System) - IPC

    1. IPC의 정의 및 필요성 IPC란 InterProcess Communication으로, Process 들 간에 데이터 및 정보를 주고 받기 위한 메카니즘이다. 각 프로세스의 독립된 영역 외의 영역과 커뮤니케이션 하는 것이기 때문에 System call과 같이 Kernel이 제공하는 도구를 통해서 행해진다. 이제부터 IPC의 두가지 모델에 대해서 살펴보고, 각 모델의 예시에 대해서 자세히 알아보자. 2. IPC의 두가지 모델 (Shared memory, Message passing)과 구현 2-1. 공유 메모리 방식 (Shared Memory) 첫번째 방식은 공유 메모리 방식이다. 프로세스의 특정 메모리 영역을 서로 공유하여 그 영역에 읽고 씀으로써 서로 다른 프로세스가 통신하는 방식이다. 이 공유메..