CS/Operating Systems 5

[Principles][4]File System(algorithms for allocation and freeing of file system resources)

Image courtesy of Prof. Young Ik Eom - SKKU, Maurice J. Bach - The design of the UNIX operating system 이전 글에서는 필요한 데이터를 어떻게 찾아가는지 서술한 알고리즘인 bmap()과 namei()에 대해 알아보았습니다. 중요한 점은 내부적으로 kernel은 inode를 사용해 파일시스템 자원의 위치를 파악한다는 것이었습니다. 이번에는 file system의 리소스를 할당하고 해제하는 alloc, free, ialloc, ifree에 대해 알아보겠습니다. 우선, Unix file system의 superblock에 대해 알아볼 필요가 있습니다. 첫 글에서 Unix의 파일 시스템은 다음과 같이 bootblock, superbl..

[Principles][3]File System(locating files and data blocks)

Image courtesy of Prof. Young Ik Eom - SKKU, Maurice J. Bach - The design of the UNIX operating system 저번 글에서는 파일시스템에서 inode를 메모리 또는 in-core로 받아내고 내보내는 알고리즘들을 살펴보았습니다. 그것이 아래 사진에서 보이는 iget()과 iput() 입니다. 이번에는 inode를 참조하여 파일 시스템 안에서 필요한 data block을 찾아내는 방법인 bmap() 알고리즘에 대해 알아본 후, directory 는 어떻게 관리되며 pathname이 주어지면 파일을 어떻게 찾아내는지 서술된 namei() 알고리즘에 대해 알아보겠습니다. 위 그림에서 계층상으로만 보면 namei()가 bmap()보다 상위에..

[Principles][2]File System(algorithms for in-core inode)

Image courtesy of Prof. Young Ik Eom - SKKU 이번에는 file subsystem에 관해 더 자세히 알아봅니다. File subsystem을 구성하는 알고리즘은 다음과 같은 계층으로 나뉘어 있습니다. 아래 분홍색으로 칠해져있는 알고리즘이 어떻게 작동하는지 알아보면서 파일시스템을 이해하도록 하겠습니다. 이전에 설명하였듯, Unix file system 은 inode 라는자료구조 위주로 돌아갑니다. 이전 글에서 disk의 정보를 buffer cache에 담아서 왔던 것처럼 inode 도 disk에 상주하다가 필요할 때 inode cache 로 불러들여져 옵니다. 계층에서도 나와있지만 inode 는 자료구조이기 때문에 실질적으로 데이터 자체를 다루는 buffer에 담겨서 ker..

[Principles][1]Buffer Cache

Image courtesy of Prof. Young Ik Eom - SKKU File subsystem 와 연결된 buffer cache (BC) 부터 시작해본다. Theoretical Background 데이터가 cache에 있을 때는 disk read 를 하지 않고, cache에 없을 때 read 이후 caching 까지 진행한다. Writing 시 쓰여진 data 는 cache 된다. 그렇다면 Buffer 라는것은 어떻게 구성되어 있을까? buffer = memory array + buffer header 하나의 buffer 마다 1개의 헤더가 존재한다. Buffer header 안에는 device number, block number, buffer가 가진 정보로 갈 수 있는 pointer, cu..

[Principles][0]General Summary

Image courtesy of Prof. Young Ik Eom - SKKU, Maurice J. Bach - The design of the UNIX operating system 프로그램은 two level hierarchy 로 이루어져 있다. 안쪽을 커널이라고 하고 바깥쪽을 어플리케이션 레이어라고 한다. 커널은 하드웨어와 직접적으로 상호작용을 하는 부분으로, OS의 핵심 파트이다. OS의 핵심 기능은 1. HW/SW resource의 관리 2. Application에 서비스 제공으로 이해될 수 있다. Unix kernel의 경우 위와 같은 구조를 가지고 있으며, 가장 대표적인 구조의 요소 두 개가 file subsystem과 process control subsystem 이다. 이 둘을 위한 sy..