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 |