프로세스 계층

TAEWOO HA·2023년 5월 3일
0

File

목록 보기
3/3

Process IDs (PID)

  • 프로세스에 부여된 식별 번호

  • 부모 프로세스

    • 자신을 생성한 프로세스
      • 모든 프로세스는 부모 프로세스가 있음
      • 최상위 프로세스 = kernel (pid=0)
    • PPID

Running a new process

Executing a new program

  • 바이너리 프로그램을 읽어서 자신을 호출한 프로세스의 메모리 영여겡 덮어 씀. 기존 프로그램은 중지 됨

Creating a new process

  • 자신을 호출한 프로세스를 복사하여 새로운 프로세스를 생성
    • forking

printf가 출력되지않는다. 이유 : 기존이 종료가 되고 메모리는 새롭게 실행한 것이 차지한다.

execv, argv는 argv가 string의 배열이 된다. 첫번째 인자는 ls
마지막은 null

프로세스를 호출한 메모리 영역에 ls의 바이너리 프로그램을 복사했기 때문에
after는 더이상 실행되지 않는다.

[fork()]

  • 자신을 복사해 새로운 프로세스 생성
  • 부모와 자식 프로세스의 수행은 동시 진행
  • return -1 : 에러
  • 부모 프로세스 : 자식 프로세스의 PID

end of fork가 각각의 독립성을 가지고 2번 출력된다.

자식의 종료 상태를 얻어오는 방법

status : exit staus를 저장할 위치

자식이 여러명일 경우 특정 자식을 가져오기

  • option

    • WNOHANG
      • 자식이 종료하기 전이라도, 상태값 바로 반환
      • 대기하지 않고 수행을 계속 함
    • WNOWAIT
      • 상태 값을 반환한 자식 프로세스를 대기 상태로유지
      • 다시 exit status를 요청할 수 있음

0개의 댓글