file
file은 바이트시퀀스이다. (바이트단위로 이루어진 데이터들의 집합)
file은 text타입, binary type으로 나뉜다.
text type은 아스키코드 등 문자열 데이터를 저장하고, binary type은 프로그램 코드가 저장된다.
file structure
file 은 일종의 구조를 가지고있다.
구조가 없는경우
simple record structure,
complex structure도 있음.(ppt같은)
File Attributes
(파일에 대한 메타데이터)
File Operations
common operation
-create, write, read, reposition within file, delete, truncate, ...
File Types - Name, Extension
이름과 확장자.
확장자는 OS마다 사용되는것이 다름. 운영체제 종속적임.
UNIX File System
디스크 드라이브는 여러개의 파티션으로 나누어져 있다.
partition | partition | partition |
파티션 하나를 자세히 보자.
boot block | super block | i-list | data block |
이것이 file system이다.
하나의 파티션은 네가지 구성 요소로 이루어져 있다.
- boot block
- super block
- i-list
- data block
boot block: 파티션이 부팅하는 데 관여함. (만약 부팅과 관련 없는 data partition이라면 부트 블락은 비어있음). 여기에 부팅 코드를 다 넣을 수 없기때문에, 2-step boot loading으로 ..?
super block: 대장 블락. 파티션(파일 시스템)에 대한 메타 정보를 저장함. 현재 얼마나 사용하고있고, 얼마나 사용가능하고,파일시스템의 이름, 크기.. 등 전체적인 정보 저장
i-list: i-node들로 이루어짐.
> i-node: file에 대한 메타 정보를 저장. 파일 하나당 하나의 i-node가 매칭됨. 파일 이름, 속성, 크기, 접근권한... + 파일에 대한 위치정보를 저장.
data block: 파일, 디렉토리 데이터가 저장됨
i-list와 i-node
i-node는 파일에 대한 메타정보와 함께, 데이터블록에서 파일에 대한 위치정보(포인터)를 가짐
디렉토리의 내용
하위 디렉토리/파일 목록이 있음.
i-node num: file/directory 쌍으로 저장됨
i-node num0: 루트를 가리킴. (참고: 어떤시스템에서는 0,1번...을 미리 정해놓은것이 있음. 이 떄는 2가 루트일듯)
boot block, super block, i-list는 손상되면 심각한 문제가 발생하므로 이들은 몇번씩 백업되어있다.
(데이터블록 손상시에는 한 파일만 손상되지만, 이들이 손상되면 여러것들이 다 사용할수없게됨)
i-node 하나당 파일 하나를 가리키므로, i-node의 최대 개수가 최대 파일 개수가 된다.
Direct pointer: 직접포인터
Single indirect pointer:
Double indirect pointer:
Triple indirect pointer:
포인터가 가리키는 공간은 크기가 정해져있다. 이 크기가 큰 경우 작은데이터를 쓸 때 공간낭비가 심하고 너무 작게하면 파일 최대 크기가 줄어든다.
이런 방식은 block based file system.
관리가 용이하다. 그러나 스토리지 활용도가 떨어진다.(블락 내에 못쓰고 남는 공간이 생김)
유닉스에서 최대 파일 크기 구하는방법(한 블락이 8KB이고, 포인터크기가 4byte인 경우)
8KB*(12 + 2048 + 2048*2048 + 2048*2048*2048)
디렉토리 구조
유닉스에서 루트디렉토리 밑에 하위디렉토리가 존재한다.
우리가 익숙하게 생각하는 구조는 tree형태..
efficiency: 디렉토리 구조는 효율성이 있어야함
naming: 이름을 편하게 붙일 수 있어야함.
grouping: 파일들을 모아서 그룹으로 관리할 수 있어야함.
Single-Level Directory
모든 사용자들에게 디렉토리가 하나씩 존재.
-같은 이름의 디렉토리를 생성할 수 없음
-검색이 힘드므로 효율성 낮음
-그룹핑 제약이 큼
Two-Level Directory
사용자별로 디렉토리를 분류하여 자기가 원하는 디렉토리를 생성하여 사용할 수 있음.
-pathname이라는 개념이 생김. 파일이름이 같은 a더라도 user1/a와 user2/a는 다름
-서로다른 유저 상에서 같은이름 파일 생성가능
-검색, 그룹핑이 개선되었으나 오늘날의 시스템에 비하면 아직 부족하다.
Trew-Structured Directories
트리형태로 디렉토리구조를 가짐
-서칭 효율적
-그룹핑 좋음
-현재 디렉토리(Working directory)개념 필요.
-절대경로, 상대경로
Acyclic-Graph Directories
사이클이 없는 그래프 = 트리
한 노드가 두개의 부모를 가짐= 링크(바로가기)
==> pathname이 두개이상이 될 수 있음
Delete연산시: 파일로 향하는 에지를 끊음
Hard link/Symbolic link
하드링크는 같은 파일에 입구가 여러개
심볼릭링크는 새로운파일이 생기고 그 파일이 원본파일을 가리킴
General Graph Directory
오늘날 쓰이지는 않음
ㅅㅏ이클을 가질 수 있음.
사이클이 있는 경우
장점: 링크함수의 장점을 온전히 활용할 수 있다.
단점: 중복검색 발생. 무한검색 문제가 발생할수도 있음. 이를 해결하기 위해 디렉토리 반복접근 횟수를 제한하는 방식을 사용가능.
또, 자기자신을 참조하는 경우 파일을 자신이 참조하기때문에 삭제가 이루어지지 않는다. 이것을 주기적으로 처리하는 가비지콜렉터가 필요하다.
새 링크를 추가할 때 사이클이 되지 않을때만 링크를 만들자.
traversal할때 링크를 패스하는 알고리즘
가비지콜렉션을 주기적으로
File System structure
파일 시스템은 디스크에 있다.
물리적인 스토리지공간을 사용자의 논리적 공간으로 바꾸어주는것이 파일시스템이다.
파일시스템은 스토리지 매니지먼트 + 네이밍 매니지먼트
(메모리 매니지먼트에서 네이밍이 추가됨)
FCB(file control block)
파일에 대한 메타정보를 저장
진심 토나올라
'2023-1 > 운영체제' 카테고리의 다른 글
File system and storage management (0) | 2023.06.10 |
---|---|
Virtual Memory - Page Replacement (0) | 2023.06.03 |
Paging (0) | 2023.05.15 |
Memory Management and Virtual Memory (0) | 2023.05.06 |
Thread (0) | 2023.04.18 |
댓글