Week12 WIL

gitddabong·2022년 2월 3일
0

파일

: 읽거나 쓸 수 있는 바이트의 연속적인 배열

inode : 파일의 고유한 id와 같은 것.

OS에서 파일은 시스템 콜로 읽거나 쓰거나 생성한다.

open() : 파일이 없으면 파일을 생성하고 그 파일을 fd 테이블에 추가하고 파일 디스크립터 반환

close() : 파일 닫기.

read() : 파일 읽기. 파일에는 바이트가 연속적으로 있으므로 파일을 읽을 때는 순서대로 읽고 버퍼에 올린다.

write() : 파일 쓰기. 버퍼에서 쓰기를 진행하고 fsync 로 디스크의 파일과 동기화시킨다.

디렉토리

: 파일의 경로를 저장하는 파일. 하위에 다른 디렉토리가 올 수도 있고, 파일이 올 수도 있다. 파일 및 디렉토리의 inode를 가진 디렉토리 엔트리 목록을 가지고 있다.

여러 개의 파일이 하나의 파일을 가리킴.(동일한 inode를 가짐)

원본 파일을 수정해도, hardlink1을 수정해도, hardlink2를 수정해도 똑같은 파일이 수정된다.

  • 하드 링크는 같은 파일 시스템 안에서만 유효. 다른 파티션의 파일에 링크할 수 없음.
  • 디렉토리는 파일이지만 링크할 수 없음. 디렉토리가 사이클을 만드는 것을 막기 위함.

윈도우 운영체제의 바로가기 아이콘을 떠올리면 이해하기 쉽다.

소프트링크 파일은 새로운 inode를 가지며, 이 파일이 다른 파일을 가리키는 것은 하드 링크와 동일하다.

하지만 원본 파일이 사라지면 다른 softlink 파일이 참조할 파일이 사라져 무용지물이 된다.

메모리에 파일 맵핑

  • 파일 설명자와 읽기/쓰기 시스템 호출을 사용하는 대신 파일에 액세스하는 대체 방법
  • mmap()은 프로세스의 가상 주소 공간에 페이지를 할당한다.
    • anonymous page : 프로그램 데이터를 저장하는 데 사용
    • file-backed page : 파일의 데이터를 담고 있다(파일명은 mmap에 arg로 제공됨)
  • 파일이 mmaped되면 메모리의 하나 이상의 페이지에 복사된 파일 데이터는 프로그램의 다른 메모리 위치처럼 액세스할 수 있습니다.

파일에 빠르게 접근하기 위해 디스크에서 메모리로 맵핑하여 작업 수행

profile
성장형 개발자 gitddabong

0개의 댓글