File 개념
- 바이트의 집합체(Array of Bytes)
- Address Space와 비교
File Attributes
- 어떤 정보를 포함하고 있는 데이터
- 서로 다른 바이트들의 집합체를 구별해주는 역할
File Operations
- 운영체제 레벨에서 파일과 관련해서 할 수 있는 시스템콜
File Access Method
순차 접근
- 파일에 있는 정보에 대한 접근은 Record의 순서대로 이루어짐
- 내가 원하는 위치로 갈 수 없어
임의 접근(Random Access)
- 파일의 어떠한 위치라도 바로 접근하여 Read나 Write를 수행
Directory 구조 개념
전형적인 파일 시스템의 구성
-파일 시스템은 일반적으로 여러 계층으로 나누어서 구성
계층으로 나누는 이유
- 파일 시스템을 구현하고자 하는 장치가 다양할 수 있음
- 한 시스템에 1개 이상의 파일 시스템을 사용 가능하게 함
- 계층화된 구성을 통해서 파일 시스템에 유연성을 제공
Mount
Directory Structures
Single-Level Directory
Two-Level Directory
Tree-Structured Directories
단점
Acyclic(이용)-Graph Directories
- 트리 디렉토리의 파일 공유 불가의 대안
- 둘 이상의 서로 다른 이름을 이용하여 파일이나 sub 디렉토리를 공유
-방향성이 있음
- Dangling Pointer가 생길 수 있음
ex) 그림의 가장 밑 디렉토리 인 list를 삭제할 경우
General Graph Directory
- 사이클이 없도록 보장함 => 사이클 디텍션 알고리즘으로 사이클 나오나 안나오나 계속 파악해야함. => 손실..
- 링크를 파일로만 가능하도록 한다
File의 구현
Disk Block
-
파일의 구현에 앞서 디스크 블락은 파일 시스템의 입출력 단위
-
파일 구현에서는 파일의 내용을 담고있는 Data Block의 위치정보를 어떻게 저장할지 고려해야함
-
운영체제마다 각기 다른 방식으로 파일의 데이터 블럭 정보를 관리함.
Contiguous Allocation
- 프레임 Allocation에서의 Contiuous Allocation과 유사
장점
- 구현 쉬움
- 물리적으로 연속된 공간에 있어서 전체 파일을 통으로 읽을때 성능 굳굳
단점
- 파일은 반드시 한번에 끝까지 기록되어야함
- 운영체제에서 파일의 끝에 예비용 Block을 남겨놓을 경우 디스크 공간 낭비
Linked List Allocation
- 디스크의 Block을 링크드 리스트로 구현하여, 파일의 데이터를 저장하도록 함
장점
- 파일의 Data Block은 디스크의 어디든지 위치 가능
- 공간의 낭비가 없음
단점
-
Random Access 불가능 -> 파일의 특정 위치를 찾기 위해서는 해당 파일의 시작 Node부터 찾아가야함
-
다음 Data Block에 대한 Pointer로 인해 Data Block에서
Data를 저장하는 공간이 반드시 2의 배수가 아닐 수 있음(포인터도 같이 저장해야해서) -> 대부분의 프로그램은 Read/Write 하는 데이터의 크기가 2의 배수 이기 때문에 성능 측면에서 안좋음...
-
Disk block pointer의 크기를 결정하는 요소는 번호 번호가 많을 수록 크기가 커짐
Linked List Allocation using an Index
- 파일의 데이터에 관련된 Block을 하나의 Block에 모아둠
- 파일의 데이터 블록 중 하나를 Index Block이라 하여 모든 데이터 블럭의 위치를 Index Block에서 알 수 있음
장점
- Linked List Allocation 의 대안
- 랜덤 Access 시 하나의 데이터 블락(Index Block)에서 찾아가고자 하는 Data Block의 위치를 알 수 있으므로, Linked List Allocation보다 빠르게 랜덤 Access 가능
단점
- 최대 파일 크기가 고정됨
- Index Block의 크기가 고정되어 있기 때문에, Index Block에서 수용할 수 있는 Disk Block에 대한 Pointer의 수가 한정되어 있기 때문
I-nodes(리눅스 방식)
- 페이지테이블과 비슷하게 Index들을 테이블 형태로 관리함
- 큰 Memory영역을 관리할 경우에 1-레벨 페이징 보다 멀티 레벨 페이징이 유리한것과 비슷
I-node의 구성요소
- 파일에 대한 속성을 나타내는 필드
- 작은 크기의 파일을 위한 Direct Index
- 파일의 크기가 커짐에 따라서 요구되는 데이터 블럭의 Index들을 저장하기 위한 Index Table들
ex)
Directory의 구현
- 디렉토리를 표현하기 위한 자료구조
- 파일 시스템의 파일 구현에 따라 Directory Entry를 구성하는 필드도 달라짐
=> 일반적인 디렉토리 Entry는 파일의 이름, 속성과 같은 정보가 저장되지만, I-node를 사용하는 파일시스템에서는 File Name과 I-node Number만이 저장됨.
Ms-Dos 디렉토리
- Linked List Allocation을 사용중이라서 sequencial access 가능
- 전부다 일일히 타고타고 확인해봐야함
UNIX
Protection
- 파일 보호하기위한 메카니즘
- 저장된 정보에 부적절한 접근을 막는것
Acces List and Groups(Linux)
- 접근 모드 : Read, Write,Execute
- 사용자들의 레벨을 3가지로 나눔(owner, group,public)