: 보조기억장치에 저장된 관련 정보의 집합 → 의미있고, 관련있는 정보를 모은 논리적 단위
모든 파일은 이름, 실행 정보, 부가 정보(속성, 메타데이터) 의 정보로 이루어져 있음
파일을 다루는 모든 작업 (파일의 생성, 삭제, 열기, 닫기, 읽기, 쓰기) → 운영체제는 시스템 호출 지원
파일을 관리하기 위해 이용됨
자연스럽게 생긴 개념이 “경로”
생성, 삭제, 열기, 닫기, 읽기 → 운영체제는 시스템 호출 지원
이 파일 구조 사진을 보고 예시를 들어보겠습니다!
같은 디렉토리 내에는 같은 이름 파일 X, but 경로가 다르다면 같은 이름 가능
❓ 절대 경로 : 루트 디렉토리에서 자기 자신까지 이르는 고유한 경로 → /home/minchul/a.sh❓ 상대 경로 : 현재 위치한 디렉토리에서 시작하는 경로
💡 그럼 파일과 디렉터리는 다른 별개의 존재인가??→ 디렉터리는 “특별한 형태의 파일”
-
파일이 내부에 해당 파일과 관련된 정보를 가지고 있다면, 디렉터리는 내부의 대상과 관련된 정보를 가짐
파일시스템마다 다를 수 있음, 위치를 유추할 수 있는 정보가 담긴다는게 포인트
아래 파일 구조를 예시로 들겠습니다.
home 디렉터리 테이블을 보면 다음과 같이 구성되어있습니다.
이때 . 은 현재 디렉터리 home을 의미, ..은 상위 디렉토리를 의미합니다.
다음과 같이 home 디렉터리에서 minchul 디렉터리의 저장된 곳을 알 수 있기에 이동할 수 있습니다.
💡 파일 시스템?? 파일과 디렉토리를 보조기억장치에 정리하고, 접근 할 수 있게 해주는 운영체제의 내부 프로그램
다양한 종류가 있음, 한 컴퓨터에서 여러 파일시스템 사용가능
파일 시스템은 보조기억장치에 어떻게 저장하고 어떻게 저장된 파일,디렉터리에 접근??
사용된 적이 한번도 없는 새 하드디스크, SSD가 있다! → 곧바로 파일을 생성하거나, 저장 할 수 없다!
→ 보조 기억 장치를 사용하려면, 파티션을 나누는 작업인 파티셔닝과 포맷을 하는 작업인 포매팅을 거쳐야 함
: 저장 장치의 논리적인 구획을 나누는 작업
나누어진 영역 하나 하나를 파티션이라 함
: 파일 시스템을 설정하여 어떻게 파일을 저장,관리 할것인지 결정 / 새 데이터 쓸 준비
→ 이때 어떤 종류의 파일 시스템을 사용할지 결정
파일 시스템은 여러 종류가 있고, 파티션 마다 다르게 설정 가능
-
저장 장치를 완전히 삭제하는 것이 아닌가요??
저수준 포매팅 : 생성 당시 공장에서 수행되는 물리적 포매팅
논리적 포매팅 : 파일 시스템을 생성하는 포매팅
-
운영체제는 파일과 디렉터리를 블록 단위로 읽고 씀.
- 하드디스크의 가장 작은 단위는 섹터
- 하나 이상의 섹터를 묶어 블록으로 저장 → 개수도 많고 크기도 작아서
- 하나의 파일이 보조기억 장치에 저장 될땐, 하나 이상의 블록으로 저장
오늘 날 사용되는 방법은 불연속 할당
가장 단순한 방식, 보조 기억 장치 내에 연속적으로 블록을 할당 파일의 첫번째 블록 주소와, 블록의 길이만 알면 파일에 접근이 가능함
단점 : 외부 단편화 야기
❓ 외부 단편화?D,F 삭제해도 크기가 7 이상은 못담는 것 (블록이 남아도)
파일이 이루는 데이터를 연결 리스트로 관리 → 연속할당의 문제 해결
10 → 5 → 13 → 2 처럼 4개의 블럭이 할당된다고 할 때, 내부에 다음 블럭의 위치를 가짐 (-1은 마지막 이라는 뜻)
단점 :
- 첫 번째 블럭 부터 읽어야 합니다. → 임의 접근 속도가 매우 느림 ex)영화
- 하드웨어 고장, 오류 발생 시 해당 블록 이후 블록은 접근 불가능
→ 살짝 변형해서 사용하기로 함 → FAT
파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 저장
색인 할당을 기반으로 만든 파일 시스템 → 유닉스 파일 시스템
연결할당의 단점을 보완한 파일 시스템임
색인 할당 기반
- 블록 주소 중, 열 두개에는 직접 블록 주소를 저장합니다.
- 1의 내용으로 충분하지 않다면 열 세번째 주소에 단일 간접 블록 주소를 저장합니다.
- 2의 내용으로 충분하지 않다면 열 네번째 주소에 이중 간접 블록 주소를 저장합니다.
- 3의 내용으로 충분하지 않다면 열 다섯번째 주소에 삼중 간접 블록 주소를 저장합니다.