시스템프로그래밍 Lecture9. process-fork
- 최초 등록일
- 2015.01.04
- 최종 저작일
- 2013.05
- 7페이지/ 한컴오피스
- 가격 1,000원
소개글
수정할 곳 없는 정말 완벽한 보고서입니다.
보고서 쓰시는데 도움이 되었으면 좋겠습니다.
목차
Lecture9 : process-fork
1) Compile and run myfork1.c with &. Use “ps –f” to check what happened. Explain the result.
2) Predict the output for each example below. Confirm your prediction by running the program. Explain the result.
3) Write a program that creates 5 children. Make the parent and the children print some message repeatedly as follows.
본문내용
먼저 vi인 텍스트에디터를 이용하여 다음과 같이 myfork1.c를 작성한다.
소스파일을 컴파일하고 실행하면 다음과 같이 출력됨을 볼 수 있다.
처음 printf에 의해 hello를 출력한다. 다음으로 부모 프로세스가 fork를 통해 자식 프로세스를 생성하면서 x는 자식 프로세스의 PID를 받는다. 그러면서 부모 프로세스는 korea와 자식 프로세스 PID를 출력하고 무한 루프에 빠지게 된다. 또한 복제된 자식 프로세스는 x에 0을 받아 china와 0을 출력하고 무한루프에 빠진다. 이순서는 CPU에서 처리하는 순서에 따라 korea PID, china 0혹은 china 0, korea PID를 출력하고 무한루프에 빠진다.
./myfork1 &을 실행 후 ps –f 명령어를 통해 현재 2개의 myfork1이 돌아가는 것을 확인할 수 있다. 처음 ./myfork1 &을 통해서 다음 라인에 출력된 18463이 myfork1 즉, 부모의 PID이고, ps를 통해 확인한 것에서 18463밑에 있는 18464의 myfork1이 부모 myfork1에서 fork()를 통해 복제된 자식 프로세스라는 것을 알 수 있다.
<중 략>
- 예상: 부모는 자식 프로세스를 하나 복제할 것이다. 그리고 복제한 후 CPU의 프로세스 실행에 따라서 자식이 먼저 실행 될 경우 korea, done 출력 후 china, done이 출력될 것이고, 부모가 먼저 실행 될 경우 그 반대로 china, done, korea, done이 출력될 것이다. 혹은 자식과 부모 프로세스가 실행이 완료되기 전에 서로 다른 프로세스가 실행이 된다면, korea, china, done, done 혹은 china, korea, done, done이 나올 수도 있다.
- 실행화면: 여러 가지 경우 중 부모가 먼저 실행된 경우를 확인 할 수 있다.
참고 자료
없음