Jun 개발노트

운영체제 03

January 27, 2020

운영체제 3

  1. 프로그램과 프로세스의 차이점

    • 무덤 속 프로그램, 살아 움직이는 프로세스
  2. PCB(Process Control Block)

    • 프로세스에 대한 모든 정보

      • 프로세스 상태(running, ready, waiting)
      • PC, registers, MMU info, CPU time…
  3. Job Que : 하드디스크에서 메인 메모리로 들어오기 위한 줄

    • Job Scheduler : long term Scheduler -> 시간이 올래걸린다.
    • 메인메모리에 올라오는 프로세스가 한쪽으로 쏠리는(IO / 연산)것을 방지하기 위해 적절히 배분해준다.
  4. Ready Que : CPU 서비스를 받기 위한 줄(PCB Number에 따라)

    • CPU scheduler : Short term Scheduler -> 시간이 잛다.
    • CPU 서비스를 누가 먼저 받을 것인가?
  5. Device Que : 프린터 작업
  6. 멀티프로그래밍 : 메인메모리에 여러개의 프로세스가 올라와있는 상태

    • Medium-term scheduler
    • 파워포인트를 켜놓고 다른 일을 하면, 파워포인트는 메인 메모리에서 자리만 차지하고 있다.
    • 대기하는 프로세스를 하드 디스크의 Backing Store로 Swapping(이동)
    • 메인 메모리에 자리가 비웟다면 다시 Swapping 시켜 원위치를 시켜준다.
  7. 하드디스크 : 파일시스템 / Backing Store(대기하고 있는 프로세스들의 공간)
  8. Context Switching : CPU가 하는일 바뀌는 거 (1번 일하다가, 2번일 하는거)
  9. CPU Scheduling : Ready Que에서 누가 먼저 들어갈래 ?? 스케줄링
  10. dispatcher
  11. 메인메모리에 올라와있는 프로세스과 전환이 되면서 원래 작업하던 프로세스 정보를 저장하고 다음 프로세스 정보를 불러오는 것(운영체제 안에 있다.)
  12. Context Switching OverHead : dispatcher가 자주 발생하면 오버헤드 발생

CPU 스케줄링

  1. Preemptive vs Non-preemptive : 선점(응급실에서 급한 사람이 있으면 먼저 처리), 비선점(은행 줄)
  2. 스케줄링하는 기준

    • CPU Utilization (CPU 이용률)
    • Throughput (처리율)
    • Turnaround time (반환시간) process 시작 시간 부터 종료 시간까지
    • Waiting time (대기시간) cpu서비스 받기 전까지
    • Response time (응답시간) 첫 응답시간
  3. First-Come, First-Served (FCFS)

    • 자료구조 큐와 같음
    • 장점 : 균일
    • 단점 : 호위효과(대기자가 계속 기달린다 like 호위자 같다)
  4. Shortest-Job-First (SJF)

    • 실행시간이 짧은 것 부터 먼저 실행
    • 가장최고의 방법이지만, 실행시간을 아는것은 예측일뿐이다. 비현실적이다. – Shortest-Remaining-Time-First

      • 첫 작업은 도착순서에 따라 작동하고
      • 작업 중에 여러 프로세스가 도착한다면 도착한 것 중에 짧은것을 기준으로 먼저 실행
      • 먼저 하던 작업은 다른 프로세스들과 경쟁
  5. Priority : 우선순위에 따라 실행

    • 우선순위 기준

      • 내부 : time limit, memory requirement, i/o to CPU burst
      • 외부 : amount of funds being paid, political factors
    • 문제

      • 우선순위에 밀려서 계속해서 기달리는 상태 기아 => 해결책 : 대기시간이 늘수록 우선순위 높여줌
  6. Round-Robin (RR)

    • 일정시간을 기준으로 프로세스를 변경해준다
    • 일정시간이 무한대면 큐처럼 작동한다
    • 일정시간이 0에 수렴하면 오버해드 발생
  7. Multilevel Queue

    • 프로세스 그룹화 목적에 따라 다른 알고리즘 적용
  8. Multilevel Feedback Queue

    • 프로세스를 계속해서 돌면 다른 알고리즘을 사용하는 그룹으로 이동
    • RR -> FCFS -> SJF
  9. CPU(PC / SP (프로그램 카운터 / 스택 포인트)) --- MMU(Base register / limit register) ---- Main Memory

프로세스 생성

  1. 프로세스는 프로세스에 의해 만들어진다(부모, 자식, 프로세스 트리)
  2. 운영체제가 부팅이 되고 나서 첫 프로세스를 만듬(유닉스는 init 이라고 한다)
  3. 프로세스 트리에 대한 번호 == 유니크한 번호(죽은 이후에는 다시 쓸수 있음) PPID == 부모 번호
  4. 새로운 프로세스를 만든다 포크한다 fork() => 시스템콜 = 부모프로세스를 복사
  5. 실행파일을 메모리에 가져온다 exec() => 시스템 콜

프로세스 종료

  1. exit() system call
  2. 해당 프로세스가 가졋던 모든 자원은 os에게 반환

쓰레드

  1. 프로그램 내부의 흐름, 맥 : 쓰레드
  2. 쓰레드가 빠른 시간 간격으로 스위칭 된다. => 쓰레드가 동시에 실행되는 것처럼 보인다.

    • 한 프로세스에는 기본 1개의 쓰레드 - 단일 쓰레드 (single thread) 프로그램
    • 한 프로세스에 여러 개의 쓰레드 - 다중 쓰레드 (multi-thread) 프로그램
  3. 운영체제 발전에 따라 Context Switch단위가 프로세스 -> 쓰레드
  4. 쓰레드 구조

    • 프로세스의 메모리 공간 공유 (code, data)
    • 프로세스의 자원 공유 (file, i/o, …)
    • 비공유: 개별적인 PC, SP, registers, stack

Written by Junho You 배운것을 기록하자