728x90
반응형
프로세스 스케줄링
- 프로세스 스케줄링: 여러 응용프로그램을 CPU에 할당하는 방식으로, CPU 사용 효율성을 높이고 응답 시간을 줄이기 위해 필요합니다.
주요 스케줄링 방식
- 배치 처리 시스템 (Batch Processing System)
- First in First Out (FIFO) 방식(큐 구조)
- 프로그램을 순차적으로 실행하며, 실행 시간이 긴 프로그램이 있으면 이후 프로그램들이 대기해야 하는 문제가 발생하여 멀티태스킹을 지원하지 않습니다.
- CPU가 응답 없는 시간 동안 비효율적으로 사용될 수 있으며, 응답 시간이 증가할 수 있습니다.
- 시분할 시스템 (Time-Sharing System)
- 다중 사용자가 시스템을 공유하며, CPU 시간을 짧게 나눠 응답 시간을 줄입니다.
- 멀티태스킹 (Multitasking)
- 단일 CPU에서 여러 프로그램을 동시에 실행하는 것처럼 보이게 하는 시스템입니다. 실제로는 CPU가 프로그램 간에 빠르게 전환하며 수행합니다.
- 멀티프로세싱 (Multiprocessing)
- 여러 CPU(코어)를 사용해 하나 이상의 응용프로그램을 병렬로 실행하여 성능을 극대화합니다.
- 멀티프로그래밍 (Multiprogramming)
- CPU 사용률을 최대화하기 위해 여러 프로그램을 메모리에 동시에 올려두는 시스템입니다.
- 프로그램이 실행되다가 파일을 읽거나 프린터를 사용하는 등 잠시 멈춰야 할 때, CPU는 대기하지 않고 다른 프로그램을 바로 실행합니다. 이를 통해 CPU가 멈추지 않고 여러 프로그램을 빠르게 처리할 수 있게 됩니다.
- 시분할 시스템, 멀티태스킹, 멀티프로그래밍의 공통점
- 여러 응용프로그램을 동시에 실행하는 것처럼 보이며, CPU 활용도를 높여 컴퓨터 응답 시간을 단축하고 다중 사용자 지원을 가능하게 합니다.
프로세스와 스케줄링
- 프로세스: 메모리에 로드되어 실행 중인 프로그램을 의미하며, task, job, 작업이라는 용어로도 혼용됩니다.
- 실행 파일은 코드 이미지(바이너리, 예: 리눅스에서는 ELF 형식)로 구성되며, OS는 이를 메모리에 올려 프로세스를 생성합니다.
- 프로세스 생성 과정
- 실행 파일: 우리가 실행하려는 프로그램은 파일 형태로 저장되어 있습니다. 이 파일에는 코드와 필요한 데이터가 들어 있습니다. 예를 들어, 리눅스에서는 실행 파일이 ELF(Executable and Linkable Format) 형식으로 저장됩니다.
- 메모리에 로드: 프로그램을 실행하면, 운영체제(OS)가 이 파일을 메모리(RAM)로 불러옵니다. 메모리에 올라온 프로그램은 이제 실행 준비가 된 상태가 됩니다.
- 프로세스 생성: 운영체제는 메모리에 올라온 프로그램을 프로세스라는 형태로 만들어 관리합니다. 프로세스는 이제 CPU의 할당을 받아 실행될 수 있는 상태가 됩니다.
- 프로세스 생성 과정
- 하나의 응용프로그램이 여러 프로세스로 실행될 수 있습니다.
- 스케줄러는 CPU에서 어떤 프로세스를 언제 실행할지 관리합니다.
- 실행 파일은 코드 이미지(바이너리, 예: 리눅스에서는 ELF 형식)로 구성되며, OS는 이를 메모리에 올려 프로세스를 생성합니다.
스케줄링 알고리즘
- 비선점형 스케줄러 (Non-preemptive Scheduling)
- 프로세스가 자발적으로 CPU를 반환할 때까지 실행을 중단하지 않으며, FIFO 방식과 우선순위 기반 방식이 있습니다.
- FIFO (First Come First Served): 배치 처리 시스템에서 사용하는 기본 방식으로, 준비 큐에서 도착 순서대로 프로세스를 실행합니다.
- 우선순위 기반 스케줄링 (Priority-Based Scheduling): 프로세스에 우선순위를 부여하여, 우선순위가 높은 프로세스를 먼저 실행합니다. 우선순위는 정적 또는 동적으로 설정할 수 있습니다.
- 선점형 스케줄러 (Preemptive Scheduling)
- 스케줄러가 강제로 CPU를 반환시켜 다른 프로세스를 실행할 수 있도록 합니다. 대부분의 현대 OS(Mac, Windows)는 선점형 스케줄러를 사용합니다.
- 라운드 로빈 (Round Robin): 시분할 시스템에서 주로 사용되는 기본 알고리즘으로, 정해진 시간(Time Quantum) 동안 프로세스를 실행하고, 완료되지 않으면 큐의 맨 뒤로 이동하여 다른 프로세스를 실행합니다.
프로세스의 상태
- new: 프로세스가 생성된 상태
- ready: CPU 할당을 기다리는 상태
- running: CPU에서 실행 중인 상태
- blocked: I/O 작업이나 특정 이벤트를 기다리는 상태
- exit: 프로세스가 종료된 상태
- idle: CPU가 어떤 프로세스도 실행하지 않는 상태
컴퓨터 렉(Lag)과 스케줄러
- 컴퓨터가 느려져 마우스나 키보드 반응이 지연되는 현상을 말합니다.
- 보통 프로세스 수가 많아져 CPU가 과부하되면 발생하며, 스케줄러가 효율적인 자원 배분을 통해 해결할 수 있습니다.
- CPU 중심 작업과 I/O 중심 작업을 구분하여 우선순위를 다르게 설정하면 개선될 수 있습니다.
728x90
반응형
'Computer Science' 카테고리의 다른 글
OS History (4) | 2024.11.05 |
---|---|
OS(Operating System, 운영체제) (1) | 2024.11.04 |
CS) CPU (0) | 2023.01.07 |
CS) filp-flop / RAM (0) | 2023.01.07 |