#12 운영체제 | 파일 시스템

HYUN·2021년 2월 28일
0

OS | 운영체제

목록 보기
12/13
post-thumbnail

파일 시스템

컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 가리키는 말이다. | 출처: 위키백과

파일 시스템을 알아보기 전에 파일에 대해서 간단하게 정리하자면 저장매체는 컴퓨터에 전원이 차단되어도 남아있을 수 있는 0과 1의 데이터를 저장하기 위한 장치였습니다.

그런데 0과 1 즉, bit 단위로 데이터를 관리하기에는 bit 단위의 주소를 읽고 사용하는것은 오버헤드가 너무 컸기 때문에 bit가 아닌 블록(4KB) 단위로 관리를 하기로 합니다.

하지만 이렇게 블록마다 고유 번호를 부여해서 관리를 하는것은 bit보다는 주소의 수가 줄어들어 나아지겠지만 사용자가 각 블록의 고유 번호로 데이터를 관리하기가 너무 어려웠습니다. 즉, 추상적인 객체가 필요했고 그것을 파일이라는것으로 만들어 사용하기로 하여 사용자는 파일 단위로 데이터를 관리할 수 있게 되었고 각 파일은 블록 단위로 데이터를 관리할 수 있게 되었습니다.

그런데 이렇게 데이터를 저장할 수 있는 단위를 만들었지만 저장매체에는 어떤 방식으로 이러한 데이터들을 효율적으로 저장할 수 있을까요?

먼저 파일의 크키는 사용자가 데이터를 지우면 작아지고 추가하면 커진다는것을 알고 있어야합니다. 그렇기 때문에 불연속 공간에 파일을 저장할 수 있는 기능이 필요하고 그렇게 나온 방법이 인덱스 블록 기법블록 체인입니다.

  • 블록 체인: 블록을 링크드 리스트로 연결(그러기 위해서 첫번째 블록 주소를 알고 있습니다.) - 끝에 있는 블록을 찾으려면, 맨 처음 블록부터 주소를 따라가야 한다.
  • 인덱스 블록 기법: 각 블록에 대한 위치 정보를 기록해서, 한번에 끝 블록을 찾아갈 수 있도록 함

또한 파일 시스템에는 다양한 알고리즘이 존재하는데 대표적인 운영체제인 윈도우즈는 블록의 위치를 FAT이라는 자료 구조를 기반으로 기록하는 NTFS라는 알고리즘을 사용하며 리눅스 계열의 경우에는 일종의 인덱스 블록 기법인 inode 방식인 ext2, 3, 4등을 사용합니다.

이렇게 많은 파일 시스템이 존재하는데 이들이 공통적으로 고려해야할 부분은 어떤게 있을까요? 코드를 예로 생가해보면 python의 open과 c언어의 open은 서로 다른 프로그래밍 언어이지만 공통적으로 파일을 오픈합니다. 다시 말해 어떤 파일 시스템을 사용하냐에 따라 코드가 달라지는게 아니라 파일을 다루는 시스템 콜의 경우 규칙이 이미 정해져 있다는 겁니다.

따라서 사용자는 파일 시스템을 고려하지 않아도 정해직 규칙대로 프로그래밍을 할 수 있습니다


inode 방식 파일 시스템

대표적인 파일 시스템 방식

그림과 같이 다시 위의 얘기를 보자면 사용자는 파일 단위로 데이터를 관리할 수 있게 되었고 각 파일은 블록 단위로 데이터를 관리

inode 방식은 크게 3가지의 블록 타입을 가지고 있습니다. 파일 시스템 전체의 정보와 파티션 정보를 가지고 있는 수퍼 블록, 파일에 대한 상세 정보를 가지고 있는 아이노드 블록 그리고 실제 데이터를 가지고 있는 데이터 블록입니다. 즉, 블록 단위로 구성 되어 있는 파일에는 여러 가지 블록들로 구성이 되어있다는 의미입니다.

사용자는 파일의 이름만을 알고 있지만 사실 각 파일의 이름에는 inode 번호가 할당됩니다. 그리고 파일 시스템에서 이러한 inode를 기반으로 파일을 엑세스하고요

  • 프로세스를 예로 들어보자면 프로세스를 생성하게 되면 process ID가 할당이 되죠. 그리고 이러한 process ID를 기반으로 PCB 정보가 만들어지고 이러한 정보를 사용해서 다양한 작업을 수행할 수 있습니다.

  • 파일을 예로 들어보면 파일을 생성하게 되면 해당 파일의 inode 번호가 생성이 됩니다. 그리고 해당 파일의 정보가 들어있는 indoe 블록이 생성되어서 해당 블록의 정보를 이용해 파일을 처리하는 작업을 수행합니다.

inode 블록의 정보(메타 데이터)는 파일 권한, 소유자 정보, 파일 사이즈, 생성 시간등 시간 관련 정보, 데이터 저장 위치 등이 있습니다.

가상 파일 시스템 | Virtual File System(VFS)

파일 시스템이라고 해서 가상 파일 시스템이 파일 시스템은 아닙니다. 실제 파일 시스템의 위에 있는 추상 계층으로 Network등 다양한 기기도 동일한 파일 시스템 인터페이스를 통해서 관리가 가능합니다.

profile
자바스크립트를 좋아합니다. | 이유를 알고 있는 것과 모르는 것의 차이는 분명하다.

0개의 댓글