운영체제 시리즈 13. File Systems
File
File이란 관련된 정보의 모음(a named collection of related information)이다. 비휘발성 보조기억장치(디스크)에 저장된다. 저장장치를 file이라는 논리적 단위로 볼 수 있게 해준다. 연산에는 create, read, write, reposition, delete, open, close 등이 있다. open의 역할은 파일의 metadata를 메모리에 올리는 것이다.
File attribute (metadata)
파일 자체의 내용이 아니라 파일을 관리하기 위한 각종 정보를 뜻한다. 저장위치, 파일의 이름 등의 정보가 있다.
Directory
파일의 메타데이터 중 일부를 보관하는 일종의 파일이다. 즉, 디렉토리(폴더)도 파일이다. 연산은 search for a file, create a file, delete a file, list a directory, rename a file, traverse the file system 등이 있다.
Partition (Logical Disk)
디스크를 논리적 단위로 나눠놓은 것을 의미한다. 하나의 물리적 디스크 안에 여러 파티션을 두는 것이 일반적이다. 여러개의 물리적 디스크를 하나의 파티션으로 구성하기도 한다. 각 파티션에 file system을 설치하거나 swapping 등 다른 용도로 사용이 가능하다.
Open()
파일의 메타데이터를 디스크에서 메인 메모리로 올리는 것을 의미한다. read와 write를 진행할 때, search에 많은 시간이 소요되므로 open을 별도로 두어 search에 대한 시간을 줄인다. open 되어 있는 파일은 search할 필요가 없기 때문이다.
프로세스 A에서 open 시스템콜을 요청하면 경로를 따라 순차적으로 접근한다. 운영체제의 전체 open file table에 b의 메타데이터를 올린다. 그럼 프로세스 A의 PCB에 파일 주소값이 정리되어있는 테이블이 있는데 거기에 index값은 b의 fd(open 명령어의 리턴 값)이 되고 내부 값은 open file table에서의 b의 메타데이터를 가리킨다. open 명령 이후 read 시스템콜이 들어오면 b의 메타데이터에 접근해 b의 내용을 읽어온다. 이때, OS 커널영역에 copy를 한 뒤 프로세스 A에게 보내주는데 이것을 버퍼캐시라고 한다. 추후에 또 b의 read 시스템콜이 들어오면, 운영체제는 자신의 버퍼캐시에 올라온 값이 있는지 확인하고 있다면 그 값을 읽고, 없다면 위에서 설명한 내용대로 진행한다. 여기서 fd는 file description을 의미하며 위치 정보를 가지고 있는 포인터라고 할 수 있다.
File System
운영체제에서 파일을 관리하는 시스템을 의미한다. 파일, 파일의 메타데이터, 디렉토리 정보 등을 관리한다. 파일의 저장방법을 결정하고 파일을 보호하는 등의 역할을 한다.
File protection
각 파일에 대해 누구에게 어떤 권한(read/write/open)을 줄 것인가를 결정한다.
- Access control matrix : 파일별로 누가 어떤 접근권한이 있는지 표시한다.
- Grouping : 전체 유저를 owner, group, public 세 그룹으로 구분하여 각 파일에 대한 접근 권한(rwx)을 3비트씩 표시한다. 예를들면 rwxr--r--는 owner(rwx), group(r--), public(r--)를 의미한다. 일반적으로 사용하는 방법이다.
- Password : 파일마다 비밀번호를 두는 방법이다. 접근권한 별로 비밀번호를 암기하고 관리하는 문제가 발생한다.
File System Mounting
서로 다른 디스크(파티션)에 존재하는 파일 시스템을 연결해 주는 역할을 한다. 서로 다른 디스크에 있으면 접근이 안되는데 마운팅을 시켜주면 접근이 가능하다. disk1에 있는 /user/b의 b에 disk3의 루트디렉토리(/)를 마운팅 시키면 접근이 가능해진다.
Access Methods
시스템이 제공하는 파일 정보의 접근방식이다.
순차(Sequential access)
카세트 테이프처럼 순차적으로 접근하는 방식이다. a,b,c 순서로 저장되어 있는데, a 다음 c를 보고 싶더라도 a,b,c 이 순서대로 접근해야한다. 읽거나 쓰면 offset은 자동적으로 증가된다.
직접(Direct access, Random access)
LP판 처럼 임의의 순서로 접근할 수 있다. a,b,c 순서로 저장되어 있는데, a 다음 c가 보고 싶으면 바로 a에서 c로 접근이 가능하다.
정리
파일 시스템의 기본 개념들에 대해 정리했다. 유닉스, 리눅스 모두 모든 시스템은 파일단위로 진행된다. 디렉토리도 파일이다. 다음 챕터에서는 파일 시스템의 실질적인 수행과정에 대해 정리할 예정이다.
운영체제 시리즈는 반효경 교수님의 운영체제 강의 와 "운영체제와 정보기술의 원리"라는 책을 바탕으로 정리한 내용입니다.