일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 혁신의기술2:신뢰의미래 블록체인을 만나다
- html기초
- 블록체인강의
- 시스템프로그래밍
- 오블완
- Node
- 자바입력받기
- Entity
- K-MOOC
- CSS 기초
- attribute
- StringTokenizer
- 해시
- 딥러닝
- national instruments
- 블록체인 강의
- 자바문자열구분
- 우선순위큐
- 단국대학교 k-mooc
- 티스토리챌린지
- 2차원배열정렬
- biginteger사용법
- 머신러닝
- K-MOOC 단국대학교 홍보단
- 디스크블록할당
- 블록체인
- 자바스크립트
- stringreader
- StringBuilder
- 컴파일시스템
- Today
- Total
열정 실천
File System : OS가 파일을 저장하는 법 본문
파일 시스템은 데이터를 하드디스크, SSD, USB등 저장장치에 파일과 디렉터리로 조직화하여 저장하고 관리하는 방식이다. 각각의 파일에 대한 정보를 담고 있는 자료구조를 File Control Block이라고 하며 이는 리눅스에서 inode에 해당한다.
- 블록 하나의 크기는 4KB
- 블록을 가리키는 주소는 4bytes
하나의 책임블럭이 가리킬 수 있는 블록의 수 4KB / 4 bytes = 2^10 = 1024개
보통 한 파일의 inode에서 direct blocks pointer는 10-15개가 존재한다.
single indirect가 저장가능한 데이터 크기 : 4KB X 1024 = 4MB
double indirect가 저장가능한 데이터 크기 : 4KB X 1024 X 1024 = 4GB
triple indirect가 저장가능한 데이터 크기 : 4KB X 1024 X 1024 X 1024 = 4TB
* 윈도우에서 사용하는 FS : NTFS
* 리눅스에서 사용하는 FS : ext4
파일에게 디스크 블록을 할당하는 4가지 방법!
1. Contiguous allocation
2. Linked allocation
3. File Allocation Table (FAT)
4. Indexed Allocation Method
1. Contiguous allocation
- 파일이 블록의 한 위치에서 연속적으로 크기 만큼 블록을 할당한다.
- 읽는 속도가 빠르고 임의 접근이 가능하지만 외부단편화가 많이 발생한다.
2. Linked allocation
- 파일이 블록의 한 위치에서 시작해서 링크드 리스트로 연결되어 있다.
- 외부단편화가 없고, 디스크 이용률이 증가하지만, 임의접근이 어렵고, 링크가 하나 끊기면 뒤를 다 잃어버린다.
3. File Allocation Table (FAT)
- 파일의 블록 위치 정보를 테이블로 관리하며, 임의 접근이 가능하다.
- 테이블이 커질수록 메모리 낭비가 발생하고, 속도가 느려질 수 있다.
4. Indexed Allocation Method
- 각 파일에 인덱스 블록을 두어 모든 데이터 블록 위치를 저장한다.
- 임의 접근이 가능하지만, 추가적인 저장 공간이 필요하다.
남은 공간 관리 방법 Free-Space Management
1. 비트맵 활용
블록의 개수만큼 bit를 저장하는 배열이 있고 각각 빈 블럭(bit : 1), 사용 중인 블럭(bit :0)을 표시한다.
배열 이용 : 접근이 빠르고, 이진 검색이 가능하다.
2. 연결 리스트 활용
비어있는 블록의 번호를 linked list를 통해 저장한다.
리스트 이용 : 크기 변동이 용이하고 중간에 값을 넣기 쉽다. 임의 접근은 안된다.
'CS > OS' 카테고리의 다른 글
주기억장치 Main Memory (1) | 2024.11.23 |
---|---|
Unix 명령어 모음집.zip (6) | 2024.10.21 |
"병행성"을 위한 mutex_lock, 그리고 semaphore (0) | 2024.09.19 |
스케쥴링 - 어떤 프로세스에게 CPU를 줄까요~? (1) | 2024.09.15 |
Thread 스레드 - 하나의 프로세스 안에 멀티스레드 (0) | 2024.09.13 |