프로세스(Process)

HJ·2021년 6월 20일
0

운영체제

목록 보기
2/3

Process

  • 프로그램이 메모리에 로드된 상태(a program in execution)

프로세스의 주기/상태(Process state)

  • New : the process is being created
  • Running : Instructions are being executiond1
  • Waiting : the process is waiting for some event to occur
    - such as an I/O completion or reception of a signal
  • Ready : the process is waiting to be assigned to a processor
  • Terminated : the process has finished execution



Pid(프로세스 id)

  • 아래와 같은 코드에서 Parent Process 및 Child Process에서의 pid 값은 다음와 같음
    => Parent Process : pid > 0
    => Child Process : pid = 0
입력코드출력화면

fork() 시, 전역변수의 상태값 확인

  • 아래 코드에서 Child Process의 전역변수(value) 값은 20으로 변동되지만 바로 해당 Process가 종료되며, Parent Process의 전역변수(value) 값은 아무 변동이 없는 것을 알 수 있음
입력코드출력화면

아래의 경우, 만들어지는 Process의 개수 : 총 8개

  • Process의 개수 변화 : 1개 => 2개 => 4개 => 8개
입력코드출력화면
Process 생성 흐름

아래의 경우, 만들어지는 Process의 개수 : 총 16개

  • 단, 반복 적용으로 인해 printf로 출력되는 라인의 개수는 16보다 더 큰 것을 확인할 수 있음
입력코드출력화면

execlp() 함수

  • execlp() : fork()로 인해 생성된 Process의 메모리 레이아웃에 주어진 내용을 덮어씀
  • 아래 코드에서 "printf("LINE J\n");"는 실행되지 않는 것을 확인할 수 있음
    => "/bin/ls"로 해당 내용이 덮어씌워졌기 때문에 execlp() 이후의 코드는 아무 의미가 없음
입력코드출력화면

getpid() 함수

  • pid를 확인하는 함수
  • 아래의 출력결과를 통해 Parent Process의 id는 "5156"이고, Child Process의 id는 "5157"인 것을 확인할 수 있음
입력코드출력화면

(참조 : 인프런 "운영체제 공룡책 강의")

profile
Hard & Soft

0개의 댓글