OS - Multi Processes, Scheduler

윤형·2025년 3월 24일

Operation System

목록 보기
3/9
post-thumbnail

Multi - programing, tasking, threading

개념설명차이점
MultiPrograming여러 프로그램을 동시에 실행하며, CPU가 프로그램을 번갈아 가며 실행한다.CPU가 여러 프로그램을 차례로 실행하지만 동시에 실행되지 않음. (주로 I/O 작업 대기 중에 다른 작업 수행)
Multitasking (다중 작업)다중 프로그래밍을 기반으로, 작업 간 빠른 전환을 통해 CPU의 활용도를 높임.작업 전환이 자주 일어나며, CPU 스케줄링을 통해 작업을 관리함. (실시간으로 여러 작업을 처리하는 느낌)
Multithreading (멀티스레딩)하나의 프로세스 내에서 여러 스레드를 생성하여 동시에 실행함.하나의 프로세스에서 여러 작업을 병렬로 처리할 수 있도록 분할. (작업이 더 세분화됨)
  • 멀티 프로그래밍 VS 멀티 테스킹 차이점
    => 멀티 프로그래밍은 한 프로세스의 작업이 길어지면 다른 프로세스는 대기해야함. 주로 I/O 작업 대기 동안만 다른 프로세서를 실행함.-> 특정 프로세스가 종료가 되어야 다음 프로세스를 진행함
    => 멀티 테스킹은 아주 짧은 시간(quantum)만 실행되고 프로세스를 스위칭 한다.(context switching)
    => 뒤에서 배우겠지만 멀티프로그램은 비선점형이고 멀티태스킹은 선점형으로 Round-Robin 방식으로 작동한다.

: 멀티 프로그래밍은 P#2부분이 싱글 프로그램이라면 원래 I/O waiting시간이지만 이 시간동안 다음 작업을 미리 수행하면서 효율성을 올린것이다.

: 멀티 태스킹은 각 프로세스를 매우 짧게 쪼개서 돌아가면서 작업을 수행하게 된다.

Process Concept

Process는 실행중인 프로그램을 의미한다. 이는 메모리에 로드되어 실행되고 있는 코드와 데이터를 포함하는 것이다.

  • job 이라는 용어는 전통적으로 process와 같은 의미이다.
  • 프로세스는 실행 코드와 그 코드가 사용하는 데이터로 구성된다.

Process Attribute - identification

  • PID : 각 프로세스를 고유하게 식별하는 숫자.
  • PPID(parents PID) : 부모 프로세스의 PID.
  • UID : 프로세스가 실행 중인 사용자를 식별하는 번호이다. 특정 사용자의 권한으로 실행되고 있음을 추적하기 위해 사용됨.
  • User-visible register : 프로세스가 사용하는 데이터와 변수들이 저장된 레지스터
  • Control and status registers : 프로그램 카운터(PC), 스택 포인터(SP) 등 프로세스 실행 상태를 추적하는 레지스터들

PCB (Process Control Bolck)

운영 체제가 프로세스를 관리하고, 실행 상태를 저장하는 데이터 구조
: 커널영역에 저장이 되며, 프로세스의 모든 상태 정보를 관리하는 핵심 데이터 구조임

  • 각 프로세스에 대한 상태 정보와 자원 할당 정보를 포함함. => 효율적으로 관리할 수 있게 함
  • PCB는 프로세스의 실행을 유지하고, 문맥 전환(Context Switching) 시 필요한 정보를 저장하는 역할을 한다.
    운영 체제는 CPU를 다른 프로세스로 전환할 때 PCB에 저장된 정보를 기반으로 프로세스 상태를 복구한다.

PCB는 어떤 정보를 담고 있나?

PCB는 크게 3가지 범주의 정보를 포함한다.

① 프로세스 식별 정보 (Identification Information)

  • Process ID (PID): 프로세스를 고유하게 식별하는 번호

  • Parent Process ID (PPID): 부모 프로세스의 ID (해당 프로세스를 생성한 프로세스)

  • User ID (UID): 프로세스를 실행한 사용자 계정 정보

② 실행 상태 정보 (Execution Context)

  • Process State: 현재 프로세스 상태 (Ready, Running, Waiting 등)

  • Program Counter (PC): 다음에 실행할 명령어의 주소

  • CPU Registers: 프로세스가 사용하는 CPU 레지스터 값 (스택 포인터, 플래그 레지스터 등)

  • CPU Scheduling Information: 우선순위, 스케줄링 큐 정보 등

③ 자원 관리 정보 (Resource Management)

  • Memory Management Information: 프로세스가 사용하는 메모리 위치, 페이지 테이블, 세그먼트 테이블 등

  • I/O Status Information: 프로세스가 사용하는 입출력 장치 상태

  • Accounting Information: CPU 사용량, 실행 시간, 시스템 리소스 사용량

Context Switch

  • PCB는 각 프로세스마다 독립적이다.

  • CPU가 다른 프로세스로 전환할 때, 시스템은 반드시 이전 프로세스의 상태를 저장하고, 새로운 프로세스의 저장된 상태를 컨텍스트 스위칭(Context Switch)을 통해 로드한다.

  • 프로세스의 컨텍스트는 PCB(Process Control Block)에 저장된다.

context switch Time (문맥 전환 시간)

context switch time 과정에서 발생하는 CPU시간 소모는 실제 작업을 수행하지 않는 순수한 오버헤드다(비효율적 시간 소모)

<문맥 전환 속도에 영향을 주는 요소>
1. 메모리 속도 -> 빠를 수록 전환이 빠름.
2. 레지스터 개수 -> 많을 수록 저장할 데이터가 많아져 느려짐.
3. 특수 문맥 전환 명령어 -> 하드웨어가 지원하면 전환이 더 빠름.
4. 하드웨어 지원 → CPU가 여러 개의 레지스터 세트를 제공하면 레지스터를 복사하지 않아도 되어 속도가 향상됨.

Process Scheduling

운영 체제에서 CPU를 어떤 프로세스에게 할당할지 결정하는 역할을 수행.
= Dispatcher

Type of Scheduling Queue

  1. Job Queue (작업 큐)

    • 시스템 존재하는 모든 프로세스에게 할당할지 결정하는 역할을 수행.
    • 프로세스가 생성되면 Job Queue에 들어감.
  2. Ready Queue

    • 메모리에 올라가 있고, 실행할 준비가 된 프로세스들만 포함.
    • CPU 스케줄러가 선택해 실행할 프로세스를 세팅함.
  3. Device Queue

    • I/O 작업을 대기하는 프로세스들이 포함.
  • 프로세스는 다양한 큐 사이를 이동한다.

Lifecycle of Processes

  • New: 프로세스가 생성된 초기 상태 (메모리 할당 전).

  • Ready: CPU 할당을 기다리는 상태 (실행 가능, 메모리 할당 됨).

  • Running: CPU에서 실제로 실행 중인 상태.

  • Waiting (or Blocked): I/O 작업 완료 등 이벤트를 기다리는 상태.

  • Terminated: 프로세스 실행이 종료된 상태.

Schedulers 종류

1. Long-term scheduler

새로운 프로세스를 메모리(Ready Queue)에 로드할지 결정

  • 호출 시기 : 맨 처음 부팅할때, 메모리공간에 여유가 생길때
  • 빈도 : 초/분 단위로 매우 드물게 호출
  • 요구사항 : 상대적으로 느려도 된다.
  • 주요 역할 : I/O Bound와 CPU Bound의 균형을 맞춘다.

2. Short-term scheduler

Ready Queue에 있는 프로세스 중 다음에 실행할 프로세스를 선택.

  • 호출 시기 : 프로세스가 CPU를 떠날때 마다 (예: 타이머 인터럽트, I/O 요청).
  • 빈도 : 밀리초(ms) 단위로 매우 빈번하게 호출.
  • 요구사항 : 반드시 빨라야 함 -> context switching 오버헤드가 성능에 직접적인 영향을 미침
  • 주요 역할 : 실시간 결정이 필요하므로 복잡한 알고리즘을 피한다.

3. Middle-term scheduler

  • Swap Out : 프로세스 일부를 메모리에서 디스크로 잠시 이동시킨다. (메모리 공간을 비우기 위해서)
  • Swap In : 나중에 그 프로세스를 디스크에서 메모리로 다시 불러온다.


참고자료

Inpa-Dev : 멀티 태스킹 & 멀티 프로세싱 개념 한방 정리

profile
제가 관심있고 공부하고 싶은걸 정리하는 저만의 노트입니다.

0개의 댓글