본문 바로가기

운영체제13

File Systems 이번 학기에 마지막 챕터인 file system이다. 깊게 들어가지는 않고 개념적인 것들 위주로 다루게 될 것 같다. File System Layers file system은 user-level SW와 device 사이에 위치하는데 리눅스 기준으로 Ext4같은 file system이 있다. 여러가지 file system이 있는데 general하게 사용되는 것도 있고 분산 시스템등 특정 기능에 특화된 file system도 존재한다. 그리고 이러한 file system에 접근하기 위해서는 POSIX API같은 공통된 API를 이용해야 한다. 그리고 file system들은 file을 관리하는 방법에는 차이가 있지만 data를 읽거나 쓰는 방법은 동일하다. POSIX API 밑에는 generic block .. 2022. 6. 21.
HDD: Hard Disk Drives 여지껏 CPU나 memory를 가상화하거나 스레드, synchronization 등을 통해 concurrency를 얻어내는 방법등에 대해 알아보았다. 이번 글에서는 어떻게 정보를 연속성 있게, 즉 시스템이 꺼져도 정보가 날아가지 않게 storage에 저장할 수 있는 방법에 대해 알아볼 것이다. I/O Device A Typical I/O Device fig 1에서 키보드 장치를 확인할 수 있다. 그리고 키보드에는 매우 작은 micro controller(fig 1에서는 ARM Cortex-M3)가 있는데 이것이 CPU나 메모리와 통신하면서 장치를 사용하게 된다. 이 micro controller 내부에는 CPU, 메모리 등 여러가지 구성요소가 있고 이것들을 컨트롤하기 위한 firmware가 존재한다. 이.. 2022. 6. 21.
Memory Management 4: Page Replacement Swapping Swapping은 프로세스가 실행되어야 하는데 physical memory가 충분하지 않을 때, 현재 쓰이지 않는 것들을 스토리지(HDD, SSD, ...)에 옮겨놓은 뒤에 거기에 필요한 데이터를 로드하는 것이다. 당연히 이후에 스토리지에 저장되었던 것을 다시 불러오는 과정이 필요하다. 다르게 말하면 physical memory가 스토리지의 캐시역할을 한다고 생각하면 된다. 기존의 프로그램이 디스크에 위치하고 이것이 실행되면 메모리로 로드가 된다. 이때 사용되는 방법이 이전에 다뤘던 demanding paging이었다. 프로세스가 실행되는 순간에는 전체 주소 공간 중 극히 일부만이(page 단위로) 사용되기 때문에 한번에 모든 주소 공간을 다 가져올 필요가 없다. 그렇기 때문에 나머지는 .. 2022. 6. 15.
Memory Management 3: Page Tables and TLBs 계속해서 가상 메모리에 대해 다룬다. 이 글에서는 가상 메모리의 구성 요소 중에서도 page table과 TLBs에 대해 구체적으로 다뤄 보고자 한다. 이전까지는 page table을 간단하게 표현했는데 사실 page table을 효과적으로 구성하는 것은 쉬운 일이 아니다. 때문에 여기서는 page table을 어떻게 관리해야 하는지와 HW적인 도움을 주는 TLBs에 대해 살펴볼 것이다. 추가적으로 이 파트는 캐시에 대한 이해가 필요하다. 컴퓨터 구조 때 다뤘던 내용인데 본인은 잘 기억나지 않아서 따로 찾아봤었다. https://parksb.github.io/article/29.html을 참고했는데 이해하는데 큰 도움이 됐었다. VM Issue 이전 글 끝에서 다뤄볼 문제들을 언급하고 끝냈는데 다음과 같.. 2022. 5. 27.