파일 시스템과 저장 장치
1) 파일과 저장 장치
- 파일 : 정보를 저장하고 관리하는 논리적 단위
- 컴퓨터 시스템 관점에서 정보를 저장하는 컨테이너
→ 0과 1로 이루어진 데이터 덩어리로 영구 저장 장치나 일시 저장 장치에 저장
- 운영체제는 파일 생성, 기록, 읽기 모든 과정을 통제
2) 디스크 장치
#1 디스크 매체
- 정보가 저장되는 원형 판 : 플래터
- 플래터 한 면당 하나의 헤드를 가지며 플래터에서 정보를 읽고 저장하는 장치
#2 디스크 제어 모듈
- 프로세서 : 디스크 메체 모듈 제어, 물리적인 디스크 액세스 진행
- 디스크 캐시 : 호스트와 디스크 매체 모듈 사이의 중간 버퍼 역할
3) 섹터/트랙/실린더/블록
#1 섹터
- 디스크에 정보가 저장되는 최소 단위
#2 트랙
- 플래터에 정보가 저장되는 하나의 동심원
- 여러 개의 섹터들 포함
#3 실린더
- 같은 반지름을 가진 모든 트랙 집합
- 8개의 헤드를 가진 디스크 → 8개의 트랙을 묶어 실린더
#4 블록
- 운영체제가 파일 데이터를 입출력하는 논리적 단위
- 몇 개의 섹터로 구성
4) 파일 입출력 주소
- 디스크 장치는 디스크 물리 주소 사용
→ 디스크의 섹터 위치를 나타 내는 주소 = 실린더, 헤드, 섹터 번호로 구성
- 운영체제는 논리 블록 주소 사용
→ 저장 매체를 1차우너의 연속된 데이터 블록들로 간주
→모든 블록들을 0번부터 시작하는 블록 번호 매김
- 응용프로그램은 파일 내 바이트 주소 사용
5) 파일 주소 변환
- 각 장치들이 파일에 대한 주소를 사용하는 법이 다르므로 그에 대한 주소 변환이 필요
#1 파일 주소 변환
- 파일 내 바이트 주소 → 논리 블록 주소 → CHS 물리 주소
- 운영체제가 논리 블록 주소로 변환
- 디스크 장치의 펌웨어를 통해 논리 블록 주소를 CHS 물리 주소로 변환
6) 주소 계층화 의미
- 각 계층의 독립적 구현이 용이
- 응용프로그램 개발 시 파일을 바이트 단위로 보고 입출력하는 코드 작성 가능
→ 운영체제에 관계없이 파일 입출력 개발 가능
→ 저장 매체의 종류나 특징, 저장 위치와 무관하게 작성 가능
- 운영체제 개발 시 저장 매체의 종류나 하드웨어 특징에 관계없이 구현 가능
- 저장 장치 개발 시 프로그램이나 운영체제 특성과 무관하게 저장 장치 개발 가능
7) 파일 시스템의 정의와 범위
- 파일 시스템 : 저장 매체에 파일을 생성하고 저장하고 읽고 쓰는 운영체제의 기능 전체
- 파일 시스템의 논리 구조 - 수십만개의 파일들을 다루기위한 계층 구조
- 저장소에 파일 시스템 구축 - 저장 매체에 파일을 저장하는 방법과 위치 구성
- 커널 내 파일 입출력 구현 - 파일을 읽고 쓰는 등의 기능 구현
- 응용 프로그램을 위한 시스템 호출 제공
8) 파일 읽기 과정
- 파일 읽기에서 각 계층의 역할이 구분
- 운영체제는 응용프로그램이 저장 장치의 종류, 구조, 위치 등 물리적 특성과 무관하게 입출력 지원
- 디스크 디바이스 드라이버가 파일에 대한 논리적 공간과 물리적 공간 분리
- 파일 데이터는 여러 번의 복사를 거쳐 이동
→ (디스크 플래터→디스크 캐시→커널의 버퍼 캐시→라이브러리의 버퍼→응용프로그램의 버퍼)
→ 여러 응용프로그램이 동일한 파일을 엑세스하는 경우 효과적
→ 한 프로그램이 순차적으로 파일 데이터를 읽는 경우 효과적
파일 시스템의 논리 구조
1) 파일 시스템 구조
- 트리 계층 구조로 파일 시스템 구성
- 디렉토리와 파일의 트리구조
→ 디렉토리 : 서브 디렉토리나 파일들의 목록을 저장한 파일
2) 폴더와 파일의 경로명
- 디렉토리
→ 논리적 관점에서 여러 파일 혹은 서브 디렉토리를 포함하는 컨테이너로 파일에 대한 경로를 제공
→ 물리적 관점에서 디렉토리도 파일로 구현되며 서브 디렉토리 이름이나 정보 혹은 속성을 저장하는 특별한 파일
- 파일 이름과 경로명
→ 파일 이름은 단순하게 저장 fun.exe 등
→ 파일의 경로는 루트 디렉토리에서부터 파일에 이르기까지의 계층 경로를 모두 포함
3) 파일 시스템을 다루기 위한 메타 정보
- 파일 시스템 메타 정보 + 파일 메타 정보 ( 파일 시스템 전체에 관한 정보 + 파일에 관한 정보 )
- 파일 시스템 메타 정보
→ 파일 시스템 전체 크기와 현재 사용 크기
→ 저장 장치에 구축된 파일 시스템의 비어있는 크기
→ 저장 장치에 들어있는 블록들의 리스트
- 파일 메타 정보
→ 파일 이름, 파일 크기, 파일이 만들어진 시간, 파일이 수정된 시간, 가장 최근에 액세스한 시간
→ 파일을 만든 사용자, 파일 속성(접근 권한), 파일이 저장된 위치
- 파일 시스템/파일 메타 정보 저장 위치
→ 파일 시스템 메타 정보 : 저장 매체에 특별한 위치에 저장되어운영체제가 읽기 쓰기 쉽게 함
→ 파일 메타 정보 : 파일 시스템마다 다르며 디렉토리 혹은 저장매체의 특별한 위치에 저장
파일 시스템 구축
1) 파일 시스템 종류와 구현 이슈
- 파일 시스템 종류
→ FAT (MS-DOS에서 사용, 현재도 사용되고 있음)
→ UFS (Unix에서 사용)
→ ext2, ext3, ext4 (Linux 사용)
→ NTFS (FAT의 개선으로 리눅스에서도 지원가능, Window 3.1부터 지금까지 사용)
- 파일 시스템 구현 이슈
→ 디스크에 파일 시스템 포맷
→ 파일 블록 할당/배치 관리
→ 파일 블록 위치 관리
2) FAT 파일 시스템
- MS-DOS의 파일 시스템으로 파일 개수와 크기가 작았던 당시에 적합하도록 설계, 현재에도 진화한 모습으로 사용
- 파일 시스템 구조
→ 부트 섹터 (운영체제를 적재하고 실행시키는 코드)
→ FAT1, FAT2 (파일 블록들의 할당 테이블, FAT2는 복사본)
→ 루트 디렉토리 (고정 크기로 생성 되는 파일이나 서브 디렉토리 개수 유한)
→ 데이터 블록 (파일 블록이 저장되는 곳, 파일은 블록들로 분할되어 분산 저장)
3) 파일 블록 배치
- FAT 파일 시스템의 파일 블록 전략
- 파일 데이터를 블록 단위로 디스크에 분산 저장
- 파일 메타 데이터는 디렉터리에 저장
- 저장된 파일 블록들의 위치는 FAT 테이블에 기록
- FAT 테이블
- 파일 시스템에서 생성된 모든 파일에 대해 저장된 블록 번호들이 담겨있음
- FAT 테이블의 항목이 연결 리스트로 연결 → FAT 손상 시 심각한 문제 → FAT2 백업
4) Unix 파일 시스템 구조
- 부트 블록 : 부팅 시 메모리에 적재되어 실행되는 코드, 운영체제를 적재함
- 수퍼 블록 : 파일 시스템 메타 정보 저장
- i-node와 i-node 리스트
- i-node : 파일당 1개의 i-node 필요, 파일 메타 정보 저장
- i-node 리스트는 포맷 시 결정 → 파일 생성 시 빈 i-node 할당
- 데이터 블록들 : 파일과 디렉토리가 저장
5) Unix 파일 시스템의 파일 블록 배치
- 파일을 블록 단위로 분산 배치
- i-node에 15개 인덱스를 두고 파일 블록들의 위치 정보를 저장
- 12개의 직접 인덱스
- 1개의 간접 인덱스
- 1개의 2중 간접 인덱스
- 1개의 3중 간접 인덱스
- 파일의 i-node찾기 : 파일을 읽고 쓰기 위해 파일 블록의 위치가 저장된 i-node를 찾아야함
'Computer Science > Operating System' 카테고리의 다른 글
[운영체제] 대용량 저장 장치 관리 (1) | 2023.07.26 |
---|---|
[운영체제] 가상 메모리 (0) | 2023.07.24 |
[운영체제] 페이징 메모리 관리 (0) | 2023.07.23 |
[운영체제] 메모리 관리 (0) | 2023.07.22 |
[운영체제] 교착상태 (0) | 2023.07.17 |