[운영체제] 6. 프로세스 관리

이호용·2021년 4월 6일
0

운영체제

목록 보기
5/12

아래 내용들은 양희재 교수님의 운영체제 강의를 듣고 정리한 내용입니다.

프로세스 관리(Process management)

  • 메모리에서 실행 중인 프로그램 (program in execution)

  • 위의 그림은 cpu, main memrry, 하드디스크이다.
  • 컴퓨터 부팅시, 부트로더가 동작하고, 부트로더에서 커널이 올바르게 동작하는지 확인후 정상적으로 된다고 확인을 받으면 운영체제를 불러와 main memorry에 얹는다.
  • 그리고 사용자가 하드디스크에 있는 테트리스나, 다른 프로그램을 실행시키면 main memorry에 추가적으로 올라간다.
  • 이러한 프로그램들을 os에서 cpu자원을 유동적으로 할당해 처리해내는 식으로 컴퓨터가 동작한다.

1. 프로그램 올리는 순서

  • new, ready, running, waiting, terminated

  • new : 하드디스크 안에 프로그램을 메인메모리에 올리는 상태

  • ready : 올라온 프로그램이 초기화를 끝내고 돌리기전 모든 준비가 끝난 상태

  • running : 램위에 실제로 프로그램이 동작하고 있는 상태

  • wating : 만약에 프린트 프로그램같은 경우 프린트를 할때는 cpu가 연산할게 없다

    wating 갔다가 프린트 다하면 다시 running상태 될수 있다.

  • terminated : 프로그램 작업이 끝난 상태

    timesharing system 은 한가지 상황이 더 있는데, 빨간색으로 움직이는 상황임.
    일정 시간이 지나면, 다른 프로그래밍을 연산해야하기 떄문에, ready상태로 만들고 다음 프로그래밍을 running하러 가게된다.

2. PCB(Process Control Block)

  • 프로세스에 대한 모든 정보 (Task Control Block (TCB))

    pcb는 위의 그림처럼 프로세스를 돌릴때 같이 있는 테이블인데, 여기에 현재 동작중이던 레지스터의 정보나, 어디까지 작업했는지 등 해당 프로그램에 대한 정보들이 담긴다. 그래야 running에서 wating이나 ready로 넘어가도 다시 running했을때 데이터를 기억함.

  • p1,p2,p3 등의 pcb는 os에 존재한다

  • 해당 프로세스의 cpu를 얼마나 사용했는지 기록하(process state)기도 하고,

  • 해당 프로세스의 베이스 메모리 주소와, 마지막 limit 메모리주소를 저장하는데도 사용(MMU info)

  • cpu를 얼마나 사용하는지 저장을 해둠,(CPU time,) ex) cpu사용량을 저장해두고 비용을 지불하게 만들수도 있음.

  • 프로세스 아이디(이름)을 저장해두는데도 사용함(process id).

  • process state (running, ready, waiting, …), PC, registers,

  • MMU info (base, limit), CPU time, process id, list of open files, …

3. Queues

  • 프로그램을 실행시키면 메모리에 올라간다고 배웠다.
  • 그러나 실제로 프로그램을 올릴떄는 한가지 과정을 더 거친다.
  • 하드디스크의 데이터를 바로 클릭한다고 바로 메모리에 얹을 수 없고 앞에 먼저 램에 올라가길 대기하고 있는 프로그램이 있을 수 있다.
  • 그로인해 대기하는 시간이 발생하고, 컴퓨터가 일을 하다보면 이런 대기하는 프로그램이 여러개 생긴다.
  • 이런 대기하는 상태를 job queue라고 한다.
  • 그외에도 cpu 를 대기하는 곳, device를 대기하는 곳 이 있는데 이들을 모두 queue라고 한다.

1. Job Queue (os에 저장되어잇음)

  • Job scheduler
  • 램에 올라가기 전 대기하고 있는 프로그램 중 누구를 먼저 메인 메모리에 올릴지 결정하는것
  • Long-term scheduler
  • job queue는 메모리에 자리가 없을떄만 하면 되는거라 가끔해주면 됨. long-term

    잡 스케줄러는 i/o와 s/w프로그램을 골고루 배분하기 위해서 선택도한다.

2. Ready Queue

  • 이렇게 메인메모리에 올라간 프로그램들은 메모리에서 cpu의 연산을 받기까지 대기함. 이를 ready queue라고 함

  • CPU scheduler

    cpu 스캐줄러는 이러한 대기 인원중 어떤걸 먼저 cpu가 계산할지 정해줌

  • Short-term scheduler

    short-term scheduler는 여러개의 프로그램을 동시에 사용한다느 느낌을 받으려면 자주 프로그램을 바꾸어주어야 함으로 short 짤은 간격임.

3. Device Queue

  • 똑같이 프린트나 디스크 같은 보조장치를 쓸때도 여러 프로그램들이 줄을선다. i/o장치에서 대기할 떈 device queue라고 한다.
  • Device scheduler
  • device queue에 올라온 프로그램들중 누구를 먼저 처리할지 결정

4. Multiprogramming

  • 메인 메모리에 여러개의 프로그램을 올리는것

용어정리

  • Degree of multiprogramming (메인 메모리에 몇개의 프로그램이 올라와있나.)

  • i/o-bound vs CPU-bound process

  • i/o bound : 입출력을 많이하는 프로세스는 (워드프로세서 같은거 글자를 처리하는건 cpu가 처리할일이 별로 없다. 사람이 칠때 까지 기다리다가 입력하면 출력해줌)

  • cpu-bound : 슈퍼컴퓨터에서 하는 작업, 전국의 기상 데이터들을 모두 계산해서 앞으로의 날씨를 추측 계산량이 많다.

  • Medium-term scheduler
    – Swapping

    아래 그림을 보면, 하나의 서버를 3명이 공유하며 메인메모리에 a,b,c 세사람의 프로그램들이 올라와있다. 그중 b가 화장실을 간다고 자리를 비우면, 메모리에는 올라와있지만, b에서 프로그램을 동작할때 cpu는 아무것도 안하고 놀게된다. 이떄 swapping을 사용해, cpu가 놀고 있다는걸 os가 인지하고 b프로그램을 쫒아낸는 작업을 swapping이라고 한다.
    (이렇게 wapping 작업은 sort-term보다는 느리고, long-term보다는 짤게 일어나기 때문에 medium-term scheduler라고 함)

  • Context switching (문맥전환) : 램위에 올라가있는 프로그램을 cpu가 처리하다가 다른 프로그램으로 넘어갈떄를 문맥전환이라고 한다.
    – Scheduler (어떤 프로그을 cpu계산할지.)
    – Dispatcher (os 안에 프로세스 관리 부서 안에 dispatcher이라는 프로그램이 있다.)

    dispatcher 역활 : context할떄 현재 진행중이던 프로세서의 레지스터나 메모리 주소, 등 문맥전환전 필요한 데이터들을 pcb에 저장하고 새로 시작할 프로그램의 pcb데이터를 불러오는 역활

    – Context switching overhead

    이처럼 문맥전환을 할떄마다 데이터를 저장하고 불러오고 할떄, 해야할일들이 생기고 이러한 작업들을 switching overhead라고 한다.

0개의 댓글