[OS] File System(2) - Implementation
2023. 5. 18. 00:40
CS/Operating System
File System은 Interface와 Implementation으로 나뉠 수 있다. 저번 포스팅에선 User와 File System 간의 상호작용을 위한 "Interface"를 다뤘다면, 이번 포스팅에선 실제 내부적으로 어떻게 구현되는지 "Implementation"에서 다뤄볼 것이다. Main Memory와 Disk간의 데이터 교환 단위는 "Block"인데, File System은 Disk에서 "Sequence of Block"으로 표현된다. 각 "Block"은 하나 이상의 Sector로 구성된다. Disk에는 MetaData와 File Data가 저장되어야 한다. Unix에선 inode(MetaData)를 위한 공간과 File Data를 위한 공간이 따로 할당되어 있다. inode의 경우 사이즈..
[OS] File System(1) - Interface
2023. 5. 17. 15:57
CS/Operating System
Disk의 기본 단위는 Sector이다. 이러한 Sector들을 묶어서 논리적으로 독립적인 Disk를 만들 수 있었다. 이를 Partition이라 부르며, 각 Partition은 Logical Formatting 단계를 거쳐 File System을 설치하거나 Swap-Space로 활용할 수 있다. "File System"는 SSD, Disk 등과 같은 각 저장장치에 설치되어 File을 저장하고 관리하며, 검색할 수 있는 등의 기능을 제공하는 SW이다. File System은 User 관점 혹은 저장장치 관점에 따라 2가지로 나뉠 수 있다. "File System Interface"는 File System과 사용자 간의 상호작용을 위한 추상화 계층이다. 예를 들어, 우리는 File의 실제 어떻게 저장되어 ..
[OS] I/O Systems
2023. 5. 16. 03:05
CS/Operating System
PC System에는 다양한 I/O Device가 존재한다. 예를 들어 우리는 마우스를 사용하기 위해 본체에 마우스를 연결한다. 이렇게 연결된 마우스는 Device Controller에 의해 CPU와 상호작용 할 수 있게 된다. Device Controller에는 Data를 Read & Write를 할 수 있는 "Data Register"를 가지고 있다. 마우스에서 클릭이 이루어지고, 우클릭을 하였는지 좌클릭을 하였는지 CPU에게 정보를 전달해 줄 필요가 있다. 또한, I/O Device에서 특정하게 수행해야 할 Instruction이 있다면, CPU는 Device Controller의 Regsiter에 Instruction들을 저장한다. 추가적으로 Device Controller는 I/O Device의..
[OS] Mass-Storage Structure
2023. 5. 15. 00:02
CS/Operating System
Main Memory는 휘발성이기 때문에, 영구적으로 데이터를 저장할 때는 비휘발성인 Disk에 저장하여야 한다. Hard Disk Hard Disk는 자기 패턴을 이용해 데이터를 읽고 쓴다. Hard Disk는 다음과 같이 구성 된다. Head : 데이터를 읽고 쓰는 역할을 담당한다. Disk Arm : Head를 데이터가 있는 곳으로 움직인다. Platter : 위 아래 Surface에 자기적 성질을 통해 데이터를 기록한다. Spindle : Platter를 회전 시킨다. Track : Platter에서 회전축을 중심으로 동심원이다. 하나의 Platter에 여러개 존재할 수도 있다. Cylinder : Platter가 여러 장일 때, Head가 동시에 접근하는 Track들의 집합이다. Sector :..
[OS] Virtual Memory
2023. 5. 13. 20:19
CS/Operating System
"Virtual Memory"란 Process전체가 Memory에 할당되지 않아도 실행시키도록 하는 메모리 관리 기법 중 하나이다. 즉 이를 통해, Process는 Memory Space보다 더 큰 가상 주소 공간을 할당할 수 있게 된다. 저번 포스팅에서 Physical Address와 Logical Address의 차이점을 비교하였다. "Logical Address"는 CPU 입장에서의 주소이다. Contiguous Allocation에선, Process의 시작위치를 0으로 하는 상대 주소와 (Load Time Binding, Run Time Binding) 실제 Main Memory에서의 주소인 절대 주소가 (Compile Time Binding) Logical Address가 될수 있다. 하지만, ..
[OS] Main Memory(2) - Memory Allocation
2023. 5. 11. 01:17
CS/Operating System
Process를 Memory에 할당하는 방식은 Contiguous Allocation과 Non-Contiguous Allocation방식으로 나눌 수 있다. Contiguous Allocation "Contiguous Allocation"이란, Process를 Memory의 한 곳에 연속적으로 Load하는 방식이다. Memory Protection OS와 User 모두 Memory를 사용할 수 있기 때문에, Main Memory는 OS를 위한 공간과 User Process를 위한 공간으로 나눈다. 따라서 User Process를 OS를 위한 Kernel Space를 침범하면 안되며, 다른 Process의 영역도 침범해서는 안된다. 즉, Process가 자신이 소유한 범위를 넘지 않도록 할 필요가 있다. ..
[OS] Main Memory (1)
2023. 5. 9. 16:34
CS/Operating System
File이 Executable(실행가능한) File이면 이를 Program이라 부른다. Program이 "실행 중"인 상태라면 이를 Process라 부른다. "실행 중"이란 말은 CPU에 의해 Instruction이 수행 중인 상태를 의미한다. CPU는 Main Memory와 내부의 Register에 직접 접근할 수 있기 때문에, "실행 중"인 상태로 만들기 위해선 Disk의 Program을 Main Memory로 Load하여야 한다. 즉, Program이 Process가 되기 위해선 Main Memory에 Load되어야 한다. Multistep Processing of a User Program 우선, Program이 Main Memory에 Load되기 까지의 과정을 살펴보자. Source File이 ..
[OS] DeadLock
2023. 4. 29. 17:24
CS/Operating System
DeadLock이란, 이전의 Dinner-Philosipher 문제와 같이, 두 개 이상의 Task가 각각 Shared Resource를 점유하고 있고, 각 Task는 서로가 점유하고 있는 Shared Resource를 필요로 하여, 상대방의 Task가 끝나기를 기다리고 있기에 결과적으론 아무것도 못하는 상태이다. 각 Task는 다음과 같은 순서로 Resource를 이용한다. Request : Resource를 요청한다. (만약, 다른 Task가 먼저 점유하고 있다면 대기한다) Use : Task가 Resource를 할당받아, 작업을 수행한다. Release : Task가 Resource의 점유를 해제한다. DeadLock Characterization DeadLock 발생 조건 DeadLock이 발생하..
[OS] Synchronization
2023. 4. 6. 21:13
CS/Operating System
Concurrency 환경 혹은 Parallelism 환경에서 둘 이상의 Thread 혹은 Process가 공유자원에서 접근할 때 여러 문제들이 발생한다. Race Condition Race Condition은 Concurrency 환경 혹은 Parallelism 환경에서 공유자원에 접근할 때, 접근의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태를 말한다. Race Condition은 결과적으로 데이터의 불일치(inconsistency)를 일으킬 수 있다. 데이터 불일치(Data inconsistency)란 같은 데이터임에도 다른 값을 가지는 상태가 존재하는 것을 의미한다. "Multi-Processor"의 경우 부터 살펴보자. 우선 P1, P2는 memory로부터 데이터를 읽어오는 "Load..
[OS] CPU Scheduling
2023. 4. 5. 11:40
CS/Operating System
CPU Scheduling이란, 어떤 Task를 CPU에 할당할지 결정하는 것을 의미한다. CPU Schedular는 어떤 기준 혹은 순서로 CPU를 할당할지에 대한 "정책"을 가지고 Task를 CPU에 할당하게 된다. CPU - I/O Burst Cycle Process는 다음과 같이 I/O Burst와 CPU Burst의 사이클로 반복된다. I/O Burst : I/O(입출력)를 위한 대기 시간 (Process는 wait상태가 된다) CPU Burst : CPU를 사용하는 시간 "I/O Burst Job"는 CPU를 짧게 쓰고 중간에 I/O Burst가 끼어드는 경우가 많은 작업이다. 즉, CPU Burst가 짧은 Job을 의미한다. 보통 유저와 상호작용하는 프로그램이 여기에 속한다. 반면, "CPU..
[OS] Threads
2023. 4. 2. 21:25
CS/Operating System
Thread란 한 Process 안에서 실행되는 작업(Task)의 단위이다. 즉, Thread는 Process보다 작은 작업의 단위이다. Process내엔 여러 개의 Thread가 존재할 수 있는데, Thread는 Address Space에서 Stack 영역만 할당받고, Process의 Code, Data, Heap 영역을 공유한다. 이 외에도, Register, Thread ID는 고유하게 할당받지만, Open Files, Signal Handler, 작업환경( directory, user ID...) 등은 공유한다. vs. Process Web Page를 제공하는 프로그램이 있다 가정하자. 만약, I/O Operation이 수행된다 하면, 이 시간 동안 block 되고 다른 유저의 request를 처..
[OS] Processes
2023. 3. 29. 16:18
CS/Operating System
Process Concept Program이란, Disk 상에 존재하는 "실행 가능한 파일"을 의미하며, 이들이 Memory(RAM)에 Load 되었을 때, 이를 Process라고 한다. 또한, 작업의 단위를 의미한다. Address Space Process가 만들어지면 OS로부터 "Address Space"라고 불리는 고유한 메모리 영역을 할당 받는다. Address Space는 4가지 영역으로 구분할 수 있다. Text Section : program의 코드들이 기계어로 저장되어 있는 영역이다. CPU에 의해 하나씩 처리된다. Data Section : Global 변수, Static 변수가 저장된다. 프로그램 시작과 함께 할당되어 종료가 되면 소멸한다. Stack Section : 함수의 Local..