[OS]프로세스 생성, 복사(fork(), exec())

2025. 3. 24. 15:23·CS/운영체제

fork() 시스템 호출

개념

fork() 시스템 호출은 실행 중인 프로세스를 복사하여 새로운 프로세스를 생성한다. 새롭게 생성된 프로세스는 부모 프로세스와 동일한 내용을 가지며, 함수의 반환값을 통해 부모와 자식을 구분할 수 있다.

부모 프로세스: fork()의 반환값이 자식 프로세스의 ID(PID)이다.

자식 프로세스: fork()의 반환값이 0이다.

동작 과정

1. 부모 프로세스의 PCB(Process Control Block) 및 메모리 공간(데이터, 힙, 스택 영역)이 복사된다.

2. 새로운 PCB가 생성되고, 복사된 내용이 상속된다.

3. 하지만 일부 정보는 변경된다.(프로세스 구분자(PID), 부모 프로세스 구분자(PPID), 자식 프로세스 구분자(CPID), 메모리 관련 정보)

fork() 사용의 장점

빠른 프로세스 생성: 기존 프로세스를 복사하여 생성하므로 속도가 빠르다.

자원 상속: 부모 프로세스가 사용 중인 파일, 변수 등의 자원을 추가 작업 없이 상속할 수 있다.

효율적인 시스템 관리: 부모-자식 관계의 계층적 구조를 활용하여 프로세스를 효과적으로 관리할 수 있다.

exec() 시스템 호출

개념

exec() 시스템 호출은 기존 프로세스를 새로운 프로세스로 변경하는 역할을 한다. fork()가 새로운 프로세스를 생성하는 것과 달리, exec()는 프로세스 자체는 유지한 채 프로그램의 내용을 변경한다.

동작 과정

1. 기존 프로세스의 코드 영역이 새로운 프로그램의 코드로 대체된다.

2. 데이터 영역이 새로운 프로그램의 변수로 채워진다.

3. 스택 영역이 리셋된다.

4. 프로그램 카운터 및 각종 레지스터, 파일 정보 등이 리셋된다.

5. 하지만 PCB의 일부 정보(PID, PPID, CPID, 메모리 관련 정보)는 유지되므로 부모 프로세스로 복귀할 수 있다.

exec()의 종류

exec() 함수는 실행 방식에 따라 여러 변형이 있다.

execl(), execlp(), execv(), execvp(): 모두 동일한 기능을 수행한다.

차이점은 실행할 파일의 경로 지정 방식과 인자 전달 방식에 있다.

exec()의 활용

새로운 프로그램을 실행할 때 기존 프로세스를 유지하면서 실행 코드를 변경하는 데 유용하다.

fork()와 함께 사용하여 부모 프로세스는 유지하고, 자식 프로세스는 다른 프로그램을 실행하도록 할 수 있다.

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

[OS]스레드(thread)  (0) 2025.03.24
[OS]프로세스 계층 구조  (0) 2025.03.24
[OS]프로세스 구조, 오버 플로우  (0) 2025.03.23
[OS]문맥 교환  (0) 2025.03.23
[OS]프로세스 상태  (0) 2025.03.23
'CS/운영체제' 카테고리의 다른 글
  • [OS]스레드(thread)
  • [OS]프로세스 계층 구조
  • [OS]프로세스 구조, 오버 플로우
  • [OS]문맥 교환
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[OS]프로세스 생성, 복사(fork(), exec())
상단으로

티스토리툴바