CS/Operating System 30

30. Evolution of File system

Fast File System (FFS) 초창기 unix file system이 제어하는 스토리지가 디스크라는 사실을 인지하지 못해 seek overhead가 발생했던 것을 개선하기 위해 개발되었습니다. 우선 레이아웃 포맷을 설정하는 것이 중요합니다. 기존 indoe block, data block이 사라지고 cylinder group 이라는 블록이 생겼습니다. superblock에는 파일 시스템 전체에 대한 메타 데이터 정보가 들어있습니다. 이 superblock이 1개만 존재할 시 reliablity 문제가 발생하기 때문에 superblock에 대한 복사본을 cylinder group 하나하나에 두게 됩니다. 이를 통해 superblock의 정보가 cylinder group 개수 만큼 추가로 더 존재..

CS/Operating System 2024.02.05

29. Reliability

Reliability 파일 시스템에서 퍼포먼스와 같이 중요한 요소가 reilability입니다. file system reliability을 한 단어로 표현하자면 data persistency라고 할 수 있습니다. 스토리지 디바이스가 비휘발성(non volatile) 메모리이기 때문입니다. 파일에다 어떤 데이터를 쓰면 그 데이터는 스토리지 디바이스에서 계속 보존되게 됩니다. 언제 읽더라도 일관된 내용을 얻어올 수 있는데 이렇게 consistency를 유지한다는 것은 어려운 일입니다. 오랜 기간 동안 여러 가지 측면에서 조건들이 다 만족돼야 하기 때문입니다. 시간이 길어지면 스토리지 디바이스에서 하드웨어적인 fault가 발생하거나 또는 전원이 꺼지는 문제가 발생할 수 있습니다. 이때 우리가 메인 메모리에 ..

CS/Operating System 2024.02.05

28. Free Block Management

Disk block을 파일에게 allocation 하려면 가용 가능한 free block이 어떤 것들이 있는지 빠르게 알 수 있어야 합니다. 이런 문제를 Free Block Management라고 부릅니다. Free List Free list는 이 문제를 해결하기 위한 방법 중 하나로 과거에는 굉장히 단순하게 구현할 수 있어 많이 사용되었지만 이제는 너무 단점이 많아서 거의 사용하지 않습니다. Linked File Structure와 유사하게 free block들을 전부 링크를 달아서 링크드 리스트로 만드는 방법입니다. 어떤 파일이 블록 3개를 요구하는 경우 링크드 리스트에서 첫 번째 free block을 따주고 세 번째 블록까지 전달해 줍니다. 이렇게 block by block allocation을 지..

CS/Operating System 2024.02.04

27. File Structures

average accress time을 최소화하는 것에 이어 file structure를 정해보겠습니다. OS에 존재하는 대부분의 파일은 굉장히 크기가 작습니다. 큰 파일의 수는 적지만 디스크 스페이스의 대부분의 용량을 차지합니다. 우리가 실행하는 I/O operation은 주로 이러한 large data file에 대해서 일어납니다. 이를 통해서 파일 시스템을 설계할 때 large file에 대한 좋은 퍼포먼스가 필요하다는 것을 알 수 있습니다. 이러한 large file의 대부분은 멀티미디어 콘텐츠 파일로 이 파일에 액세스가 느려지면 유저 perception이 나빠지게 됩니다. large file을 위한 file structure를 설계하는 방법은 옵션이 그렇게 많지는 않습니다. linked file..

CS/Operating System 2024.02.04

26. File System

파일 시스템이란 루트 디렉터리부터 모든 서브 디렉터리까지 계속적으로 연결된 트리로 볼 수 있습니다. (사용자의 관점에서는 디렉터리와 파일들의 계층적인 구조), OS 입장에서는 스토리지 디바이스 위에 포맷된 볼륨으로 볼 수 있습니다. (스토리지 디바이스 위에 저장된 디스크 블록의 집합체) 위에서는 파일 시스템이 데이터 컨텐츠를 저장한다는 측면에 대해서만 설명했지만 사실 파일 시스템은 더 많은 일을 합니다. 우선 저번에 공부했듯이 모든 로지컬/피지컬 리소스에 대한 name space를 제공해 줍니다. (해당 리소스에 쉽게 접근할 수 있도록 window에서는 C:\window\home 이런 식으로 제공) 그리고 파일 시스템은 파일과 디렉토리에 할당된 디스크 블록을 표현해 주기 위한 다양한 데이터 구조를 가지고..

CS/Operating System 2024.02.03

25. Files and Directories

파일을 액세스 하기 위해서는 몇 가지 개념을 이해해야 합니다. 첫 번째가 파일 디스크립터(File discriptor)로 어떤 프로세스가 open 한 파일을 명명해 주는 ID입니다. 사용자가 설정하지 않아도 open 되는 파일이 존재합니다. standard input/output/error로 각각 0번, 1번, 2번 discriptor를 받습니다. 그다음부터 열리는 파일의 경우 3번 file discriptor를 받습니다. 즉 discrpitor는 프로세스가 오픈한 파일들에 대해서 순차적으로 부여된 id로 기본적으로 0, 1, 2가 사용되기 때문에 3번부터 시작이 됩니다. 파일 디스크립터 외에도 C의 standard library를 통해서 파일을 액세스 할 수 있습니다. 이 경우 파일 스트림, 파일 포인..

CS/Operating System 2024.02.03

24. Device Drivers

하드디스크 드라이버는 하드디스크라는 I/O 디바이스를 구동하는 시스템 소프트웨어(펌웨어)입니다. 드라이버는 OS의 한 부분으로 애플리케이션과 I/O 디바이스 사이에 존재하며 애플리케이션이 I/O 디바이스를 사용할 수 있게 도와줍니다. 그래서 디바이스 드라이버는 I/O 컨트롤러에 있는 레지스터를 읽고 쓰는 코드로 이루어져 있습니다. 추가적으로 I/O 컨트롤러가 I/O 오퍼레이션이 종료되었을 때 CPU하게 이슈하는 인터럽트 서비스 루틴도 들어있습니다. UNIX OS를 통해서 어떻게 I/O 디바이스을 구별하고 디바이스 드라이버 루틴을 찾아 호출할 수 있는지 알아보겠습니다. 우선 I/O 디바이스를 파일 형태로 이름을 붙여 구별을 합니다. 이 디바이스 파일에 어떤 정보가 들어있는지 알아보기 위해서 dev 디렉터리..

CS/Operating System 2024.01.31

23. I/O Device 관리

PC 내부에는 다음과 같은 메인보드에 CPU, memory, hard disk drive 등의 다양한 I/O 디바이스가 있습니다. 이런 디바이스들을 전부 I/O bus에 연결되어 있습니다. I/O bus와 I/O 디바이스 사이에는 I/O controller가 존재하며 CPU로부터 받은 I/O instruction을 수행합니다. I/O controller는 I/O bus에 인터페이스 하기 위한 bus interface logic을 가지고 있고 I/O 디바이스를 제어하기 위한 인터페이스도 가지고 있습니다. 그리고 내부에 레지스터들이 들어 있는데 이 레지스터는 데이터 레지스터와 컨트롤 레지스터로 나뉩니다. 데이터 레지스터에는 디바이스로부터 읽어온 정보를 저장하는 input data register와 출력할 정..

CS/Operating System 2024.01.30

22. Trends in Memory Management

OS는 대부분 high level language로 구현되어 있으며 OS가 포팅된 하드웨어와 무관하게 구현될 수 있지만 반대로 타겟 하드웨어 특성에 굉장히 민감한 부분도 존재합니다. 이 부분은 context switching을 담당하는 부분입니다. context switching은 CPU에 있는 레지스터들의 속성을 이용해서 조정하는 일들을 많이 진행하기 때문에 그렇습니다. MMU라는 하드웨어를 기반으로 동작을 하는 Memory manageement 부분도 하드웨어와 밀접하게 관련이 있는 부분입니다. 그렇기에 하드웨어가 발전하게 되면 OS의 memory management 부분도 같이 변화해야 합니다. 페이징 매커니즘을 공부하면서 몇 가지 단점에 대해서도 알아봤습니다. 메모리 액세스의 성능이 저하되는 문제..

CS/Operating System 2024.01.29

21. Trashing and Working set

컴퓨터 시스템이 감당할 수 있는 양보다 더 많은 양의 워크로드를 돌릴 경우 성능 저하를 피할 수 없습니다. 이 성능 저하는 프로세스 개수에 비례해서 linear 하게 나빠지는 것이 아닌 어느 시점에서 급격한 성능 저하가 발생하게 되는데 이것을 쓰레싱(Thrashing)이라고 부릅니다. 쓰레싱이 생기는 이유는 페이지 프레임의 개수는 적은데 프로세스들이 더 많은 페이지를 자주 사용하면서 발생합니다. 공간이 좁기 때문에 가까운 미래에 사용할 페이지를 쫓아내고 자리를 만든 다음 페이지 폴트가 발생해 페이지를 들고 오는 것이 반복되어 page fault rate가 증가하게 됩니다. 이러면 메모리가 아닌 swap area에 액세스해서 페이지를 가지고 오는데 이 속도가 너무 느리기 때문에 버츄얼 메모리의 이점을 살리..

CS/Operating System 2024.01.27
반응형