파일과 디렉터리
1) 파일
파일이란 하드 디스크나 SSD와 같은 보조기억장치 저장된 관련 정보의 집합을 의미한다.
모든 파일에는 이름과 파일을 실행하기 위한 정보, 그리고 파일 관련 부가정보가 있다.
이러한 부가 정보를 속성 또는 메타데이터라고 부른다.
파일 속성과 유형
파일 속성 중 파일 유형은 운영체제가 인식하는 파일 종류를 나타낸다.
파일 유형을 알리기 위해 가장 흔히 사용하는 방식은 파일 이름 뒤에 붙는 확장자를 이용하는 것이다.
파일 연산을 위한 시스템 호출
운영체제는 파일 연산을 위한 시스템 호출을 제공한다.
- 파일 생성
- 파일 삭제
- 파일 열기
- 파일 닫기
- 파일 읽기
- 파일 쓰기
2) 디렉터리
파일들을 관리하기 위해 디렉터리를 이용할 수 있다. 윈도 운영체제에서는 폴더라고 부른다.
이와 같은 디렉터리 구조를 1단계 디렉터리라고 한다.

1단계 디렉터리로는 많은 파일을 관리하기 어렵기에 여러 계층을 가진 트리 구조 디렉터리가 생겨났다. 최상위 디렉터리는 루트 디렉터리라고 부르고 슬래시(/) 로 표현한다.

이렇게 되면서 경로라는 개념이 생기게 되었다.
절대 경로와 상대 경로
모든 파일은 루트 디렉터리에서 자기 자신까지 이르는 고유한 경로를 갖고 있고 이러한 경로를 절대 경로라고 부른다. 슬래시 기호는 루트 디렉터리를 표시할 뿐만 아니라 디렉터리와 디렉터리 사이의 구분자로 사용한다.
경로를 나타내는 또 다른 대중적인 방식으로 상대경로가 있다. 절대 경로가 루트 디렉터리부터 시작하는 경로라면 상대 경로는 현재 디렉터리부터 시작하는 경로이다.
디렉터리 연산을 위한 시스템 호출
운영체제가 파일 연산을 위한 시스템 호출을 제공하는 것처럼 운영체제는 디렉터리 연산을 위한 시스템 호출도 제공한다.
- 디렉터리 생성
- 디렉터리 삭제
- 디렉터리 열기
- 디렉터리 닫기
- 디렉터리 읽기
디렉터리 엔트리
파일이 내부에 해당 파일과 관련된 정보를 담고 있다면, 디렉터리는 내부에 해당 기렉터리에 담겨있는 대상과 관련된 정보를 담고 있다. 이러한 정보는 보통 표의 형태로 구성되며, 즉 디렉터리는 보조기억장치에 테이블 형태의 정보로 저장된다.
각각의 엔트리에 담기는 정보는 파일 시스템마다 차이가 있다. 즉, 디렉터리 엔트리만 보아도 해당 디렉터리에 무엇이 담겨있는지, 그것들이 보조기억장치의 어디에 있는지를 알 수 있다.


디렉터리 엔트리를 통해 보조기억장치에 저장된 위치를 알 수 있기 때문에 home 디렉터리에서 minchul 디렉터리가 저장된 곳을 알 수 있고 그곳으로 이동할 수도 있다. 마찬가지로 minchul 디렉터리 엔트리에는 디렉터리에 속한 파일들의 이름과 이들의 위치를 알 수 있는 정보 등이 포함되어 있기에 파일들이 보조기억장치 내에 저장된 위치를 알 수 있고 실행할 수 있는 것이다.
파일 시스템
파일 시스템은 파일과 디렉터리를 보조기억장치에 저장하고 접근할 수 있게 해주는 운영체제 내부의 프로그램이다. 이러한 파일 시스템은 대표적으로 FAT 파일 시스템과 유닉스 파일 시스템이 있다.
1) 파티셔닝과 포매팅
보조기억장치를 사용하려면 파티션을 나누는 작업(파티셔닝)과 포맷작업(포매팅)을 거쳐야한다.
파티셔닝은 저장 장치의 논리적인 영역을 구획하는 작업을 의미한다. 서랍을 칸막이로 나누어 정리하듯, 칸막이로 영역을 나누는 작업을 파티셔닝이라고 한다. 이렇게 파티셔닝 작업을 통해 나누어진 영역 하나하나를 파티션이라고 한다.
포매팅은 저장 장치를 완전히 삭제하는 것이 아니다. 포매팅이란 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지 결정하고, 새로운 데이터를 쓸 준비를 하는 작업을 의미한다.
2) 파일 할당 방법
운영체제는 파일과 디렉터리를 블록 단위로 읽고 쓴다.
하나의 파일이 보조기억장치에 저장될 때는 하나 이상의 블록에 걸쳐 저장된다. 하드 디스크의 가장 작은 저장 단위는 섹터이지만, 운영체제는 하나 이상의 섹터를 블록이라는 단위로 묶은 뒤 블록 단위로 파일과 디렉터리를 관리한다.
이러한 상황에서 파일을 보조기억장치에 할당하는 방법에는 두 가지가 있다. 연속 할당과 불연속 할당이다.
불연속 할당에는 다시 연결 할당과 색인 할당이 있다.
연속 할당
연속 할당은 가장 단순한 방식으로 보조기옥장치 내에 연속적인 블록에 파일을 할당하는 방식이다. 연속으로 할당된 파일에 접근하기 위해서는 파일의 첫 번째 블록 주소와 블록 단위의 길이만 알면 된다. 따라서 연속 할당을 사용하는 파일 시스템에서는 디렉터리 엔트리에 파일 이름과 더불어 첫 번째 블록 주소와 블록 단위의 길이를 명시한다.
연속 할당 방식은 파일을 그저 연속적으로 저장하는 방식이기에 구현이 단순하다는 장점이 있지만, 외부 단편화를 야기한다는 치명적인 문제가 있다.
연결 할당
연속 할당의 문제를 해결할 수 있는 방식이 연결할당이다. 연결할당은 각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당하는 방식이다. 즉 파일을 이루는 데이터를 연결리스트로 관리한다.
연결 할당을 사용하는 파일 시스템에서는 디렉터리 엔트리에 연속할당과 마찬가지로 파일 이름과 함께 첫 번째 블록 주소와 블록 단위의 길이를 명시한다.
하지만 이러한 연결할당은 외부 단편화를 해결하지만 또 다른 단점을 갖는다.
첫째, 반드시 첫 번째 블록부터 하나씩 차례대로 읽어야 한다.
파일의 중간 부분부터 접근하고 싶어도 반드시 파일의 첫 번째 블록부터 접근하여 하나씩 차례대로 읽어야 한다. 다시 말해 파일 내 임의의 위치에 접근하는 속도, 즉 임의 접근 속도가 매우 느리다.
둘째, 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근할 수 없다.
하나의 블록 안에 파일 데이터와 다음 블록 주소가 모두 포함되어있다 보니 하드웨어 고장이나 오류로 인해 파일을 이루는 블록에 하나라도 문제가 발생하면 그 블록 이후의 블록에 접근할 수 없게 된다.
색인 할당
연결 할당은 블록 일부에 다음 블록 주소를 표현하는 방식이다. 반면 색인 할당은 파일의 모든 블록 주소를 색인블록이라는 하나의 블록에 모아 관리하는 방식이다.
색인 블록 안에 파일을 구성하는 블록 주소가 있으므로 색인 블록만 알면 해당 파일 데이터에 접근할 수 있다. 그렇기에 색인 할당을 사용하는 파일 시스템에서는 디렉터리 엔트리에 파일 이름과 더불어 색인 블록 주소를 명시한다.
'Computer Science > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] Chapter 14 가상 메모리 (0) | 2024.01.25 |
---|---|
[컴퓨터 구조] Chapter 13 교착 상태 (1) | 2024.01.01 |
[컴퓨터 구조] Chapter 12 프로세스 동기화 (1) | 2023.12.30 |
[컴퓨터 구조] Chapter 11 CPU 스케줄링 (1) | 2023.12.27 |
[컴퓨터 구조] Chapter 10 프로세스와 스레드 (0) | 2023.12.16 |