Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

43107
469
422675


[리눅스커널][가상파일시스템] 파일 객체란 13. 가상 파일 시스템


대부분 유저는 파일을 생성하고 읽고 쓰기 위한 용도로 씁니다. 이 때 파일 동작에 대한 상세 규칙과 속성은 파일 객체에서 확인할 수 있습니다.

만약 라즈베리파이에서 2개 Geany프로그램에서 1개 파일을 열 수 있습니다. 이 때 몇 개 파일 객체가 생성될까요? 2개 파일 객체는 각각 프로세스 별로 생성합니다. 파일 객체는 이렇게 파일을 오픈하고 읽고 쓰는 상황에서 프로세스가 파일을 관리하기 위해 생성합니다.

파일 객체에 대한 상세 내용은 struct file 구조체에서 확인할 수 있습니다.  struct file 구조체에 대해 알아보겠습니다.

struc file 구조체 분석

파일 객체는 다음 해더 파일에 정의돼 있습니다.

https://elixir.bootlin.com/linux/v4.14.70/source/include/linux/fs.h 
struct file {
union {
struct llist_node fu_llist;
struct rcu_head  fu_rcuhead;
} f_u;
struct path f_path;
struct inode *f_inode; /* cached value */
const struct file_operations *f_op;


Reference(가상 파일시스템)

가상 파일시스템 소개
파일 객체
파일 객체 함수 오퍼레이션 동작
프로세스는 파일객체 자료구조를 어떻게 관리할까?
슈퍼블록 객체
아이노드 객체
덴트리 객체
가상 파일시스템 디버깅


# Reference: For more information on 'Linux Kernel';

디버깅을 통해 배우는 리눅스 커널의 구조와 원리. 1

디버깅을 통해 배우는 리눅스 커널의 구조와 원리. 2



repository:
http://rousalome.egloos.com/10025896



핑백

덧글

  • 살벌한 눈의여왕 2019/10/03 20:57 # 답글

    ioctl()에 관한 질문이 있습니다.
    각 파일시스템마다 ioctol()을 다르게 구현할 텐데, user application은 내가 open한 파일이 어느 파일시스템에 있는 파일인지 모르지 않습니까?
    따라서 애플리케이션이 날리는 ioctol()이 어떻게 동작될지가 undefined 인데, ioctl()의 실용성이 의심이 됩니다.

    좋은 글 감사드립니다.
  • AustinKim 2019/10/04 16:57 #

    댓글에 답글을 달다가 길어져 글을 새로 올렸습니다.
    http://rousalome.egloos.com/10004382

    가상 파일시스템은 조금 어려운 내용인 것 같습니다.
댓글 입력 영역