15.1 파일과 디렉터리
15.1.1 파일
컴퓨터를 이용할 때는 파일 단위로 이용한다.
파일; file: 보조기억장치에 저장된 관련 정보의 집합을 의미
- 의미 있고 관련 있는 정보를 모은 논리적 단위
파일을 이루는 정보
- 이름
- 파일을 실행하기 위한 정보
- 파일 관련 부가 정보: 속성(attribute) 또는 메타데이터(metadata)
파일 속성 중 파일 유형은 운영체제가 인식하는 파일 종류를 나타냄.
- 확장자; extension을 사용해서 파일 이름 뒤에 붙어서 파일 유형을 알려줌
파일 연산을 위한 시스템 콜
파일을 다루는 모든 작업은 운영체제에 의해서만 이뤄짐, 운영체제가 아래 연산을 위한 시스템 콜을 제공
파일 생성, 삭제, 열기, 닫기, 읽기, 쓰기
15.1.2 디렉터리
- 파일들을 일목요연하게 관리하기 위해 디렉터리; directory를 이용할 수 있다.
- 윈도우에서는 디렉터리를 폴더; folder 라 부름
컴퓨터 용량이 커지니, 저장할 수 있는 파일도 많아지고, 1단계 디렉터리로는 많은 파일을 관리하기가 어렵기 때문에
- 여러 계층을 가진 트리 구조 디렉터리가 생겨남.
자연스레 생긴 개념이 바로 경로(Path) 이다, 디렉터리를 이용해 파일 위치, 나아가 파일 이름을 특정 짓는 정보
- 절대 경로: 루트 디렉터리(
/
)부터 시작하는 경로 - 상대 경로: 현재 디렉터리부터 시작하는 경로
- 절대 경로: 루트 디렉터리(
디렉터리 연산을 위한 시스템 콜
- 파일 연산을 위해서 운영체제가 시스템 콜을 제공하는 것 처럼, 디렉터리 연산을 위해서도 시스템 콜 제공
- 디렉터리 생성, 삭제, 열기, 닫기, 읽기
- 많은 운영체제에서는 디렉터리를 그저 ‘특별한 형태의 파일’로 간주
- 즉, 디렉터리도 파일입니다.
- 단지 포함된 정보가 조금 특별할 뿐
- 디렉터리는 내부에 해당 디렉터리에 담겨 있는 대상과 관련된 정보를 담고 있다.
- 이 정보는 보통 테이블(표) 형태로 구성됩니다. 즉, 디렉터리는 보조기억장치에 테이블 형태의 정보로 저장
- 디렉터리에 포함된 대상의 이름과 그 대상이 보조기억장치 내에 저장된 위치를 유추할 수 있는 정보가 담긴다
- 디렉터리 엔트리만 보아도 해당 디렉터리에 무엇이 담겨 있는지, 그것들은 보조기억장치의 어디에 있는지를 직간접적으로 알수 있다.
15.2 파일 시스템
- 파일 시스템: 파일과 디렉터리를 보조기억장치에 일목요연하게 저장, 접근할 수 있게 하는 운영체제 내부 프로그램
15.2.1 파티셔닝과 포매팅
- 보조기억장치를 사용하려면 파티션을 나누는 작업(파티셔닝)과 포맷 작업(포매팅) 을 거쳐야 한다.
- 파티셔닝pirtioning은 저장 장치의 논리적인 영역을 구획하는 작업을 의미
- 칸막이로 영역을 나누는 작업이 바로 파티셔닝
- 용량이 큰 저장 장치를 하나 이상의 논리적인 단위로 구획
- 파티셔닝 작업을 통해 나누어진 영역 하나하나를 파티션; partion
- 포매팅; fomating: 파일 시스템을 설정하여 어떤 방식으로 파일을 저장 및 관리할 것인지를 결정하고, 새로운 데이터를 쓸 준비를 하는 작업
- 즉, 어떤 종류의 파일 시스템을 사용할지는 바로 이때 결정
- 포매팅의 종류에는 엄밀히 말하면 저수준 포매팅과 논리적 포매팅이 있습니다.
- 저수준 포매팅: 저장 장치를 생성할 당시 공장에서 수행되는 물리적인 포매팅
- 고수준 포매팅: 파일 시스템을 생성하는 포매팅
- 여기서 설명하는 포매팅은 고수준 포매팅
15.2.2 파일 할당 방법
- 운영체제는 파일과 디렉터리를 블록; block 단위로 읽고 쓴다.
- 즉, 하나의 파일이 보조기억장치에 저장될 때는 하나 이상의 블록에 걸쳐 저장
- 하드 디스크의 가장 작은 저장 단위는 섹터이지만,
- 운영체제는 하나 이상의 섹터를 블록이라는 단위로 묶은 뒤 블록 단위로 파일과 디렉터리를 관리
- 파일 시스템이 모든 섹터를 관리하기에는 개수가 너무 많고 크기도 작기 때문
- 블록 안에 적힌 번호는 블록의 위치를 식별하는 주소
- 크기가 작은 파일은 적은 수의 블록에 걸쳐 저장될 것이고, 크기가 큰 파일은 여러 블록에 걸쳐 저장
15.2.2.1 연속 할당, contiguous allocation
- 연속적인 블록에 파일을 할당하는 방식
- 외부 단편화 야기
15.2.2.1 연결 할당, linked allocation
- 연속 할당의 문제를 해결할 수 있는 방식
- 연결 할당은 각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당하는 방식
- 파일을 이루는 데이터를 연결 리스트로 관리
- 연결 할당은 불연속 할당의 일종이기에 파일이여러 블록에 흩어져 저장되어도 무방
- ‘어떤 블록의 주소를 저장한다’는 말은 ‘그 블록을 가리킨다’는 말과 같다.
- 어떤 블록의 주소를 알면 해당 블든지 접근할 수 있기 때문
- C언어의 포인터와 같은 개념
단점 1. 반드시 첫 번째 블록부터 하나씩 차례대로 읽어야 한다.
- 파일의 중간 부분부터 접근하고 싶어도, 반드시 파일의 첫 번째 블록부터 접근하여 하나씩 차례대로 읽어야 한다.
- 파일 내의 임의 접근; random access 속도가 매우 느림
단점 2. 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근할 수 없다.
하나의 블록 안에 파일 데이터와 다음 블록 주소가 모두 포함되어 있다 보니,
블록에 하나라도 문제가 발생하면, 그 블록 이후의 블록에 접근할 수 없다는 것
연결 할당을 변형한 것이 오늘날까지도 많이 사용하는 FAT 파일 시스템 이다.
15.2.2.3 색인 할당, indexed allocation
- 색인 할당은 파일의 모든 블록 주소를 색인 블록; index block 이라는 하나의 블록에 모아 관리하는 방식
- 색인 할당은 연결 할당과는 달리 파일 내 임의의 위치에 접근하기 쉽다.
- 파일의 i번째 데이터 블록에 접근하고 싶다면 색인 블록의 i번째 항목이 가리키는 블록에 접근하면 되기 때문
- 색인 할당 파일 시스템에서는 디렉터리 엔트리에 파일 이름과 더불어 색인 블록 주소를 명시
- 색인 할당을 기반으로 만든 파일 시스템이 유닉스 파일 시스템 이다.
15.2.3 파일 시스템 살펴보기
- 다양한 파일 시스템이 있지만 여러 전공서에서 공통으로 소개하는 파일 시스템은 크게 두 가지
- 하나는 USB 메모리, SD 카드 등의 저용량 저장 장치에서 사용되는 FAT 파일 시스템
- 다른 하나는 유닉스 계열 운영체제에서 사용되는 유닉스 파일 시스템
15.2.3.1 FAT 파일 시스템
- 각 블록에 포함된 다음 블록의 주소들을 한데 모아 테이블 형태로 관리하면 연결 할당 방식의 단점 해소
- 이러한 테이블을 파일 할당 테이블 FAT; File Allocation Table, FAT 라고 한다.
15.2.3.2 유닉스 파일 시스템
- 색인 할당은 색인 블록을 기반으로 파일의 데이터 블록들을 찾는 방식이라고 소개했습니다.
- 유닉스 파일 시스템에서는 이 색인 블록을 i-node; index-node 라 한다.
- i-node에는 파일 속성 정보와 열다섯 개의 블록 주소가 저장될 수 있다.
- 유닉스 파일 시스템에서 파일 속성 정보는 i-node에 표현
- 유닉스 파일 시스템에는 파일마다 이러한 i-node가 있고, i-node마다 번호가 부여되어 있다.
- i-node들은 다음과 같이 파티션 내 특정 영역에 모여 있다.
- i-node 영역에 i-node들이 있고, 데이터 영역에 디렉터리와 파일들이 있다.
- i-node 하나는 열다섯 개의 블록을 차지하는 파일까지 가리킬 수 있다.
- 하지만 블록을 20개, 30개, 그 이상 차지하는 큰 파일도 존재한다.
- i-node 하나만으로는 파일의 데이터 블록을 모두 가리킬 수 없다.
- 유닉스 파일 시스템은 이러한 문제를 해결
- 첫째, 블록 주소 중 열두 개에는 직접 블록 주소를 저장합니다.
- 직접 블록; direct block: 파일 데이터가 저장된 블록
- 둘째, ‘첫째’ 내용으로 충분하지 않다면 열세 번째 주소에 단일 간접 블록 주소를 저장
- 단일 간접 블록 single indirect block: 파일 데이터를 저장한 블록 주소가 저장된 블록
- 셋째, ‘둘째’ 내용으로 충분하지 않다면 열네 번째 주소에 이중 간접 블록 주소를 저장
- 이중 간접 블록; double indirect block:란 데이터 블록 주소를 저장하는 블록 주소가 저장된 블록을 의미
- 넷째, ‘셋째’ 내용으로 충분하지 않다면 열다섯 번째 주소에 삼중 간접 블록 주소를 저장
- 파일 시스템을 아우르는 개념은 방대
- 파일 시스템만을 다루는 전공서도 많다.
- 윈도우 운영체제에서 사용되는 NT 파일 시스템(NTFS)
- 리눅스 운영체제에서 사용되는 ext 파일 시스템
15.3 저널링 파일 시스템
15.4 마운트
- ‘저장 장치를 마운트한다’
- 한 저장 장치의 파일 시스템에서 다른 저장 장치의 파일 시스템에 접근할 수 있도록 파일 시스템을 편입시키는 작업을 의미
Reference
- 혼자 공부하는 컴퓨터구조+운영체제 (강민철, 한빛미디어) https://product.kyobobook.co.kr/detail/S000061584886