Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

yongsa0221의 고물상

프로세스 API 본문

CS/운영체제

프로세스 API

yongsa0221 2024. 8. 10. 19:34

프로세스 API란?

 프로세스 API를 통해 사용자 애플리케이션이 운영 체제의 기능을 이용할 수 있도록 인터페이스를 제공하며, 이러한 인터페이스를 통해 커널에 요청을 전달한다. 이후 커널은 실제로 프로세스 생성, 제어, 종료 등의 작업을 수행한다. 프로세스 API는 system call 의 wrapper 함수들로 구성되어 있다.

 

프로세스 API는 사용자가 쉽게 system call을 사용할 수 있도록 추상화된 인터페이스를 제공한다. 프로세스 API를 사용하면 복잡한 시스템 콜의 직접적인 사용을 피할 수 있으며, 더 쉽게 프로세스를 관리할 수 있다.

아래의 코드는 모두 shell에서 “ls” 명령을 수행하는 프로그램이다.

System Call 사용

#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>

int main() {
    pid_t pid = fork(); // 시스템 콜

    if (pid == -1) {
        perror("fork");
        exit(EXIT_FAILURE);
    } else if (pid == 0) {
        // 자식 프로세스
        execlp("ls", "ls", NULL); // 시스템 콜
        perror("execlp");
        exit(EXIT_FAILURE);
    } else {
        // 부모 프로세스
        wait(NULL); // 시스템 콜
        printf("Child process completed\\n");
    }
    return 0;
}

프로세스 API 사용

#include <stdlib.h>
#include <stdio.h>

int main() {
    int status = system("ls"); // 프로세스 API 사용

    if (status == -1) {
        perror("system");
        exit(EXIT_FAILURE);
    }

    printf("Command executed with status: %d\\n", status);
    return 0;
}

system.c source code [glibc/stdlib/system.c] - Codebrowser

 

system.c source code [glibc/stdlib/system.c] - Codebrowser

9 The GNU C Library is distributed in the hope that it will be useful,

codebrowser.dev

위의 사이트에서 라이브러리 코드를 볼 수 있다.

 

 

API 제공 기능

프로세스 API는 운영체제 마다 다르지만 기본적으로 다음과 같은 기능을 제공한다

 

프로세스 생성 및 실행:

- fork() 및 exec() (유닉스/리눅스), CreateProcess() (윈도우)

 

프로세스 종료:

- exit() (유닉스/리눅스), TerminateProcess() (윈도우)

 

프로세스 상태 확인:

- wait() 및 waitpid() (유닉스/리눅스), GetExitCodeProcess() (윈도우)

 

프로세스 간 통신 (IPC):

- 프로세스 간의 통신을 위한 메커니즘을 제공

- 파이프, 메시지 큐, 공유 메모리, 소켓 등

 

프로세스 정보 조회:

- 현재 실행 중인 프로세스의 정보 (예: PID, 실행 시간, 메모리 사용량 등)를 조회

예: /proc 파일 시스템 (유닉스/리눅스), GetProcessInformation() (윈도우)

 

프로세스 우선순위 제어:

- nice() 및 renice() (유닉스/리눅스), SetPriorityClass() (윈도우)

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

프로세스  (0) 2024.08.10