✓ 파일과 디렉터리
1. 파일
- 하드 디스크가 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합
- 의미있고 관련있는 정보를 모은 논리적 단위
- 구성: 이름, 파일을 실행하기 위한 정보, 파일 관련 부가 정보 (속성 attribute 혹은 메타데이터 metadata)
2. 디렉터리
- 1단계 디렉터리 single-level directory: 하나의 디렉터리만 존재 (옛날 운영체제)
- 트리 구조 디렉터리 tree-structured directory: 최상위 디렉터리(루트 디렉터리)가 있고 아래에 여러 서브 디렉터리가 있는 구조
✏️ 절대 경로와 상대 경로
- 절대 경로: 루트 디렉터리 부터 시작하는 경로 (예: /home/minchul/a.sh)
- 상대 경로: 현재 디렉터리 부터 시작하는 경로 (예: guest/d.jpg)
💡 상대 경로를 나타내는 또 다른 방법
- 현재 작업 디렉터리는 마침표(.)로 나타냄
- 상위 디렉터리(부모 디렉터리)는 마침표 두 번(..)으로 나타냄
→ 절대경로가 "/home/minchul/b.c" 인 경우 현재 작업 디렉터리가 "/home"인 상황에서 상대경로를 "./minchul/b.c"처럼 나타낼 수 있다
+ 디렉터리 엔트리
- 디렉터리는 보조기억장치에 테이블 형태로 정보가 저장된다.
- 각각 엔트리(행)에 담기는 정보는 파일 시스템마다 차이가 있다.
- 엔트리만 보아도 해당 디렉터리에 무엇이 담겨 있는지, 보조기억장치의 어디에 있는지를 간접적으로 알 수 있다.
✓ 파일 시스템
✏️ 파일 시스템: 파일과 디렉터리를 보조기억장치에 일목요연하게 저장하고 접근할 수 있게 하는 운영체제 내부 프로그램
파티셔닝과 포매팅
❗️새 하드디스크 또는 SSD의 경우 사용되기 전 파티션을 나누는 작업(파티셔닝)과 포맷 작업(포매팅)을 거쳐야 한다.
- 파티셔닝 partitioning: 저장 장치의 논리적인 영역을 구획하는 작업.
- 포매팅 formatting: 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고 새로운 데이터를 쓸 준비를 하는 작업.
파일 할당 방법
운영체제는 파일과 디렉터리를 블록 단위로 읽고 쓴다.
- 연속 할당(오늘날 더이상 사용 안 됨)
- 보조기억장치 내 연속적인 블록에 파일을 할당.
- 파일에 접근하기 위해서는 파일의 첫 번째 블록 주소와 블록 단위의 길이만 알면 된다.
- 구현이 단순하나 외부 단편화를 야기한다.
- 불연속 할당
- 연결 할당
- 각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당하는 방식.
- 파일을 이루는 데이터를 연결 리스트로 관리하는 것.
- 외부 단편화 문제를 해결하지만 반드시 첫 번째 블록부터 하나씩 차례대로 읽어야 하기 때문에 임의 접근 속도가 매우 느림
- 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근할 수 없다.
- 색인 할당
- 파일의 모든 블록 주소를 색인 블록 index block이라는 하나의 블록에 모아 관리하는 방식.
- 디렉터리 엔트리에 파일 이름과 더불어 색인 블록 주소가 명시됨.
- 연결 할당
파일 시스템 살펴보기
📖 FAT 파일시스템
- 연결 할당의 단점을 보완한 파일 시스템.
- 각 블록에 포함된 다음 블록의 주소들을 한데 모아 테이블 형태(파일 할당 테이블 File Allocation Table)로 관리 .
- 임의 접근에 유리하며 저용량 저장 장치용 파일 시스템으로 많이 이용된다
- 버전에 따라 FAT12, FAT16, FAT32. (뒤에 오는 숫자는 블록을 표현하는 비트 수)
📖 유닉스 파일 시스템
- 색인 할당 기반.
- i-node(index-node): 유닉스 파일 시스템의 색인 블록. 파일 속성 정보 + 열 다섯 개의 블록 주소
- direct block: 첫 열 두 개에는 직접 블록 주소를 저장 (파일 데이터가 저장된 블록 주소가 직접적으로 명시)
- single indirect block : 부족하면 열세 번째 주소에 단일 간접 블록 주소를 저장 (+ double/triple)
+ 그 밖에 파일 시스템: 윈도우 NTFS (NT 파일 시스템), 리눅스 ext 파일 시스템 등
+ 저널링 파일 시스템
✏️ 저널링 기법 journaling : 작업 로그를 통해 시스템 크래시가 발생했을 때 빠르게 복구하는 방법
- 작업 직전 파티션의 로그 영역에 수행하는 작업(변경 사항)에 대한 로그를 남긴다
- 로그를 남긴 후 작업을 수행
- 작업이 끝나면 로그 삭제
+ 마운트
저장 장치의 파일 시스템에서 다른 저장장치의 파일 시스템에 접근할 수 있도록 파일 시스템을 편입 시키는 작업
'컴퓨터 & 코딩 > CS' 카테고리의 다른 글
[혼공학습단 10기][혼공컴운] 6주차 미션 (0) | 2023.07.29 |
---|---|
[혼공학습단 10기][혼공컴운] 5주차 미션 (0) | 2023.07.23 |
[혼공학습단 10기][혼공컴운] 가상 메모리 - 페이지 교체와 프레임 할당 (0) | 2023.07.21 |
[혼공학습단 10기][혼공컴운] 가상 메모리 - 연속 메모리 할당 / 페이징을 통한 가상 메모리 관리 (0) | 2023.07.21 |
[혼공학습단 10기][혼공컴운] 교착 상태 (0) | 2023.07.18 |