[운영체제] 3. 프로세스

서요이·2022년 10월 11일
0

운영체제

목록 보기
3/12
post-thumbnail

3. 프로세스

프로세스의 개념

프로세스는 실행중인 프로그램이다

프로세스의 문맥 (context)

  • CPU 수행 상태를 나타내는 하드웨어 문맥: Program Counter, 각종 Register
  • 프로세스의 주소 공간: code, data, stack
  • 프로세스 관련 커널 자료 구조: PCB, Kernel stack

프로세스의 상태

  • Running: CPU를 잡고 instruction을 수행중인 상태
  • Ready: CPU를 기다리는 상태(메모리 등 다른 조건 모두 만족)
  • Blocked (wait, sleep):
    CPU를 주어도 당장 instruction을 수행할 수 없는 상태
    요청한 event가 만족되지 않아 기다리는 상태 (오래 걸리는 작업 등)
  • New: 프로세스가 생성중인 상태
  • Terminated: 프로세스가 종료중인 상태

PCB를 통해서 각 프로세스가 어떤 상태인지 관리
CPU가 넘어가려면 인터럽트 발생해야 함

Process Control Block (PCB)

운영체제가 각 프로세스를 관리하기 위해 프로세스마다 유지하는 정보

  • OS가 관리상 사용하는 정보
    • 프로세스 상태, 프로세스 ID, 우선순위 관리
  • CPU 수행 관련 하드웨어 값
    • Program Counter - CPU를 뺏기기 전에 상태 저장
  • 메모리 관련
  • 파일 관련

문맥 교환 (Context Switch)

CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
CPU 내어주는 프로세스의 상태 저장, CPU 얻는 프로세스 상태 읽어옴 → PCB

주의!! 사용자 프로세스 A에서 커널로 CPU가 넘어가는 것은 문맥 교환 X

문맥 교환이 일어나는 경우 overhead가 훨씬 큼 (ex. cache memory flush)

프로세스를 스케줄링하기 위한 큐

  • Job queue: 현재 시스템 내 모든 프로세스
  • Ready queue: CPU 실행 기다리는 프로세스
  • Device queues:I/O device 처리 기다리는 프로세스

스케줄러 (Scheduler)

  • Long-term scheduler (장기 스케줄러 / Memory scheduler)
    • 프로세스에 memory를 주는 문제
    • degree of Multiprogramming을 제어
    • time sharing system에는 보통 장기 스케줄러가 없음
  • Short-term scheduler (단기 스케줄러 / CPU scheduler)
    • 프로세스에 CPU를 주는 문제
    • 매우 자주 호출, 충분히 빨라야 함
  • Medium-term scheduler (중기 스케줄러 / Swapper)
    • 모든 프로세스 ready 상태로 만든다
    • 메모리 부족하면 프로세스를 통째로 디스크로 쫓아냄
    • 프로세스에서 memory를 뺏는 문제
    • degree of Multiprogramming을 제어

프로세스 상태 추가

Suspended (stopped)
외부적인 이유(OS, 사람 등)로 프로세스 수행이 정지된 상태

Blocked: 자신이 요청한 event 만족되면 Ready - active
Suspended: 외부에서 resume해 주어야 Active - inactive

Blocked → Suspended Blocked
Ready → Suspended Ready
Wakeup을 통해 넘어갈 수 있음

Thread (lightweight process)

CPU 중에서 프로세스 실행 단위
동일한 프로그램을 여러개 실행하면 프로세스 하나만 생성해서 공유
각 프로그램에서 실행중인 부분만 따로 관리
PCB에서 Program counter, Register값 따로 관리
문맥 교환이 필요 없기 때문에 효율적

Thread = Program counter + register set + stack space

동료 thread와 공유하는 부분: code, data, OS resources

Thread 장점

  • Responsiveness - 한 스레드가 blocked 상태인 동안에 동일 태스크 내의 다른 스레드가 실행되어 빠른 응답 가능
  • Resource Sharing
  • Economy - 프로세스 1개 만드는 경우가 스레드 1개 만드는 경우에 비해 overhead 30배 / 문맥 교환 overhead 5배
  • Utilization of MP Architectures

Thread 구현

  • Kernel Threads: 운영체제가 스레드의 존재를 알도록 구현
  • User Threads: 운영체제가 스레드의 존재를 모름 → 프로세스 내부에서 처리

0개의 댓글