본문 바로가기
Quality control (Univ. Study)/Operating System

OS (File System)

by 생각하는 이상훈 2022. 11. 18.
728x90

File

OS의 5대 개념 Interrupt, Process, File, Memory, I/O중 File에 대해 공부하였다.

File system은 파일들을 disk에 효율적으로 저장하는 것을 목적으로 한다.

효율적으로 저장하는 것은 Space efficienty와 Time efficiency 두개로 나누어 고려한다.

                           Space efficiency: Divide file into blocks, Store file blocks scattered in empty disk blocks
                           Time efficiency: Remember file block location in Inode table

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)

 

before process
write f1
write f2
delete f1
write f3


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

 

Checking superblock

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

Checking group discriptor

Super blockblock size1024byte =400h이므로 group descriptor800h에서 시작한다. U324 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

Checking DBM (8*400=2000h)

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이라는 것을 의미한다.

 

Checking IBM (9*400=2400h)

DBM과 같은 원리로 ff 0f를 읽으면 11111111 00001111이므로 block 1~12번이 사용 중이라는 것을 알 수 있다.


 

728x90

'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