Kernel table & open(/a/b)


disk는 inode, data 부분으로 나뉘여 있다.

fd → file table → inode table →data block

File descriptor table (fd table)

pcb에 있다?

open()을 호출할때 pathname을 넘겨줘서 커널이 파일을 open하고 fd를 반환해준다.

Accessing File with File Descriptor

read(fd, var, count)

read를 호출하면 해당하는 fd를 file table에서 찾는다. file table에서 offset을 찾아서 inode 에서 정보를 찾아서 디바이스의 첫주소를 찾아서 그 주소로부터 offset만큼 떨어진곳을 읽는다(read).

file descriptor 뿐만 아니라 file handle 구조체도 있다. fd + (pid + hostname) 까지 담겨 있는 구조체이다.(windows에서 쓰인다.)

Balanced tree

master index

inode는 파일의 크기에 상관없이 크기가 동일하다. 파일의 크기가 커도 정해진 master index만 참조하고 있기 때문에 파일의 크기가 커져도 master index의 크기가 커지는게 아니라 그밑으로 tree의 크기가 커지기 때문에 맨 꼭대기의 mster index는 동일하다. 때문에 모든 inode들의 크기는 똑같다.

System calls for files