HANDS.log
로그인
HANDS.log
로그인
프로세스(Process)
HJ
·
2021년 6월 20일
팔로우
0
OS
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"인 것을 확인할 수 있음
입력코드
출력화면
(참조 : 인프런 "운영체제 공룡책 강의")
HJ
Hard & Soft
팔로우
다음 포스트
프로세스간 통신(IPC)
0개의 댓글
댓글 작성
관련 채용 정보