OS - Process Management

Shyuuuuni·2023년 4월 18일
0

운영체제

목록 보기
1/2
post-thumbnail

CS 복습을 위해 강의 영상을 정리한 내용을 공유합니다.
전체 정리는 Notion을 참고해주세요.

Process

Job vs Process

  • Job, Program : 실행 할 프로그램과 데이터 (실행 요청 전의 상태)
  • Process : 실행을 위해 시스템(커널)에 등록된 작업. 성능향상을 위해 프로세스는 커널이 관리한다. (시스템에 등록되어 메모리를 할당 받은 프로그램)

프로세스의 여러가지 정의(면접대비)

  • 커널에 등록된 작업
  • 리소스를 요청하고 할당받을 수 있는 개체
  • 프로세스 관리 블록(PCB)를 할당 받은 개체
  • 능동적인 개체 - 리소스 요구,할당,반납 가능
  • 실행중인 프로그램

프로세스 종류

  • 역할에 따라 : 시스템(커널) 프로세스 / 사용자 프로세스
  • 병행 수행 방법에 따라 : 독립 프로세스 / 협력 프로세스

리소스 종류

  • 리소스 : 커널의 관리 하에 프로세스에게 할당/반납이 가능한 수동적인 개체.
  • HW 리소스 : 프로레서, 메모리, 디스크, 모니터, 키보드 등
  • SW 리소스 : 메세지, 시그널, 파일, SW 등

PCB (Process Control Block)

PCB란?

  • OS가 프로세스 관리에 필요한 정보를 저장하는 개체
  • 프로세스가 생성되었다 = PCB가 생성되었다
  • 프로세스는 메모리에 있고, 그 프로세스를 관리하는 PCB는 커널 영역에서 관리한다.

PCB가 관리하는 것들

PCB = 운영체제가 프로세스를 관리하기 위한 것.
운영체제에 따라 다르다!

  • PID : 프로세스 식별 번호
  • 스케줄링 정보
  • 프로세스 상태 : 리소스 할당을 요청했는지 등
  • 메모리 관리 정보 : 페이지 테이블, 세그먼트 테이블 등
  • 입출력 상태 정보 : 입출력 장치 정보, 파일 정보 등
  • 컨텍스트 저장 영역 : 프로세스의 레지스터 상태를 저장 (=Context)
  • 계정 정보 : 계정 정보, 자원 사용 시간 등

Process States

상태

  • state = 자원간의 상호 작용에 의해 결정되는 것

active state

  • 메모리를 할당 받은 상태에서 작동.

1. created

  • “생성된 상태”
  • 프로그램(작업)이 커널에 등록된 직후 최초의 상태
  • 이 상태 단계에서 PCB와 함께 프로세스가 생성된다.
  • 다음 상태 : ready, suspended ready
    • 쓸 수 있는 메모리 공간이 있으면? ready
    • 없으면? : suspened ready

2. ready

  • 프로세서 외 다른 모든 자원을 할당 받은 상태”
    • 프로세서 : CPU와 같은 장치
    • 즉, CPU만 있으면 즉시 실행 가능한 상태
  • 다음 상태 : running
    • dispatch 혹은 schedule 되면 CPU를 할당 받는다.

3. running

  • 프로세서 + 리소스를 모두 할당 받은 상태(실행중)
  • 다음 상태 : ready, asleep
    • preemption(프로세서를 뺏김) 당하면 ready
    • IO와 같은 자원 할당 요청에 의해 블록 당하면 asleep

4. blocked, asleep

  • 프로세서 외의 다른 리소스를 기다리는 상태 (반대: 프로세서를 기다림 = ready)
  • 다른 리소스는 system call에 의해 할당된다.
  • 다음 상태 : asleep → ready
    • 바로 running으로 돌아갈 수 없음.
    • wake up 이라는 호출을 통해 ready상태가 되기를 기다렸다가 running으로 돌아간다.

4. terminated(zombie)

  • 프로세스의 작업이 모두 수행이 끝난 상태
  • 모든 리소스를 반납 + 커널 내 일부 PCB 정보만 남긴다. (이후 프로세스 관리를 위한 정보 수집을 목적)

suspended state (지연된)

  • 메모리를 할당 받지 못한 상태에서 작동.
  • suspended = 메모리 없이 ready or blocked 된 상태
  • 메모리를 뺏긴다 = swap-out, 메모리를 받는다 = swap-in
  • 그렇다면 메모리에 작성되어 있던 프로세스의 작업 정보는?
    • 진행중인 작업을 따로 보관하게 된다.
    • 메모리의 상태를 저장하는것 = 메모리 이미지 (memory image)
    • 메모리 이미지는 swap device에 저장한다.

Interrupt

인터럽트

  • 예상치 못한 or 외부에서 발생한 일종의 이벤트
  • 언제?
    • I/O
    • Clock (CPU clock과 연관)
    • Console (콘솔창에 뭔가 입력해서 발생)
    • Program check (프로그램 문제 발생 시)
    • Machine check (하드웨어 문제 발생 시)
    • Inter-process (다른 프로세스에서 발생)
    • system call

인터럽트 처리

  1. 인터럽트 발생 (외부 환경 → 프로세스)
  2. 커널이 하고 있던 프로세스를 중단시킴
  3. 인터럽트를 처리함
    • Interrupt handling : 인터럽트의 발생 위치와 원인 체크 → 인터럽트를 서비스 할 지 결정(서비스가 필요한지)
    • interrupt service : 만약 서비스가 필요하다면 인터럽트 서비스 루틴을 호출함.

인터럽트 처리 과정(details)

  1. 인터럽트 발생
  2. 프로세스에서 Context Saving 이라는 과정을 통해, 현재 실행 정보를 PCB에 저장
  3. 커널 개입으로 인터럽트 핸들링 시작
    • 원인 파악
    • 처리하기 위해 어떤 서비스 루틴이 필요한지 확인
  4. 결정된 인터럽트 서비스를 호출 (서비스 = 일종의 프로그램) → 프로세서에서 실행중이던 프로세스 대신 서비스를 가져와서 실행함
  5. 서비스가 끝나게 되면, ready 상태에 있던 프로세스 중 하나를 다시 프로세서에 할당
    • 기존에 실행중이던 프로세스가 실행될 수 있지만, 스케줄링에 따라서 다른 프로세서도 들어올 수 있음.
    • 프로세스가 프로세서에 다시 할당되면, Context Saving 과정을 통해 저장했던 정보를 Context Restoring 과정을 통해 가져옴.

Context Switching

  • Context : 우리말로 문맥, 프로세스(혹은 프로세스 실행)와 관련된 정보들의 집합
    • CPU → Register를 가지고 있음. 반드시 데이터를 레지스터에 올리고 그걸 가지고 작업을 함. → 이때 레지스터에 가져온 정보드를 register context라고 한다.
    • 그 외 코드나 데이터, 스택, PCB → 메모리 안에 저장된 context
  • Interrupt에 의해 교체되는 과정 : CPU에서 실행되던 프로세스의 정보를 교체함 ⇒ CPU Register Context를 저장하고, 가져와야 함.
    • Context Saving : 현재 프로세스의 register context를 PCB안에 저장ㅇ
    • Context Restoring : Register Context를 프로세스에 복구
  • Context Switcing : 실행중인 프로세스의 context를 저장, 앞으로 실행할 프로세스의 Context를 복구하는것 (saving + restoring)
    • 커널이 개입해서 처리

Overhead

  • OS마다 다름. 성능에 큰 영향
  • 불필요한 context switching을 줄여야 오버헤드를 줄일 수 있음.
    • 가능하면 context switching을 줄이자.
    • 가장 대표적인 방법 : 스레드
profile
배짱개미 개발자 김승현입니다 🖐

0개의 댓글