본문 바로가기
운영체제

리눅스/파일 디스크립터

by 흰색남자 2022. 10. 14.

파일과 소켓에 공부하던 중 파일 디스크립터라는 것을 찾아서 정리함.

 

 

 

1. 파일 디스크립터란?

단순한 숫자값 ( 0이 아닌 정수 ). 파일 디스크립터 테이블의 하나의 인덱스 값을 가르킴.

- 프로세스에서 열린 파일의 목록을 관리하는 테이블의 인덱스

- 프로세스가 실행 중에 파일을 open 하면 커널은 해당프로세스의 파일 디스크립터 숫자 중에 사용하지 않는 가장 작은 값을 할당

- 일반적인 정규파일(Reglular File) 에서부터 디렉토리(Directory), 소켓(Socket), 파이프(PIPE), 블록 디바이스, 캐릭터 디바이스 등등 모든 객체들은 파일로써 관리된다.

 

2. 파일 디스크립터 테이블이란?

파일 디스크립터를 모아놓은 테이블.

 

3. 파일 테이블이란?

파일 테이블 : 커널에서 모든 열려진 파일들을 관리하는 테이블

파일의 상태 flags와 현재 파일의 작업 offset과 파일의 vnode 테이블의 위치 정보등을 포함함.

 

4. vnode란?

 inode 정보와 현재 파일의 크기를 포함함.

 inode 정보 : 파일 모드(권한), 링크 수( 소프트링크, 하드링크), 소유자명, 그룹명, 파일크기, 파일 주소, 접근 정보, 수정 정보, 아이노드 수정 정보

 

 

 

 

5. 하나의 프로세스에서 같은 파일 2개를 열면?

 

 

6. 서로 다른 2개의 프로세스에서 같은 파일을 열면? 

 

 

파일을 열면?

열린 파일은 파일 테이블에 기록이 되며 관리됨.

프로세스마다 파일 디스크립터 테이블이 생기며, 해당 프로세스에서 열린 파일들의 주소를 가르킴. 

사용자에게는 파일 디스크립터의 인덱스가 반환되며, 해당 정보로 데이터를 참조함.

 

파일 디스크립터 테이블 {

파일 디스크립터 1,파일 디스크립터 2, 파일 디스크립터 3 ... 파일 디스크립터 n

}

>

파일 테이블 {

파일 01, 파일 02, 파일 03 ~ 파일 N

}

>

VNODE

>

INODE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'운영체제' 카테고리의 다른 글

캐시 종류  (0) 2022.10.19
스토리지  (0) 2022.10.18
NAS, DAS, SAN  (0) 2022.10.13
운영체제 파일이란? 유저모드와 커널모드, NIC  (0) 2022.10.10
운영체제 프로세스 자원 할당에 대하여 ( 2 )  (0) 2022.09.28