파일 시스템은 시스템 상 파일들의 저장, 접근, 공유 등 모든 관리를 총괄하는 시스템이다. 사용자와 보조기억장치 간의 인터페이스를 제공하여 사용자가 직접적으로 파일에 접근하는 것을 막고 대신해서 파일 관련 작업들을 수행해준다.
파일(Files)
연관된 정보들을 모아놓은 논리적 저장 단위. 운영체제(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): 가리키는 파일의 경로를 담은 링크. 해당 파일이 삭제되면 고아 링크가 된다.
파일시스템(File System)
파일 시스템(File System)
파일 시스템은 시스템 상 파일들의 저장, 접근, 공유 등 모든 관리를 총괄하는 시스템이다. 사용자와 보조기억장치 간의 인터페이스를 제공하여 사용자가 직접적으로 파일에 접근하는 것을 막고 대신해서 파일 관련 작업들을 수행해준다.
파일(Files)
연관된 정보들을 모아놓은 논리적 저장 단위. 운영체제(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): 가리키는 파일의 경로를 담은 링크. 해당 파일이 삭제되면 고아 링크가 된다.
파일 할당 방식, 파일시스템 종류