개발자 노트

[프로세스관리]2.CPU스케쥴링3.프로세스생성과종료 본문

컴퓨터과학 기초/운영체제

[프로세스관리]2.CPU스케쥴링3.프로세스생성과종료

jurogrammer 2020. 4. 7. 15:37

출처 : http://www.kocw.net/home/search/kemView.do?kemId=978503 (경성대 양희재교수님 자료)
operation system concepts(공룡책)

II. 프로세스 관리

2.CPU 스케줄링

CPU Scheduling

ready queue에 있는 프로세스에게 cpu를 어떻게 할당해줘야 좋을까?

  • 좋고 나쁨을 평가하는 기준
    • CPU Utilization
      • cpu 사용시간 중 cpu가 서비스 해준 시간 (busy_time/(busy_time+idle_time)) (단위 %)
    • Throughput
      • 단위 시간당 몇 개의 job이 끝났는지 (단위 : sec,min,hour 등)
    • Turnaround time
      • ready queue 진입 ~ terminated 상태까지 시간 (단위 : sec)
    • Waiting time(대기시간)
      • ready queue에서 얼마나 기다렸는지 (단위 sec)
    • Response time(응답시간)
      • 요청을 보낸 후부터 첫 응답이 나올 때 까지 걸린 시간

CPU Scheduling Algorithms

어떻게 할당해줘야할 지에 대한 내용

종류

  • First-Come,First-Served(FCFS)
  • Shortest-Job-First(SJF)
    • Shortest-Remaining-Time-First
  • Priority
  • Round-Robin(RR)
  • Multilevel Queue
  • Multilevel Feedback Queue

3.프로세스 생성과 종료

  • 프로세스는 프로세스에 의해 생성 된다.

  • 부모/자식 프로세스

    • 부모 프로세스
      • 프로세스를 생성한 프로세스
    • 자식 프로세스
      • 부모 프로세스에 의해 생성된 프로세스
    • 부모 자식 프로세스는 tree형태를 지님
    • 리눅스 시스템은 최초로 init프로세스가 생성되고 kthreadd, sshd 프로세스가 생성됨.
  • PID

    • 프로세스 고유 번호
    • 이걸로 시스템 내 process를 유일하게 구분 지을 수 있다.
  • 프로세스 생성시 고려할 두가지

    • 프로세스를 만들 때 두가지 실행 버전이 있음
      • parent process가 child process와 concurrent하게 실행됨
      • child process가 terminated될 때까지 대기
    • address-space에 대한 두가지 케이스
      • child process가 parent process를 그대로 복사한다.(완전 동일한 프로그램이 됨)
      • 새로운 프로세스로써 메모리에 올라감.
    • fork()
      • 부모 프로세스를 복사하고 새로 할당받음. 즉, 새로운 프로그램.
      • 프로세스간 통신을 쉽게하기 위해 사용
    • exec()
      • 부모 프로세스 메모리에 실행파일(binary)을 덮어버림.

 

위 그림을 보면 fork()로 프로세스를 생성한 후, 부모 프로세스는 자식 프로세스 결과가 반환될 때까지 ready queue에 대기 (operating system concepts 책에선 ready queue에 대기한다고 하였으나 인터넷 검색시 waiting queue에 대기한다고 나온다. 내 생각엔 ready queue에 대기하면 cpu 할당받는 프로세스가 되어 busy waiting이 되기 때문에 ready queue에 있으면 안될 것이다.)

자식 프로세스는 exec()로 실행파일을 덮어씌운 뒤 모두 실행되면 exit()로 반환.

부모 프로세스는 재시작.

  • 프로세스간 통신 방식

    • shared memory
    • message passing
  • 프로세스 종료

    • exit() system call
    • 해당 프로세스가 가졌던 모든 자원을 OS에게 반환한다.
반응형
Comments