1 / 11

fork 시스템 호출

fork 시스템 호출. 컴퓨터 공학과 2008243058 장준용. 목 차. 1. fork 시스템 호출이란 ?. 2. fork 예제 프로그램 소스 설명. 3. delay loop 를 변경 했을 때의 결과. 4. 분석 결과. 5. 참고사항. 1. fork 시스템 호출이란 ?. UNIX 시스템에서 프로세스를 생성하는 시스템 호출 함수 현재 프로세스와 똑같은 프로세스를 만듦 부모 프로세스 : fork() 를 호출한 프로세스 자식 프로세스 : 생성된 프로세스.

Download Presentation

fork 시스템 호출

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. fork 시스템 호출 컴퓨터 공학과 2008243058 장준용

  2. 목 차 1. fork 시스템 호출이란? 2. fork 예제 프로그램 소스 설명 3. delay loop를 변경 했을 때의 결과 4. 분석 결과 5. 참고사항

  3. 1. fork 시스템 호출이란? UNIX 시스템에서 프로세스를 생성하는 시스템 호출 함수 현재 프로세스와 똑같은 프로세스를 만듦 부모 프로세스 : fork()를 호출한 프로세스 자식 프로세스 : 생성된 프로세스

  4. 1. fork 시스템 호출이란? 성공 호출 pid = 자식 프로세스 ID 실패 부모 프로세스(원본) 자식 프로세스(복사) 부모 프로세스(원본)

  5. 2. fork 예제 프로그램 소스 설명 #include <stdio.h> main(argc,argv) intargc; char *argv[]; { char ch, first, last; intpid; long i; if((pid = fork())>0) { /* parent */ first = 'A'; last = 'Z'; } 부모 프로세스일 경우에는 리턴 값으로 자식 프로세스의 ID를 반환하므로 0보다 큼 부모 프로세스는 for문에서 대문자 A~Z를 출력할 예정

  6. 2. fork 예제 프로그램 소스 설명 else if(pid == 0) { /* child */ first = 'a'; last = 'z'; } else { /* not fork(2) */ perror(argv[0]); exit(1); } 자식 프로세스일 경우에는 리턴 값으로 0을 반환 받음 자식 프로세스는 for문에서 소문자 a~z를 출력할 예정 프로그램 종료 프로세스 생성을 실패했을 경우 리턴 값 -1 반환 받음.

  7. 2. fork 예제 프로그램 소스 설명 printf("\n"); for(ch = first; ch <= last; ch++) { /* delay loop */ for(i=0; i<= 100000; i++); write(1, &ch, 1); } } 부모, 자식 프로세스가 공동으로 수행하는 부분. 부모 : 대문자 A~Z 자식 : 소문자 a~z를 출력 delay loop=100,000일때의 결과

  8. 3. delay loop를 변경 했을 때의 결과 delay loop=10일때 delay loop=20,000,000일때

  9. 4. 분석 결과 동일한 프로그램을 수행하나 서로 데이터의 교류가 이루어 지지 않음 delay loop를 이용하여 프로세스의 작업 수행을 지연시킴 (출력문 작업) 각 프로세스가 수행하는 순서대로 결과 출력(알파벳 순 / 꼭 AaBb…순이 아님)

  10. 4. 분석 결과 delay loop의 크기에 따라 결과가 다른 이유? delay loop에 의해 프로세스의 작업수행 을 지연 시킴 (Time Quantum 동안 출력문+delay loop를 반복) Time Sharing에의해 프로세스의 CPU 점유권이 바뀜 delay loop가 길수록 Time Quantum 동안 다른 작업을수행할 시간이 줄어듬 delay loop가 길수록 결과의 출력속도 또한 느려짐 (작업수행 지연으로)

  11. 5. 참고사항 구현환경 telnet rainbow.sunmoon.ac.kr vi 에디터, gcc사용 참고자료 Operating System Concepts 네이버 백과사전 블로그: http://nobless_05.blog.me/ 50083890961

More Related