본문 바로가기
Study/운영체제

[운영체제] 5. Process1 필기

by 코딩삐약 2021. 3. 18.
  • "Process is a program in execution"

  • 프로세스의 문맥(context)
    • CPU 수행 상태를 나타내는 하드웨어 문맥
  • Program Counter 어디를 가리키고 있나
  • 각종 register 어떤 값을 가지고 있었나
  • 프로세스의 주소 공간 ( 어떤 내용이 있는가)
    • Code, data, stack
  • 프로세스 관련 커널 자료 구조
    • PCB(Process Control Block)

운영체제가 프로세스를 관리하는 역할 - 프로세스가 하나가 실행될 때마다 관리하기 위해 data영역에 PCB 놓는다 - CPU, 메모리 얼마나 줘야할 나쁜 하는지 관리

  • Kernel stack - 커널 스택을 프로세스마다 별도로 두고 있다
  • 멀티태스킹, 타임 쉐어링 - 프로세스들이 번갈아 쓰기 때문에 문맥을 알고 있지 않으면 다음 CPU 잡았을 시점에 맞게 실행할 없다

 

 

  • CPU 하나 밖에 없는 상태로 정의
  • Running : CPU 잡고 instruction 수행중인 상태
  • Ready : 다른 모든 준비는 끝나 있고 CPU만있으면 실행할 있는 상태
  • Blocked : CPU 주어도 당장 수행할 없는 상태 (오랜 시간의 작업을 해야 하는 상태)

Ex) I/O작업

 

 

  • 해당하는 작업의 큐에 섰다가 완료되면 다시 Ready queue 이동

 

 

  • PCB
    • 운영체제가 프로세스를 관리하기 위해 프로세스당 유지하는 정보
    • 구성 요소 (구조체로 유지)

(1) OS 관리상 사용하는 정보

  • 프로세스 상태, 프로세스 ID(프로세스마다 숫자)
  • 프로세스에게 CPU 나눠 주기 위한 우선순위나 스케줄링 정보

(2) CPU 수행 관련 하드웨어

  • Program counter, registers
  • 어떤 값을 넣어서 수행하고 있었는가

(3) 메모리 관련

  • Code, data, stack 위치 정보

(4) 파일 관련

  • Open file descriptors…

 

  • 문맥교환 (Context Switch)
    • CPU 프로세스에서 다른 프로세스로 넘겨주는 과정
    • CPU 다른 프로세스에게 넘어갈 운영체제는 다음을 수행
      • CPU 내어주는 프로세스의 상태를 프로세스의 PCB 저장
      • CPU 새롭게 얻는 프로세스의 상태를 PCB에서 읽어

 

 

 

 

 

Cache memory flush - 다른 프로세스로 넘어가면 전의 프로세스를 지워야 부담이

 

  • 프로세스를 스케줄링하기 위한
    • Job queue
      • 현재 시스템 내에 있는 모든 프로세스의 집합
    • Ready queue
      • 현재 메모리 내에 있으면서 CPU 잡아서 실행되기를 기다리는 프로세스의 집합
    • Device queues
      • I/O device 처리를 기다리는 프로세스의 집합
    • 프로세스들은 큐들을 오가며 수행된다

 

 

 

  • 운영체제가 프로세스를 관리하는 PCB 세움

포인터로 연결함

 

 

  •  ready queue에서 기다리다가 CPU할당 이후 끝나면 다시

 

 

  • 각각의 자원별로 이번에 무슨 일을 할지, 하는 시간을 정하는
  • Long-term scheduler (장기 스케줄러 or Job scheduler) :
    •  New 상태에 있는 프로세스에 메모리를 줄지 줄지 결정 , 시작 프로세스 어떤 것을 ready queue 보낼지 결정
    • 멀티프로그래밍 (메모리에 여러 프로그램이 올라가는 개념)
    • Degree of Multiprogramming 제어
    • 메모리에 프로그램이 올라갈 것인지를 제어
    • 보통 사용하는 시스템에서는 없음 (무조건 ready 상태, 곧바로 메모리로 올라 )
  • Short-term scheduler (단기 스케줄러 or CPU scheduler)
    • 어떤 프로세스를 다음에 running 시킬지 결정
  • Medium-term scheduler(중기 스케줄러 or Swapper)
    • 너무 많이 올라가는 것을 중재하는 역할
    • 여유공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
    • Degree of Multiprogramming 제어
    • 일단 메모리에 올리고 중기 스케줄러로 제어

 

  • 중기 스케줄러로 인해 추가된 프로세스의 상태
    • Suspended(stopped)
      • CPU뿐만 아니라 외부에서 강제로 프로세스를 정지시킨 상태
      • 중기 스케줄러가 메모리를 뺏은 (두번째 )
      • 프로세스는 통째로 디스크로 swap out 된다
      • ) 사용자가 프로그램을 일시 정지시킨 경우(break key)

시스템이 여러 이유로 프로세스를 잠시 중단시킴

(메모리에 너무 많은 프로세스가 올라와 있을 )

 

  • Blocked : 자신이 요청한 event 만족되면 Ready
  • Suspended : 외부에서 resume 줘야 Active

 

 

 

User mode Running - 프로세스가 자신의 코드 실행

Monitor mode Running - 운영체제의 코드 실행 = 커널의 코드가 실행되고 있다

사용자 프로그램의 상태도를 나타내는