File
OS의 5대 개념 Interrupt, Process, File, Memory, I/O중 File에 대해 공부하였다.
File system은 파일들을 disk에 효율적으로 저장하는 것을 목적으로 한다.
효율적으로 저장하는 것은 Space efficienty와 Time efficiency 두개로 나누어 고려한다.
Disk: collection of disk blocks (1 disk block = 1K byte)
File: collection of file blocks ( 1 file block = 1K byte)
Example
아래의 과정을 그림을 통해 보자.
write f1 (2 block file)
write f2 (3 block file)
delete f1
write f3 (3 block file)
Linux file system
1block = 4000 byte
S: super block (1 blk) – global information about this fs
G: group descriptors (n blk) – location of D, I, Inode table
D: data block bitmap(1 blk) – which disk block is empty
I : inode bitmap (1 blk) – which inode is empty
Inode table: inode table (n blk) – file location
Inode table
size: n blk
Inode bitmap
size: 1blk
Datablock Bit Map
size: 1blk
Group Descriptor
size: 1blk
Super block
size: 1blk
# cd temp --- go to myfd
# ls --- check myfd is empty
# echo korea > f1 --- make f1 in it
# ls --- check f1
# umount temp
We need “umount temp” to write the change in the myfd disk.
# xxd -g1 myfd > x
“-g1” option will display each byte of myfd separately.
# vi x
Magic number: 53 ef 로 나타나는데 오른쪽부터 읽어야해서 ef 53 이다.
Block size: 00 00 00 00이므로 1024 * 2^0 = 1024 byte
First block number 01 00 00 00 => 00 00 00 01 = 1
Super block의 block size는 1024byte =400h이므로 group descriptor는 800h에서 시작한다. U32는 4 byte를 차지하므로 4칸씩 DBM, IBM, block location을 의미한다.
따라서 block location을 보면
IBM: 09 00 00 00 => 00 00 00 09 = 9
DBM: 08 00 00 00 => 00 00 00 08 = 8
Inode table: 0a 00 00 00 => 00 00 00 0a = 10
f를 2진수로 나타내면 1111이다. 따라서 ff ff ff ff ff 7f는 11111111 11111111 11111111 11111111 11111111 01111111로 나타나게 된다. 숫자는 오른쪽부터 읽으므로 6번째 7f가 가리키는 값은 block41 ~ block48중 block48이 비어있는 것을 의미한다. 즉 block 41번 ~ block 47번까지 1이라는 것을 의미한다.
DBM과 같은 원리로 ff 0f를 읽으면 11111111 00001111이므로 block 1~12번이 사용 중이라는 것을 알 수 있다.
'Quality control (Univ. Study) > Operating System' 카테고리의 다른 글
OS (pthread) (0) | 2022.11.13 |
---|---|
OS (fork) (0) | 2022.11.10 |
OS(process id) (1) | 2022.11.05 |
OS(interrupt) (0) | 2022.11.05 |
OS(system_call) (0) | 2022.10.11 |