(1) 파일시스템 관련 자료구조
: task_struct 내에는 파일을 다루기위한 멤버 변수 files fs 가 존재한다.
  ○ struct fs_struct *fs; 
  ○ struct files_struct *files;   ==> 파일을 관리하는데 사용


  ○ fs_struct 구조체 내에 이 구조체를 사용하는 프로세스의 수에 대한 정보와 루트 디렉토리와 작업 디렉토리등의 정보를 담은
      멤버변수들로 구성되 있다.


      - files_struct 구조체의 멤버변수 가운데 fd_array 변수는  <struct file *fd_array> 
      - fd_array[0] : 첫번째 항 = 표준입력 
      - fd_array[1] : 두번째 항 = 표준출력 
      - fd_array[2] : 세번째 항 = 표준에러 
      - fd_array[3] : 네번째 항부터 내스크가 새로운 파일을 열때마다 할당되서 사용된다.

      - file 구조체 안에 f_dentry , f_pos , f_op 들이 있다. 
      - NR_OPEN_DEFAULT 는 32 로 정의되 있는데, 한번에 열 수 있는 파일의 수를 의미한다.

      - struct dentry *f_dentry -> 이 구조체 안에 d_inode변수가 inode를 가리킨다. 
      - struct file_operations *f_op -> 이 구조체는 lseek, read, write, open 등과 같은 파일연산을 나타내는 변수로 구성.
         리눅스는 다양한 유형의 파일을 지원하고, 
         커널은 각 파일의 유형에 따라 적합한 함수를 사용해야한다. 
         이때 file_operation 자료구조가 이용된다.


※ 출처 : http://idkkangjs.blog.me/30091117058

by 민트앤라떼 2011. 9. 28. 11:48