목록운영체제 (31)
Shine's dev log
0. ext4 파일 시스템 지난번에 ext4 파일 시스템의 전체적인 구조에 대하여 살펴보았다. ext4는 전체 파티션을 여러개의 블록그룹으로 나누고, 각각의 블록그룹에는 슈퍼블록, 그룹 디스크립터 테이블, 데이터블록 비트맵, 아이노드 비트맵, 아이노드 테이블, 데이터 영역이 존재한다고 하였다. 또한, ext3 부터는 파일의 변경사항 추적을 위해 저널링(Journaling) 기능이 생겼다는 것도 알 수 있었다. 이번에는 이 저널링 기능을 통해 삭제된 파일을 복구하는 방법을 알아보자. 1. 저널영역 (Journal Area) 우선, 저널영역의 위치를 알아야 하는데, 이는 inode 8번에 저장되어 있다. inode 8번 파일에는 저널 영역에 대한 주소값이 저장되어 있다. 저널영역은 위의 그림과 같이 하나의 ..
0. ext 파일 시스템 각각의 운영체제들을 저마다 파일들을 관리하는 파일 시스템을 채택하고 있다. 대표적으로 윈도우는 NTFS를, 맥 os는 APFS를 사용한다. 리눅스의 경우 ext 파일시스템을 사용한다. 대부분의 안드로이드 스마트폰과 IOT 기기의 경우에 리눅스를 기반으로 돌아가기 때문에 역시 ext 파일 시스템을 많이 사용하게 된다. 즉 한마디로 ext 파일 시스템이 널리 쓰인다는 것이다. 1. ext 의 역사 우선 1993년 나온 ext2부터 알아볼 필요가 있다. 리눅스 운영체제에서 사용할 수 있는 파일 시스템으로, inode 하나 당 하나의 파일을 저장한다. 가장 중요한 특징으로는 파일을 저장할 때, Block Mapping 방식을 사용한다는 것이다. 위의 그림처럼 inode 1번부터 12번 ..
1. 파일시스템 파일시스템은 파일을 저장하고 읽는 시스템이다. 파일시스템을 통해 영상을 저장하고, 음악을 재생하고, 보고서를 저장하는 등 사용자는 파일 시스템을 항상 사용한다. 운영체제가 프로세스나 쓰레드를 processor가 abstract 해서 사용했고, Virtual Memory system이 메모리를 관리했다면, 파일 시스템은 storage를 abstract 해서 관리하는 것이다. 2. 파일(File)과 디렉토리(Directory) 컴퓨터 입장에서 파일이란, 관계있는 정보를 모아서 저장장치에 저장해놓고, 이름을 붙인 녀석이다. 운영체제는 또한, 컴퓨터의 상태를 보여줄때 pseudo file 로 보여주기도 하고, 메모리 외에 있는 대부분의 장치, 정보들은 모두 파일로 관리한..
0. evict page demand paging을 사용하면, 메인 메모리로 페이지를 가져와야 하는데 그러면 원래 메인 메모리에 박혀있는 페이지 하나를 뽑아줘야 한다. 이 때, 뽑을 페이지를 고르는 것도 전략적으로 골라야 컴퓨터 성능이 좋아지는데, 왜냐면 page fault가 나서 디스크를 참조하는 경우 시간이 엄~청 오래걸리기 때문이다. 전략적으로 evict할 page를 잘 골라서 최대한 page fault가 나지 않도록 하는 것이 중요하다. 지금부터 evict할 page를 고르는 여러가지 알고리즘들을 살펴보자 1. OPT (Belady's Algorithm) 앞으로 가장 오랫동안 사용되지 않을 페이지를 빼는 알고리즘 이는 수학적으로 증명된, 가장 page fault r..
앞서 살펴보았던 Virtual memory system은 여러가지 장점들이 있기 때문에 대부분의 OS에서 사용하는 개념이다. 이번에는, Virtual memory와 관련된 여러가지 특징들을 살펴보자. 1. address space 와 VM 우선 address space는 크게 code, stack, heap, data 영역으로 나눌 수 있다. 1) code code 영역은 read-only로 page table에 mapping된다. 또한, sharable 하다는 특징이 있다. 디스크로부터 file의 내용이 변화없이 읽어져 와서 따로 변화를 백업해 둘 swap file을 만들지 않아도 되는 놈을 file-backed pages라고 하는데, code 영역이 executable f..
1. Swapping swapping이란, 원래 컴퓨터에 돌고 있는 프로세스 중 쓰지 않는 프로세스는 메인 메모리에서 Backing store(SSD, HDD)에 넣는것/빼오는 것이다. 하지만 위의 경우처럼 프로세스 전체를 swap하는 방식은 지금은 쓰지 않는다. 요즘 swapping이라고 하면 프로세스 전체를 바꾸는 것이 아니라 page를 swapping하는 경우를 말한다. 그리고 이를 Demand Paging이라고 한다. 2. Demand Paging 앞서 말했듯이 Demand Paging은 page 단위로 swaping을 하는 것이다. demand paging은 다음 과정을 통해 실행된다. 1) OS가 swap out할 victim page를 고른다.2) disk..