본문 바로가기
IT/OS

[OS] 멀티프로그래밍과 멀티프로세싱(Feat. PCB, Context Switching)

by 퐁시냥 2022. 1. 15.
현대의 컴퓨터는 

멀티프로그래밍 + 멀티프로세싱

 

멀티프로그래밍이란?

  • 유니프로그래밍 : 메모리에 프로세스 1개
  • 멀티프로그래밍 : 메모리에 여러 개의 프로세스

멀티프로세싱이란?

  • CPU가 여러개의 프로세스를 동시에 처리(시분할처리)

스와핑(SWAPPING)이란? 

  • 저장장치에 있던 프로세스 ↔ 메모리의 프로세스
  • RAM에 저장공간이 부족할 때 일단 하드디스크(HDD나 SSD) 공간을 이용하고, 메모리 여유가 생기면 다시 RAM으로 옮겨오는 것

스와핑-Swapping
스와핑 Swapping

Swap IN 

저장장치에 있던 프로세스를 메모리로 다시 로드하는 것.

Swap out 

메모리에 있는 프로세스를 저장장치로 보내는 것. 

 

스왑(SWAP)

  • 시스템에 메모리가 부족할 경우에 하드디스크의 일부 공간을 활용하여 계속 도와주는 영역
  • 가상 메모리 관리 방법인 페이징 기법으로 발전함.

PCB(Process Control Block)

  • 프로세스의 정보를 저장
  • Linked List 로 연결되어 있음
  • 각 프로세스가 생성될 때마다 고유의 PCB 생성, 완료되면 PCB 제거 
  • 프로세스가 종료되면 해당 프로세스의 연결을 끊음

PCB-ProcessControlBlock
PCB(Process Control Block)

 

PCB(Process Control Block) 구조

PCB구조
PCB(Process Control Block)의 구조

 

  • 포인터(Pointer) : 효율적인 접근을 위해 사용(부모프로세스, 자식프로세스, 프로세스가 위치한 메모리주소, 할당된 자원 정보 등)
  • 프로세스 상태(Process State) : 5가지 - 생성(Create), 준비(Ready), 실행(Running), 대기(Waiting), 완료(Terminated)
  • 프로세스 ID(Process ID) : 프로세스의 일련번호
  • 프로그램 카운터(Program Counter) : 다음 실행될 명령어의 주소를 포함하는 프로그램 카운터를 저장(시분할구조이기 때문에 다른 프로세스가 실행되고 다시 내 프로세스가 실행될 때 카운터가 있어야 어떤 명령어를 실행할 지 알 수 있음)
  • 레지스터 정보 : 레지스터 값 저장
  • 메모리 관련 정보 : 메모리 위치 정보, 메모리 침범을 막기 위한 경계 레지스터 값
  • CPU 스케줄링 정보 : CPU 스케줄링을 위한 우선순위, 최종 실행시간, CPU 점유시간

프로세스 상태(Process State)

프로세스상태
프로세스상태(Process State)

  • 생성(New) : PCB를 생성하고 메모리에 프로그램 적재를 요청한 상태. 승인 후에 준비 상태로 넘어감
  • 준비(Ready) : CPU를 사용하기 위해 기다리고 있음.
  • 실행(Running) : 준비단계의 프로세스가 CPU 스케줄러에 의해 실행되는 것. 실행상태에 있는 최대 프로세스 수 = CPU 수. 부여된 시간만큼만 CPU 사용가능. 스케줄러가 강제로 빼앗음
  • 대기(Waiting) : 입출력 작업 대기(입출력 작업이 상대적으로 느리기 때문에, 비효율적임.) 이 프로세스를 대기상태로 두고 다른 프로세스를 실행.
  • 완료(Terminated) : 프로세스 종료. 데이터를 메모리에서 제거, PCB 제거

컨텍스트 스위칭(Context Switching)

프로세스를 실행하는 중에 다른 프로세스를 실행하기 위해 실행 중인 프로세스의 상태를 저장하고 다른 프로세스의 상태값으로 교체하는 작업. 이때 PCB의 내용이 저장됨.

 

컨택스트 스위칭 시, PCB 변경 값

  • 프로세스 상태, 프로그램 카운터, 레지스터 정보, 메모리 관련 정보

 

컨텍스트 스위칭 단계

프로세스A 실행 시간 초과 → OS 인터럽트 → 프로세스A 레지스터 값 등 PCB에 저장 → PCB B의 값으로 CPU의 레지스터 값 세팅 → 프로세스B 레지스터 값 등 PCB에 저장 → 프로세스A 실행

 

컨텍스트 스위칭이 발생하는 이유?

  • CPU 점유시간이 다 됨
  • I/O 요청
  • 다른 종류의 인터럽트가 있을 때

 


출처

댓글