⬛ 파일 시스템(File System)
파일 시스템은 시스템 상 파일들의 저장, 접근, 공유 등 모든 관리를 총괄하는 시스템이다. 사용자와 보조기억장치 간의 인터페이스를 제공하여 사용자가 직접적으로 파일에 접근하는 것을 막고 대신해서 파일 관련 작업들을 수행해준다.
⬛ 파일(File)
연관된 정보들을 모아놓은 논리적 저장 단위. 운영체제(OS)는 저장 장치의 물리적 특징을 추상화하여 파일로 맵핑하여 관리한다. 일반적으로 비 휘발적인 특성을 가져 전원이 끊어져도 영구적으로 보존할 수 있다.
◾ 파일 속성
이름: 사용자가 읽고 식별할 수 있는 파일 이름
식별자: 파일 시스템에서 파일들을 식별하는 고유 번호
타입: 실행파일, 텍스트파일, 소스파일 등 여러 타입 존재
Windows는 이름에 확장자 제공, UNIX는 파일 내에 매직넘버(Magic number) 제공
위치: 장치 내에서 파일의 위치를 가리키는 포인터
크기: 파일의 크기
◾ 파일 연산
시스템 콜을 통해 파일 관련 여러 연산을 수행할 수 있고 수행 단위에 따라 파일 단위 작업과 레코드 단위 작업으로 분류할 수 있다.
파일 단위 작업
open, close, copy, rename, destroy ...
레코드 단위 작업
read, write, update, insert, delete ...
운영체제는 Open-file table을 사용해 열린 파일들을 관리한다. 파일을 연 횟수, 디스크에서 위치, 접근 관한 등이 기록된다. 각 프로세스들은 각자 file descriptor(fd) table을 가지고 연 파일들의 fd를 관리한다.
◾ 파일 접근 방법
순차 접근
기본적인 접근 방법으로 file pointer를 따라 파일 정보가 차례차례 처리된다. read(), write()는 자동으로 file pointer를 변경시키고 lseek()를 사용해 file pointer를 조정할 수 있다.
직접 접근
file pointer를 직접적으로 조작하여 특별한 순서 없이 빠르게 레코드를 읽고 쓸 수 있다. 대규모 정보를 접근하는 데이터베이스 관리에서 주로 사용된다.
⬛ 디렉터리(Directory)
관련된 파일이나 디렉터리들의 집합으로 사용자는 이를 통해 파일들을 구조화할 수 있다. 디렉터리 또한 파일이나 디렉터리 정보를 담은 하나의 파일이다.
◾ 1단계 디렉터리
모든 파일이 동일한 디렉터리에서 관리되는 가장 기본적인 구조. 각 파일은 유일한 이름을 가져야 하므로 다수의 사용자가 사용할 경우 제약이 따른다.
◾ 2단계 디렉터리
사용자별로 디렉터리를 생성한 구조. MFD(Master File Directory)가 있고 그 아래에 사용자별로 할당되는 UFD(User File Directory)가 있다. 파일 참조 시 각 UFD만 탐색하므로 사용자별로 파일 이름이 중복될 수 있다.
◾ 트리 구조 디렉터리
하나의 루트 디렉터리와 다수의 서브 디렉터리로 구성된 구조이며 Dos, Windows, Unix 운영체제에서 사용한다. 서로 다른 디렉터리 내에서는 파일이나 디렉터리의 이름이 중복될 수 있다. 파일 탐색 시 절대 경로(루트 디렉터리를 기준) 또는 상대 경로(현재 디렉터리 기준)를 이용할 수 있다.
◾ 비순환 그래프 디렉터리
디렉터리들이 서로 파일을 공유할 수 있도록 허용하는 구조. 절대 경로/상대 경로를 사용해 링크라는 디렉터리 항목을 만들 수 있다. 공유된 파일을 삭제하는 경우 빈 곳을 가리키는 고아 포인터(dangling pointer)가 발생할 수 있다.
◾ 일반 그래프 디렉터리
디렉터리 구조에서 순환(Cycle)을 허용하는 구조. 탐색 알고리즘이 간단해 파일 접근에 용이하나 무한 루프에 빠질 가능성도 있다.
하드 링크(Hard link): 해당 파일을 직접적으로 가리키는 링크.
심볼릭 링크(Symbolic link): 가리키는 파일의 경로를 담은 링크. 해당 파일이 삭제되는 고아 링크가 된다.
📝 요약
◾ 파일 시스템이란 시스템 상 파일들의 모든 관리를 총괄하는 시스템이다.
◾ 파일이란 연관된 정보들을 모아놓은 논리적 저장 단위로 저장장치의 데이터를 추상화한 것이다.
◾ 디렉터리란 관련된 파일이나 디렉터리들의 정보를 담은 또 다른 파일이다.
📃 Ref
'CS > OS' 카테고리의 다른 글
[OS] 시스템 콜(System Call) (0) | 2021.09.27 |
---|