Armv8 Virtual Files System

EEEFFEE·2023년 11월 30일
0

Armv8 Architecture

목록 보기
11/15

23.11.30 최초 작성

1. 파일 객체의 함수 오퍼레이션

1.1 파일 객체

  • 파일을 조작하는(open, read, write) 기능을 추상화하는 자료구조
  • 프로세스가 파일을 관리하기 위해 생성
  1. struct super_block : Superblock
  2. struct inode : Inode
  3. struct dentry : Dentry
  4. struct file : File

1.2 파일 오퍼레이션

  • 가상 파일 시스템을 통해 각 파일 시스템에 접근
  • 가상 파일 시스템에서 지원하는 4가지 객체에 지정한 함수 포인터를 통해 파일 시스템별 세부 함수에 접근
  • 슈퍼블록, 아이노드, 파일, 덴트리 객체들 모두 함수 오퍼레이션 지원
  1. struct super_operations : 파일 시스템 별 호출되는 함수
  2. struct inode_operations : 특정 파일에 대해 커널이 호출하는 하수
  3. struct dentry_operations : 특정 디렉토리 항목에 대해 호출하는 함수
  4. struct file_operations : 열려있는 파일에 대해 프로세스가 호출하는 함수

2. 파일 객체 관련 동작

2.1 file open

  1. __alloc_fd()함수를 통해 파일 객체 생성
  2. 파일 종류별로 등록된 open() 함수를 호출
  3. 함수 오퍼레이션을 마무리하면 프로세스의 태스크 디스크립터에 접근
    해 파일 디스크립터 테이블에 파일 객체를 등록
    (반환된 정수를 바탕으로 파일 디스크립터 테이블에 접근)

2.2 file close

  1. 유저 공간에서 close()함수 호출
  2. 커널 공간으로 스위칭 된 후 sys_clone() 함수 호출
  3. sys_clone() 함수에서 file 자료구조와 파일 디스크립터 번호를 가지고 __close_fd() 함수 호출
  4. __close_fd() 함수는 해당 파일 디스크립터 테이블을 NULL로 초기화

0개의 댓글