본문 바로가기

Operating System

[OS/Linux] 파일 디스크립터

OS에는 시스템 콜을 통해서 저 수준(Low-Level) 차원에서 파일 입출력을 지원을 할 수 있게 해준다. 즉 ANSI의 표준 함수가 아니라 OS차원에서 지원해주는 것이기 때문에 타 OS에 대한 호환성은 없다. 예로 들어 linux에서 제공하는 시스템 콜을 사용해서 개발을 한다면, windows에선 빌드가 되지 않을 가능성이 높다는 것이다.

 

리눅스는 네트워크에서 사용하는 소켓도 일종의 파일처럼 간주를 한다. 즉 소켓이 생성된 메모리 공간도 파일처럼 관리를 진행하는데, 리눅스에서는 프로그램이 파일을 사용할 때 파일 디스크립터라는 일종의 숫자를 이용해서 이를 관리한다. 대표적인 파일 디스크립터는 다음과 같다.

파일 디스크립터

저 수준에서 입출력을 진행하려면 이 파일 디스크립터를 요구한다., 즉 저 수준 파일 입출력 함수는 소켓 파일 디스크립터를 전달하면, 소켓은 대상으로 입출력을 진행한다.

// 저 수준에서 파일 열기
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char* path, int flag);

// 저 수준에서 파일 닫기
#include <unistd.h>

int close(int fd);

 

'Operating System' 카테고리의 다른 글

[Windows] 핸들 테이블  (0) 2022.07.04
[Windows] 커널 오브젝트란?  (0) 2022.07.04
[OS/네트워크] 네트워크 프로그래밍  (0) 2022.04.24
[OS] CPU 스케쥴링  (0) 2022.02.08
[C#, OS] Monitor  (0) 2022.02.08