CS/Operating System 24

[OS] 파일 시스템 개요, VFS : virtual file system, Directory Implementation, Allocation, 빈 공간 관리, 버퍼캐시(페이지캐시), Read ahead

파일 시스템 개요유저 관점에서 파일 시스템은 다음과 같다.파일을 어떻게 이름 붙이지?권한은 어떻게 설정하지?디렉터리 트리어떻게 구성하지?시스템 입장에서는 다음과 같다.파일과 디렉터리를 어떻게 디스크 블락에 배치해서 저장해야 하지?디스크의 공간이 사용자 빈공간 이런 게 있을 텐데 이걸 효율적으로 안정적으로 잘 관리해야 한다.디스크에는 OS가 사용하는 첫 번째 블락이 반드시 존재해야 한다. OS가 쓰는 것이다.하나의 디스크를 파티션으로 나누어 관리할 수 있고 보통 아래와 같은 구조를 가진다.하나의 운영체제가 여러 파일 시스템과 여러 스토리지를 지원해야 하기에 하나의 통합된 VFS가 있다.성능상의 문제로 버퍼 캐시가 있고 그 밑에 디바이스 드라이버가 동작한다.메모리 안에서는 PCB를 따로 가지는 것 처럼 프로..

CS/Operating System 2024.06.09

[OS] 파일 시스템 기초, Directories, Pathname Translation, 마운팅, 파일 쉐어링, file locking, 파일 프로텍션 시스템

Basic Conceptsstorage 요구사항매우 컸으면 좋겠다.프로세스가 디스크를 사용하고 그게 잘 종료되었으면 좋겠다.여러 프로세스가 동시에 접근할 수 있어야 한다.파일secondary storage에 기록된 관련된 정보들의 집합이다. 윈도우에서는 확장자가 의미가 있다. exe는 실행 파일, txt는 텍스트 파일 이렇게 되는데 이건 사실 윈도우에서 의미가 있는 것이다. jpg라면 jpg확장자를 보고 jpg 뷰어를 보여주는 것이다.다른 운영체제는 확장자가 의미가 없다.persistent 해야 한다. power가 꺼지거나 재부팅 해도 유지되어야 한다.OS는 file을 통해 storage를 logical view로 보여주게 된다.file systemstorage에 있는 파일을 abstraction으로 구..

CS/Operating System 2024.06.08

[OS] Secondary Storage, HDDs, Managing Disk, Disk Scheduling, I/O Scheduler

Main Memroy 외부에 존재하는 Secondary storage에 대한 얘기이다.Secondary storage에는 instruction을 직접 수행하는 것이 허용되지 않는다. instruction 수행은 CPU만 가능하고 CPU의 instruction의 상대는 메모리로 제한된다.Secondary storage에 접근해야 한다면 IO 작업을 통해서만 가능하다.또, 직접적인 read/write는 허용되지 않는다.Secondary Storage의 특징은 다음과 같다.굉장히 크다.저렴하다.데이터가 지속적으로 저장된다. 전원이 꺼져도 데이터의 손실이 없다. 영속성, 비휘발성이라고도 한다.HDDs하드디스크는 여러 개의 트랙으로 이루어져 있고, 트랙은 여러 개의 섹션으로 나뉜다.N극, S극의 자성으로 섹션에 ..

CS/Operating System 2024.06.08

[OS] device drivers, Device-Independent I/O SW, I/O System Layer 총 정리

device drivers각 디바이스를 제어하기 위한 디바이스 별 코드이다.디바이스 드라이버가 인터럽트 핸들러와도 작용하고 device-independent I/O 소프트웨어와도 작용한다.디바이스 드라이버는 OS와 상호작용하기 위한 잘 정의된 모델과 standard interface가 필요하다.디바이스 드라이버는 세 가지 방식으로 구현된다.static 하게 커널과 linked 되는 방식부팅할 때 전부 로드되는 방식필요할 때 dynamic 하게 로드되는 방식문제가 되는건 device driver 코드가 운영체제 내부에 있는 코드와 같이 동작할 텐데, 이 코드가 조금만 잘못되어도 운영체제가 고장 난다. 따라서 드라이버의 가장 중요한 점은 reliablility : 안정성이다.특히 unmanaged syste..

CS/Operating System 2024.06.08

[OS] I/O Device, Device Controller & I/O Hardware, Direct I/O, Memory-mapped I/O, Polled I/O, Interrupt-driven I/O, Programmed I/O, Direct Memory Access, Blcoking, Non-Blocking I/O

I/O가 연결되어 있는 걸 보면 버스에 프로세서와 캐시, 메모리가 연결되어 있고 나머진 다 똑같은 I/O 장치로 다루게 된다.운영체제 입장에서 CPU, 메모리를 제외한 장치들은 똑같이 다루는 것이다. I/O 장치를 동일하게 다루는 방식은 device driver, device controller가 있어서 가능하다.예를 들어 키보드를 open해서 작업한다면 키보드 디바이스 드라이버가 작동해서 키보드 디바이스 컨트롤러에게 명령을 내리게 된다. 그럼 밑에 있는 실제 디바이스가 작동한다. 모든 디바이스마다 컨트롤러가 따로따로 있다. 보통은 메인보드 칩셋에 붙어있거나 디바이스에 붙어있는 하드웨어이다.I/O Device디바이스는 OS 입장에서 크게 Block, Character로 나눌 수 있다.Block devic..

CS/Operating System 2024.06.08

[OS] Thrashing, Working Set Model, PFF (Page Fault Frequency), Shared Memory, Copy on Write, Memory mapped files

Thrashing동시에 사용하는 프로세스의 수를 계속 늘리게 되면 CPU 사용률도 계속 증가하다가 임계점을 넘어가면 CPU 사용률이 줄어드는 현상이 생긴다.메모리가 부족해지는 순간에 Thrashing이 생기면서 대부분의 시간을 OS가 디스크를 왔다 갔다 하면서 Page fualt를 계속 해결하면서 CPU가 사용되지 못한다.메모리가 overcommitted 된 상황이라고도 하며, overcommitted라는 용어는 시스템이 사용할 수 있는 용량보다 훨씬 더 많은 프로세스, 메모리를 사용하는 상황을 말한다. Thrashing 현상이 일어나면 OS는 page fault를 줄이기 위해 어떻게 해야 할지 모르고 page fault만 계속 일어나면서 I/O는 계속 일어나고 CPU는 계속 I/O만 기다리게 된다.해결..

CS/Operating System 2024.06.02

[OS] Page Replacement - FIFO, LRU, Second Chance, NRU, LFU, MFU, Allocation of Frames

피지컬한 메모리가 결국은 페이지 단위로 동작하고, 메모리가 부족하면 디스크로 내려보내게 될 것인데 어떤 프레임을 내려 보낼 것인가에 대한 얘기이다.Page Replacementpage fault가 발생했을 때 OS는 디스크에서 faulted page를 load 해서 메모리에 할당해줘야 한다.그런데 운영체제가 메모리에 빈 프레임을 유지하기 위해서 어떤 페이지를 evict 시켜야 한다.eviction은 정해진 page replacement 알고리즘대로 동작하게 된다.Evicting the best pagereplacement 알고리즘의 목적은 fault rate를 감소시키는 것이다.가장 좋은 선택은 가장 오랫동안 사용되지 않을 페이지를 evict 하는 게 가장 좋다.벨라디의 증명가장 오랫동안 쓰이지 않을 메..

CS/Operating System 2024.06.02

[OS] TLBs, 캐시 복습, Translation Using a TLB, Managing TLBs, Memory Reference, TLB hit 총 정리

TLBs페이지 테이블을 거쳐서 메모리에 액세스 하면 시간이 많이 걸린다. original page table은 doubled the cost of memory lookups 하다. Two-level에서는 triple the cost 하다! 시간적인 오버헤드를 줄이기 위해서 도입된 게 TLB이다. TLB의 목적은 메모리 액세스 한 번의 수준으로 물리 주소를 얻는 것이고, 해결책은 캐싱밖에 없다. 페이지 테이블의 일부 내용을 캐싱하고 있는 하드웨어가 Translation Lookaside Buffer TLB이다. MMU안에 TLB가 들어있다. TLB는 어떻게 구성되어 있을까?캐시 안에는 페이지 테이블과 상당히 유사한 데이터를 가지고 있다.그림에는 없지만 ref가 있을 것이다.캐시를 태그로 사용하기 위해 vi..

CS/Operating System 2024.05.31

[OS] Two-level Page Table, Hashed Page Tables, Clustered page tables, Inverted Page Table, 페이지 테이블을 어디다 두고 관리할까?

어떻게 운영체제가 메모리를 조금이라도 적게 쓰고 virtual 한 어드레스를 잘 번역할 수 있을까? 좀 더 빨리 번역할 수 있을까? 먼저 space overhead를 생각해보자. 32bit 머신에서 페이지 테이블이 4KB, 페이지 테이블 한 row가 4byte라고 한다면 엔트리가 2^20개이므로 총 2^24, 즉 프로세스당 페이지 테이블을 4MB 사용한다. 어떻게 좀 더 줄일 수 있을까?프로세스가 실행되면서 어드레스 스페이스를 전체 다 사용하지는 않는다. 페이지 테이블 엔트리가 2^20개라는 건 4GB를 다 사용한다고 생각하고 페이지 테이블을 만드는 것이다. 그런데 실제로 그런 프로세스는 잘 없고 대부분이 메모리의 일부분만 사용한다.오버헤드를 잘 줄이려면 실제로 사용되는 주소 공간의 일부만 매핑하면 된다..

CS/Operating System 2024.05.31

[OS] Paging, Demand Paging, Page fault, Segmentation, 페이징과 세그멘테이션 비교, Segmentation with Paging

1. Demand PagingDemand가 있을 때 Paging을 시키겠다는 개념이다. 메모리가 정말로 필요한 순간에 가상 페이지를 피지컬한 메모리에 할당한다.피지컬한 메모리와 디스크를 왔다갔다하는 I/O 횟수가 줄어든다.피지컬한 메모리의 필요량이 줄어든다.응답이 빨라진다.좀 더 많은 프로세스를 수용할 수 있다.OS가 메인 메모리를 마치 캐시처럼 사용한다.메모리를 디스크의 캐시처럼 사용한다.프레임 단위로 디스크에 내리거나 필요한 게 있으면 메모리로 올려서 사용하는 방식이다.피지컬한 메모리가 다 차게 되면, 메모리가 부족해진 것이므로 적절한 프레임을 찾아서 디스크로 내린다.디스크로 내리는 과정을 Eviction이라 하고, 반대의 과정 메모리로 올리는 것을 loading이라 한다.디스크로 내리는 과정을 보자..

CS/Operating System 2024.05.30