운체_w3

네코·2022년 3월 21일
0

운영체제

목록 보기
2/6

프로세스

프로그램: 컴파일 되어 나온 실행 파일
프로세스

  • 실행되는(디스크에 저장된 프로그램을 메모리에 올려 cpu가 실행) 프로그램
  • 다양한 리소스를 갖음(메모리,파일,소켓 등)
  • 자신만의 메모리 공간, 컨트롤 정보 갖음

프로세스 주기

new: 프로세스가 완전히 만들어지기 전 단계
ready: 만들어진 단계, cpu에 올리기만 하면 프로그램 실행 가능한 상태, 아직 올리진 않음
running : cpu에 올린 상태, 독점 막기 위해 time slice 존재
waiting : sleep(), read()등의 호출로 동작 대기, running 빠져나옴
작업 완료하면 ready상태로 / running상태의 프로세스의 time slice 보장하려고
terminate : 좀비 상태의 프로세스를 청소해주는 작업 필요함
ready, waiting
공 : cpu에서 돌아가지 않는 상태
차 : ready는 cpu에 올리면 실행됨 but waiting은 no

PCB(process control block)

def: 프로세스 정보를 담아두는 구조체
program counter: 다음 실행할 명령어의 주소를 가리킴

process Scheduling

def1 Multiprogramming : cpu의 성능 극대화, 여러 프로그램 실행하겟다는 것
def2 Time-sharing

p0(time slice), p1,2( I/O ) p3(cpu bound) 가 있음
p0는 time expired 되면 ready q로 들어감 (cpu 독점 막기위함)

process switching

p0, p1 있음, p0 실행 중에 interrupt, scheduler, wait system call등의 이유로 wait상태가 되어 p0->p1으로 running switching이 일어날 경우,
1. 먼저 save state of p0
2. reload state of p1 = 프로세스 running

process scheduling queue

  • job queue : 모든 프로세스를 관리하는 큐
  • ready q :
  • device q( waiting q가 상위 특정 리소스에 대해 waiting 할 경우마다 존재함 msg q, socket q 등, device I/O시)

Schedulers

def: 어떤 프로세스를 다음에 실행할 것인지 고르고 cpu에 할당함.
일반적으로 short-term scheduler( = process scheduler)

context switch(=context switch)

실행 중인 p0 -> p1으로 context switch 될 때
1. Processor의 register 부분의 정보들이 메모리의 해당 프로세스의 PCB안에 저장됨
2. p1의 pcb의 정보가 processor register에 로드됨

Process Creation

def: 부모 프로세스가 자식 프로세스를 생성하는 것을 말함
각 ps는 pid를 갖고 잇음

ps 구조

p0(Sched)

  • init, user process의 가장 조상
    • inetd
    • dtlogin
  • pageout(커널모드), virtual memory 관리하는 demon
  • fsflush(커널모드), 갑작스런 상황에 대비 디스크 자동 저장하는 ?

fork하면 부모의 fd와 메모리를 그대로 받음. 이때 복제가 아닌 공유하는 방식
그러나 서로가 변경한 데이터는 볼수 없음. 각 프로세스가 따로 관리함

------------------ 3/17 ------------------(프로세스 스케쥴링_상)

process scheduling

  • 목적: 멀티프로그래밍을 가능하게 하여 cpu의 utilization을 극대화하는 것

  • 프로세스 실행의 구성

    • cpu burst : cpu 실행
    • i/o burst : i/o wait 구간
      i/o가 많이 발생할 수록 cpu burst 타임이 짧음.
      i/o bound process: 짧은 cpu burst 많음
      cpu bound ps: 긴 cpu burst가 적게 있음
  • Process Scheduler: ready 상태의 프로세스들 중 실행할 프로세스를 선택
    -경우

    • running 중인 process가 i/o등의 이유로 waiting 상태될 때 ready 중 하나 선택
    • time slice로 인해 expired되면 running 중인 ps는 ready로 , ready 중 하나 선택
    • terminate 되면 ready 중 하나 선택
      -종류
    • Non-preemptive scheduling
    • preemptive scheduling
      강제적으로 실행 중인 프로세스를 정지시키는 방법(위의 2번)
  • dispatcher : cpu에 올림

  • Scheduling Criteria

    • CPU utilization : 기준 시간에 대해 cpu에 동작하는 시간

    • Turnaround time : 프로세스 실행 시간

    • Waiting time : ready상태에서 running되기 전에 기다리고 있는 시간

    • Response time : event를 받아서 event의 결과를 출력할 떄까지 걸리는 시간

  • 이상적인 스케쥴링 알고리즘
    Max cpu util
    Max throughput
    min turnaround time
    min waiting time
    min response time

  • 스케쥴링 알고리즘
    ready queue에 존재하는 프로세스들 중 하나를 선택해 cpu에 올리는 정책

    • first-come first-served(FIFO)
      non-preemptive
      그림에서 사격형(p1,p4)는 pcb임

    • Shortest-Job-First(SJF)
      non-preemptive
      cpu burst가 가장 작은 프로세스를 우선적으로 실행하는 방법
      이론적으로만 가능한 방법, 왜냐면 burst타임을 실행전에 예측할수 없기 때문에

    • priority Scheduling
      문제점 : low priority process는 실행되지 못할 수도 있음. (starvation)
      ->해결은 aging, cpu를 오래동안 사용하지 못한 ps의 우선순위를 증가시킴

    • round_robin_Scheduling
      대부분의 OS가 사용하는 방식, 이방법이 있어야 사용자는 여러개의 프로세스가 동시에 실행되
      는 것처럼 느끼고 각 프로세스가 cpu를 독점적으로 사용하는 것처럼 느끼게 해줌

      FIFO에서 확장된 것, 추가로 time quantum or time slice가 추가됨
      이 스케쥴은 모든 프로세스가 동일한 priority를 갖는다고 가정.

      프로세스가 cpu에 올라가면 동작하다가 time quantum만큼 소유하면 다시 ready queue의 맨뒤로 inser됨
      타임 퀀텀 만큼 실행되면 강제적으로 ready queue로 들어가는 것 떄문에 preEmptive방식임

      대부분 현재의 os에서 qunatum 은 10~100msec , context switching overheadsms <10 microsec으로 잡고 있음

    • multilevel queue scheduling
      ready 큐를 여러개 두는 것. 각 큐마다 서로 다른 스케쥴링 알고리즘을 적용함.

      • priority-based multilevel queue scheduling
        starvation의 문제가 잇음 realTimeOs는 이걸 감안하고 이 방식으로 운영함.

      • multilevel feedback-queue scheduling

    • windows xp scheduling

0개의 댓글