본문 바로가기

Computer Science/Operating System14

[운영체제] 파일시스템이란? 파일이란? 파일은 관련이 있는 일련의 정보들의 집합 논리적인 단위입니다. 파일의 기능으로는 create, read, write, reposition(lseek), delete, open, close 등이 있습니다. Reposition 파일을 읽거나 쓸 때는 해당 파일에서 어디까지 읽거나 썼는지를 가리키는 포인터를 계속 수정하게 되는데, 특정 위치에서부터 읽거나 쓰고 싶을 때는 reposition을 통해 포인터를 옮깁니다. Open 파일을 읽거나 쓰기 위해서는 먼저 open을 해야하는데, 이때는 디스크에서 메모리로 파일의 메타데이터를 올리는 역할을 합니다. 파일의 Metadata 어떤 파일에 저장된 내용이 아닌, 파일을 관리하기 위한 각종 정보입니다. 파일 이름, 유형, 저장된 위치, 파일 사이즈, 접근 .. 2023. 3. 31.
[운영체제] Page Fault를 줄이기 위한 운영체제의 노력 Paging System의 메모리 관리에서 운영체제는 Page Fault를 줄이는 것이 중요합니다. Paging System (feat. Demand Paging) Paging System이란 어떠한 프로그램(프로세스)를 메모리에 올릴 때, 일정 크기의 Page로 나눠서 올리는 것입니다. 그리고 대부분은 Demand paging을 사용하는데, 이는 실제로 필요할 때 필요한 만큼의 Page만 메모리에 올리는 것을 의미합니다. 이렇게 함으로써 얻는 이점은 I/O 감소, 메모리 사용량 감소, 빠른 응답시간, 더 많은 사용자 수용입니다. 이런 방법을 사용하기 위해, 논리주소와 실제 메모리 주소를 mapping시켜놓은 page table에서 'Valid / Invalid bit'를 사용합니다. 이는 해당 페이지가.. 2023. 3. 29.
[운영체제] Memory Management - Segmentation Segmentation이란 Paging 기법은 같은 크기로 page를 나누는 반면, Segmentation 기법은 의미 단위마다 각각 다른 크기로 segment를 나누는 것입니다. 여기서 의미 단위는 code, data, stack 같은 것을 의미합니다. 이 방법을 통해서 얻는 장점은 하나의 segment가 동일한 목적을 가지고 있기 때문에, 프로세스 간에 공유를 하거나 segment별로 접근권한을 다르게 주는 것입니다. paging에서는 하나의 페이지에 여러 다른 기능들이 포함되기 때문에 이런 것을 하기가 어렵죠. 또한 segment의 물리 주소를 나타태는 table의 크기가 작습니다. paging에서는 page의 크기가 작기 때문에 table크기도 엄청 컸습니다. 반면, segment는 보통 5개 정.. 2023. 3. 28.
[운영체제] Memory Management - Paging 물리 메모리를 할당하는 방법 Contiguous allocation 이 방법은 프로세스를 분리하지 않고, 연속적인 공간에 적재하는 방법입니다. 메모리에는 여러 프로세스가 임의의 시간에 올라갔다 내려가기 때문에, 이 방법으로는 효율적으로 메모리를 관리하기 어렵습니다. Noncontiguous allocation 위의 방법과 달리, 하나의 프로세를 적절히 나눠서 물리 메모리에 할당하는 방법입니다. 위의 방법보다 더 복잡하지만 공간을 효율적으로 사용할 수 있으며 현대의 컴퓨터는 이 방법을 사용합니다. 이 방법은 다시 크게 세 가지로 나눠집니다. Paging Segmentation Paged Segmentation Paging Paging은 논리 메모리를 동일한 크기의 여러 공간(page)으로 나누고 이 페이지.. 2023. 2. 16.
[운영체제] Memory Management 1 주소의 세 가지 종류 Symbolic Address 프로그래머가 변수나 함수에 이름을 붙이는 것 Logical Address 소스 코드를 컴파일하면 논리 주소로 바뀜. 프로세스마다 독립적으로 가지는 주소 공간 모두 0번지부터 시작 다른 프로세스의 주소공간을 침범하기 어려워짐. !!CPU가 보는 주소!! Physical Address 메모리에 실제 올라가는 위치 주소 바인딩 논리 주소를 물리 주소로 바꾸는 것이 주소 바인딩입니다. 주소 바인딩을 하는 방법에는 세 가지가 있습니다. Compie time binidng 컴파일시에 고정 값으로 물리 주소를 지정하는 것입니다. 메모리 상황을 고려하지 않기 때문에 상당히 비효율적이며, 메모리에 프로세스 하나올라가는 시스템에 적합합니다. Load time bining.. 2023. 2. 15.
[운영체제] 데드락 (Deadlock) 데드락이란? 여러 프로세스들이 서로가 가진 자원을 기다리며 block된 상태입니다. 기본적으로 프로세스는 필요 자원 중 가능한 자원을 획득한 후, 나머지 자원을 획득할 때까지 기존 자원을 놓지 않고 기다리기 때문에 이러한 문제가 발생할 수 있습니다. 여기서 자원이란 I/O device, CPU와 같은 하드웨어 자원과 semaphore와 같은 소프트웨어 자원을 포함하는 개념입니다. Deadlock 발생의 4가지 조건 Mutual Exclusion 하나의 자원은 한 시점에서 오직 하나의 프로세스만 사용할 수 있고, 동시에 두 개 이상의 프로세스가 사용할 수 없습니다. No Preemption 프로세스는 자원을 스스로 내려놓을 뿐 뻇기지 않습니다. Hold and Wait 프로세스는 필요한 모든 자원을 획득할.. 2023. 2. 14.
[운영체제] Synchonization의 문제점 Deadlock과 Starvation Deadlock 둘 이상의 프로세스가 상대방에 의해 충족시킬 수 있는 event를 무한히 기다리는 현상입니다. 예를 들어, Semaphore S와 Q를 동시에 사용해야하는 프로세스가 두 개가 Pi와 Pj가 있을 때. Pi는 S를 먼저 차지하고, Pj는 Q를 먼저 차지한 상황에서 무한히 누군가가 S/Q를 사용하고 반납하기를 기다릴 수 있습니다. Starvation 프로세스가 suspend된 이후에 이를 빠져나가지 못하는 현상입니다. Bounded-Buffer Problem (Producer-Consumer Problem) 위의 그림처럼, 자원을 생상하는 주체와 소비하는 주체가 나눠져있을 경우, 동시성 문제가 발생할 수 있습니다. 이 문제를 해결하기위해서 세 개의 Sem.. 2023. 2. 13.
[운영체제] 여러 프로세스가 공유 데이터에 동시에 접근하면 어떻게 되나? 여러 프로세스가 공유 데이터에 동시에 접근하면 어떻게 되나? 어떤 데이터를 바꾸는 과정은 크게 두 개의 과정으로 나뉘어집니다. 첫 째는 해당 값을 읽어오는 것이고 둘 째는 새로운 값을 할당하는 것입니다. 만약 0이 할당된 D라는 공유 데이터의 값을 1 증가시키는 A프로세스를 실행하는 도중에, CPU를 뺏겨 같은 D의 값을 1 감소시키는 B프로세스에게 넘어가면 어떻게 될까요? B가 D를 읽는 시점에는 0일 것이고, 0에서 1을 뺀 -1을 다시 D에 저장할 것입니다. 이후 A에게 차례가 돌아와 A의 문맥에서는 여전히 D를 0으로 알고 있고, 1을 더한 1을 D에 저장할 것입니다. 이 경우 B는 완전 무시당하게 됩니다. Race Condition 이렇게 여러 프로세스가 동시에 프로세스에 접근하는 상황을 Rac.. 2023. 2. 12.
[운영체제] CPU Scheduling CPU Scheduling이란 어떤 프로세스에게 얼마만큼 CPU를 줄지 결정하는 것입니다. 만약 CPU를 엄청 오래 쓰는 프로세스에게 CPU를 주고 다 끝날 때까지 기다린다면, 다른 프로세스들은 사용하기 위해 오래 가디려야하기 때문에 비효율적입니다. 따라서, 적절히 CPU를 할당하고 다시 뺏는 스케줄링이 필요합니다. CPU Scheduler: Ready 상태의 프로세스 중에서 어떤 프로세스에 CPU를 줄지 결정합니다. Dispatcher: CPU 제어권을 선택된 프로세스에게 넘깁니다. 이 과정을 Context Switch라고 합니다. Preemptive VS Non-Preemptive CPU를 다 쓸 떄까지 기다리는 것을 Non-Preemptive(비선점형), 강제로 뺴앗은 것을 Preemptive(선점.. 2023. 2. 11.