2024. 9. 9. 13:06ㆍLinux*security
시스템 콜 (System Call)
- 시스템 콜은 운영체제의 커널 기능을 프로그램이 사용할 수 있도록 커널과 사용자 프로그램 간의 인터페이스 역할을 한다.
- 사용자 모드에서 실행되는 프로그램은 하드웨어 자원(파일 시스템, 네트워크, 메모리 등)을 직접적으로 접근할 수 없기 때문에, 시스템 콜을 통해 커널에 요청해야 한다.
- time() 시스템 콜은 커널에서 현재 시간을 가져오는 함수이며 커널에서 현재 시간을 직접 읽어 사용자에게 전달한다.
- time() 시스템 콜은 현재 시간을 초 단위로 반환하는 함수이다.
include <stdio.h>
include <time.h>
int main() {
time_t current_time;
// time() 시스템 콜을 사용하여 현재 시간을 가져옴
current_time = time(NULL);
printf("현재 시간(초 단위): %ld\n", current_time);
return 0;
}
라이브러리 함수 (Library Function)
- 라이브러리 함수는 일반적으로 커널에서 제공하는 시스템 콜을 사용하여 더 고수준의 기능을 제공하는 함수이다.
- 라이브러리 함수는 커널과 상호작용할 수 있지만, 직접적인 커널 자원 관리를 하지 않고 시스템 콜의 결과를 가공하거나 추가 기능을 제공한다.
- ctime() 라이브러리 함수는 time() 시스템 콜을 통해 얻은 시간 값을 문자열 형태로 변환하여 사람이 읽을 수 있는 시간 형식으로 반환한다.
ctime() 라이브러리 함수는 time()으로 받은 시간을 사람이 읽기 쉽게 변환하는 라이브러리 함수이다.
include <stdio.h>
include <time.h>
int main() {
time_t current_time;
char time_string;
// time() 시스템 콜을 사용하여 현재 시간을 가져옴
current_time = time(NULL);
// ctime() 라이브러리 함수를 사용하여 시간 정보를 문자열로 변환
time_string = ctime(¤t_time);
printf("현재 시간(문자열): %s", time_string);
return 0;
}
▶ 시스템 콜과 라이브러리 함수의 차이점
- time(): 커널에서 시간 정보를 가져오는 시스템 콜이다. 이는 커널의 자원(현재 시간)을 직접적으로 읽어온다.
- ctime(): 시간 정보를 사람이 읽을 수 있는 형식으로 변환하는 라이브러리 함수이다. 커널의 자원을 직접 다루지 않고, 시스템 콜을 통해 받아온 정보를 가공하는 역할을 한다.
▶ 메모리 할당에 대한 차이
- 시스템 콜을 통해 커널의 자원을 사용할 때는 커널이 제공하는 정보를 사용자 영역으로 복사해야 하므로 별도의 메모리 할당이 필요할 수 있다.
- 그러나, ctime() 같은 라이브러리 함수는 커널의 정보를 직접적으로 다루지 않고, 사용자 영역 내에서 데이터를 가공하는 데 필요한 메모리를 자동으로 처리해주기 때문에 사용자는 별도의 메모리 할당을 신경 쓰지 않아도 된다.
'Linux*security' 카테고리의 다른 글
sysinfo 함수 매뉴얼 (0) | 2024.09.09 |
---|---|
GCC 컴파일러가 C 소스 파일을 실행 파일로 변환하는 과정 (0) | 2024.09.09 |
linux ubuntu 설치 중 멈춤 현상 (0) | 2024.09.03 |
gcc 설치 (0) | 2024.09.03 |
시스템 관리, 파일 조작, 네트워크 설정 명령어 (0) | 2024.08.29 |