Post

5회차

이찬우

프로세스

프로세스와 프로그램의 관계

  • 프로세스: 프로그램 + 프로세스 제어 블록(PCB)
  • 프로그램: 프로그램 - 프로세스 제어 블록(PCB)

프로세스의 네 가지 상태

생성 상태

  • 메모리에 올라와 실행 준비 완료, PCB 생성

    준비 상태

  • CPU 사용권 대기 상태

    실행 상태

  • CPU 사용권을 얻어 작업 수행 중인 상태
  • 시간 내에 작업 완료 못하면 준비 상태로 변경, 다시 대기

    완료 상태

  • PCB가 사라진 상태

CPU 스케줄러

디스패치

  • 준비 상태의 프로세스 중 하나를 골라 실행 상태로 바꾸는 작업

프로세스의 다섯 가지 상태 (활성 상태)

  • 네 가지 상태 + 대기 상태

    대기 상태

  • 입출력 요청 시 입출력이 완료될때 까지 기다리는 상태
  • 입출력 완료 시 준비 상태로 변경

보류 상태, 휴식 상태

휴식 상태

  • 실행을 잠시 멈춘 상태

보류 상태

  • 작업이 보류된 상태
  • 메모리 부족, 프로그램 오류, 바이러스로 판단, 입출력 지연, 긴 주기의 프로세스 등등

용어 정리

디스패치

  • CPU 스케줄러가 준비 상태의 프로세스 중 하나를 골라 실행 상태로 바꾸는 작업, PID를 통해 이루어짐

PID

  • 프로세스 고유 식별 아이디, 구분자

생각한 점들

Sleep 함수

1
2
3
4
// 1초 쉬는 코드

::Sleep(1000)

작동 방식

  1. 1초동안 OS의 CPU 스케줄러에서 제외됨
  2. 1초 후에 다시 스케줄러에 등록됨

위험 요소

  • 스케줄러에서 제외 / 등록되는 시간
  • 프로세스 상태가 전환되는 시간 등등
  • 정밀한 시간 계산이 아님
  • OS의 상황에 따라 랜덤하게 시간이 변동됨

생각해 본 해결 방안

  • 임베디드 환경에서 아이디어 착안
  • 보드의 크리스탈(발진기)의 클럭에 맞춰서 타이머 or 인터럽트 구현
  • CPU의 클럭 계산에 따른 코드 구현 시 보다 정밀할 것으로 예상

김남영

프로세스

  • 프로그램 :
    하드 디스크 같은 저장장치에 보관, 정적인 상태
  • 프로세스 :
    실행을 위해 메모리에 올라온 동적인 상태


프로세스의 처리

  • 일괄 작업 방식 :
    한번에 하나의 작업만 처리함.
    작업 효율이 엄청 떨어짐.
  • 시분할 방식 :
    동시에 여러 프로세스를 실행하는 것과 같은 원리
  • 시분할 방식에서의 예상치 못한 상황 :
    유두리 없게 비효율적으로 처리 할 경우가 생긴다.


프로그램 to 프로세스

  • 프로세스 제어 블록 :
    1. 프로세스 구분자
    2. 메모리 관련 정보
    3. 각종 중간 값 : 프로세스가 어디까지 진행됬는지 알기 위한 값 표시


프로세스의 상태

  1. 생성
  2. 실행
  3. 완료


생성상태

  • 프로세스가 메모리에 올라와 실행 준비를 완료
  • 제어 블록이 생성된다.


준비 상태

  • 생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태


실행 상태

  • CPU를 얻어 작업을 수행하는 상태
  • 주어진 시간 다 사용 시 다시 준비 상태로 돌아와 큐의 끝으로 다시 들어옴.


완료 상태

  • 주어진 시간 동안 작업을 마침.
  • == 프로세스 제어 블록이 사라짐.

=> 실행할 프로세스를 선정하는 일은 CPU 스케줄러 가 담당한다.


추가된 준비 상태!

  • 대기 상태 :
  • 요구한 입출력이 완료될 때까지 기다리는 상태.
  • 중간에 다른 작업을 진행하므로 효율성이 높아진다.


프로세스의 관리


문맥 교환

  • CPU가 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업
  • 두 프로세스 제어 블록의 내용이 변경됨.

This post is licensed under CC BY 4.0 by the author.

© . Some rights reserved.

Using the Jekyll theme Chirpy