IT 프로그래밍/운영체제

[운영체제] 스케쥴러

기술1 2025. 3. 25. 23:40

ShortTerm vs LongTerm

📌 프로세스 스케줄링과 스케줄러 종류

운영체제(OS)는 Ready Queue 에 있는 프로세스를 끄집어내어 CPU의 자원을 할당합니다.
단, 프로세스를 끄집어낸다고 해서 바로 실행되는 것은 아닙니다.
CPU 자원이 실제로 할당될 때 비로소 프로세스가 실행됩니다.
이러한 CPU 자원 할당과 프로세스 실행 관리는 운영체제의 역할입니다.


📌 스케줄러 종류

운영체제에서 프로세스를 관리하는 스케줄러는 Short-Term, Long-Term, Medium-Term 3가지로 나뉩니다.

  1. Short-Term Scheduler (단기 스케줄러)
    • Ready Queue에서 프로세스를 선택하여 CPU에 할당
    • 대부분의 운영체제에서 "스케줄러" 라고 하면 Short-Term Scheduler를 의미
    • 짧은 간격으로 매우 자주 동작 (매 프로세스 전환 시 실행됨)
  2. Long-Term Scheduler (장기 스케줄러, Job Scheduler)
    • 어떤 프로세스를 Ready Queue에 넣을지 결정
    • Short-Term Scheduler보다 실행 주기가 김
    • 멀티 프로그래밍 수준 을 조절 (한 번에 실행할 프로세스 개수 관리)
  3. Medium-Term Scheduler (중기 스케줄러)
    • 현재 실행 중인 프로세스를 메모리에서 제거하고 다른 프로세스를 올리는 역할
    • 예를 들어, 특정 if문을 실행할 때 필요 없는 데이터를 메모리에서 제거하고,
      새로운 프로세스를 실행하도록 스위칭

📌 중기 스케줄러의 예시 (모바일 시스템)

  • iOS (단일 활성 프로세스 시스템)
    • 화면에 보이는 앱만 실행되고, 다른 프로세스는 정지(Suspended) 상태
    • 백그라운드에서 실행되는 앱은 거의 없음
  • Android (멀티태스킹 시스템)
    • 백그라운드에서도 프로세스가 실행되며, 특정 앱은 서비스(Service) 형태로 동작
    • 백그라운드에서 실행되더라도 일부 작업 수행 가능

📌 CPU 및 프로세스 유형

  1. I/O-Bound Process (I/O 중심 프로세스)
    • I/O 작업이 많은 프로세스 (예: 데이터베이스, 네트워크 통신)
    • CPU보다 입출력 장치(I/O) 대기 시간이 더 많음
  2. CPU-Bound Process (CPU 중심 프로세스)
    • 계산 작업이 많은 프로세스 (예: 수학 연산, 머신러닝 모델 훈련)
    • CPU에서 연산하는 시간이 대부분을 차지

📌 정리

  • Ready Queue에 있는 프로세스를 CPU에 할당하면 실행이 시작됨
  • Short-Term Scheduler: Ready Queue에서 프로세스를 선택하여 CPU에 할당
  • Long-Term Scheduler: 어떤 프로세스를 Ready Queue에 추가할지 결정
  • Medium-Term Scheduler: 실행 중인 프로세스를 메모리에서 제거하고 새로운 프로세스를 올림
  • iOS 는 한 번에 하나의 프로세스만 실행 (백그라운드 프로세스 정지)
  • Android 는 백그라운드 프로세스를 서비스 형태로 실행 가능
  • I/O-Bound vs CPU-Bound: 프로세스 특성에 따라 CPU 또는 I/O 대기 시간이 다름

.

Context Switching

Context Switching(문맥 전환)이란?

운영체제(OS)는 여러 개의 프로세스를 실행하지만, CPU는 한 번에 하나의 프로세스만 실행할 수 있습니다.
따라서 여러 프로세스를 실행하려면 현재 실행 중인 프로세스를 저장하고, 다른 프로세스로 전환하는 과정이 필요합니다.
이 과정이 바로 Context Switching(문맥 전환) 입니다.

📌 Context Switching을 쉽게 이해하기

  • 책을 읽다가 다른 책을 참고해야 한다고 가정해 봅시다.
  • 현재 읽고 있던 책에 책갈피(상태 저장) 를 해놓고, 다른 책을 펼쳐 읽습니다.
  • 다시 원래 책으로 돌아오면 책갈피를 확인하고 이어서 읽습니다.

CPU에서도 동일한 과정이 발생합니다.

  • 실행 중인 프로세스의 레지스터, 메모리 주소, 상태 정보를 저장
  • 새로운 프로세스를 CPU에 올려 실행
  • 이전 프로세스로 돌아오면 저장된 상태를 복원

📌 하지만, 이 과정에서는 오버헤드(Overhead)가 발생합니다.
즉, CPU가 실제 연산을 수행하는 것이 아니라, 단순히 프로세스를 변경하는 데 시간을 소비하게 됩니다.


📌 Context Switching의 과정

1️⃣ 현재 실행 중인 프로세스의 상태 저장

  • 프로세스의 레지스터 값, 프로그램 카운터(PC), 메모리 상태PCB(Process Control Block)에 저장

2️⃣ 새로운 프로세스 선택

  • 스케줄러가 다음 실행할 프로세스를 결정

3️⃣ 새로운 프로세스의 상태 복원

  • 선택된 프로세스의 PCB 정보를 CPU에 로드

4️⃣ 새로운 프로세스 실행

📌 Context Switching 중 저장되는 주요 정보

  • 레지스터 값: 연산 중이던 데이터
  • 프로그램 카운터(PC): 실행 중이던 명령어 위치
  • 메모리 주소 정보

📌 Context Switching의 단점 (Overhead 발생 이유)

🔹 CPU가 유용한 작업(Useful Work)을 하지 않고, 단순히 프로세스를 변경하는데 시간을 소비
🔹 PCB(Process Control Block)를 저장하고 불러오는 과정이 추가됨
🔹 운영체제가 복잡할수록 Context Switching 비용이 증가

📌 Overhead를 줄이는 방법

멀티코어 CPU 활용 → 여러 개의 코어가 각각 프로세스를 실행
스레드(Thread) 사용 → 하나의 프로세스 내부에서 문맥 전환 비용 감소
경량화된 Context Switching 기법 사용


📌 프로세스 생성과 관리

운영체제는 Parent(부모) 프로세스가 Child(자식) 프로세스를 생성하여 관리합니다.

📌 프로세스 생성 방법

  1. fork()
    • 새로운 프로세스를 생성 (부모 프로세스를 복제)
  2. exec()
    • 자식 프로세스가 새로운 프로그램을 실행

📌 프로세스 간 리소스 공유 방식
1️⃣ 부모와 자식이 모든 리소스를 공유
2️⃣ 자식 프로세스가 부모의 일부 리소스를 공유
3️⃣ 자식 프로세스가 독립적인 메모리 공간을 가짐

📌 프로세스 실행 방식

  • 부모와 자식 프로세스가 동시에 실행
  • 부모가 자식 프로세스 종료를 기다림

📌 Windows와 Linux의 차이점

Linux: fork(), exec() 등을 사용하여 프로세스 생성
Windows: CreateProcess() API 사용

Windows는 프로세스 생성 시 추가적인 메모리 할당 및 설정이 필요하여 복잡함

'IT 프로그래밍 > 운영체제' 카테고리의 다른 글

[FT][운영체제] 프로세스와 스레드  (0) 2025.03.28
[운영체제] 프로세스  (0) 2025.03.26
[운영체제] 프로세스의 관리  (0) 2025.03.25
HTTP, SSL 설명  (0) 2024.08.21
DNS란? 용어 정리 DNS쿼리 8단계  (0) 2024.08.21