시스템콜은 운영체제와 사용자 프로그램 간의 인터페이스.
프로그램이 응용체제의 서비스를 요청할 때 사용됨. (파일 시스템 접근, 메모리 관리, 프로세스 관리 등)
사용자 프로그램은 일반적으로 하드웨어 리소스에 직접 접근할 수 없기에 시스템콜을 통해 운영체제에 요청하여 리소스를 사용하는 단계를 거침.
예시
파일을 여는 open 이라는 시스템콜이 있음.
#include <fcntl.h>
#include <unistd.h>
int main() {
int fd;
fd = open("example.txt", O_RDONLY);
if (fd == -1) {
// 파일을 여는 데 실패한 경우
return 1;
}
// 파일을 성공적으로 열었으므로 파일 작업 수행 가능
// 파일 디스크립터를 사용하여 읽기, 쓰기 등의 작업 수행 가능
close(fd); // 파일 닫기
return 0;
}
파일이름이 example.txt가 있으면 읽기 전용으로 여는 코드.
파일이 성공적으로 열리면 'fd'는 파일 디스크럽터를 가지며 이를 이용하여 파일 작업을 진행함.
파일을 여는데 실패하면 'fd'는 -1이 되어 오류 처리.
OS는 이 open 시스템콜을 받아 파일 시스템에서 해당 파일을 찾아서 열고 프로그램에 파일 디스크럽터를 반환함.
'[low level]' 카테고리의 다른 글
[Kernel] Kernel에 대하여 (0) | 2024.08.14 |
---|---|
[Linux kernel] 리눅스 커널이란? (0) | 2024.08.14 |
[Driver] 드라이버란? (0) | 2024.08.14 |