운체_w7

네코·2022년 4월 14일
0

운영체제

목록 보기
5/6

file system

디스크 - 섹터
디스크는 섹터 접근 요청 시 read / write 가능

파일시스템은 블록 단위로 디스크에 요청

블록과 디스크의 관계

block = 2^n * sector
보통 1block = 4096byte( 8sector) or 16k(32sector)

파일 시스템이 있기 떄문에 읽고자 하는 파일의 이름만 알면 알아서 해당 파일의 디스크 섹터를 읽어 올 수 있는 것

파일 시스템 내부

  • file id : 커널에서 디스크의 저장된 파일을 구분하기 위해 file id 사용

  • file descriptor : 디스크는 파일데이터, 파일 인포(파일 타입, 사이즈,섹터 정보)를 저장함
    open(a.txt)등으로 실행하면 disk의 이름에 해당하는 파일을 memory에 올림 이 때 메모리에 올린 파일 인포의 address 를 fd

  • file info in file-system structure
    = file control block (fcb=inode)

how unix kernel represents open files

프로세스 당 하나의 fd table 존재
커널 내에는 file table이 존재, 안에는 fd 와

fd table ( per process) || oepn file table (shared by all ps) || v-node table(shard by all ps)

  • file entry의 file offset, refcnt ?
    • 현재 offset 다음의 위치부터 읽음 , 최초 open하면 offset=0에서부터 읽게 됨.
      만약 10바이트읽으면 읽고나서 file offset에 10 저장.
      그다음 read 하면 마지막 읽은 위치부터 데이터를 읽음
    • 현재 file entry를 가리키고 잇는 fd table의 개수

순서

1.open(file)하면 disk에서 메모리에 inode를 올림 => v-node(in memory inode)가 됨
2. open file table에서 빈 entry를 하나 찾아서 v-node를 포인트하게 함
3. fd 테이블에서도 빈 entry를 찾아서 open file table의 entry를 포인트하게함

프로세스 생성 시 fd table 자동 생성, 0,1,2 stdin stdout stderr에 해당함

v-node 내부 정보

= file data에 대한 데이터 = file metadata

UNIX file structure

vitural file system -> file sytem -> buffer cache 배움

virtual file system

  • 목적
    • 다양한 파일시스템 지원하기 위해
    • 서로 다른 디스크 파티션에 다양한 파일 시스템 지원하기 위해서

0개의 댓글