Search

[3장 프로세스 스케줄러]1.스케줄러, 경과시간과 사용시간

Publish Date
Category
Status
Done
1 more property
스케줄러, 경과 시간과 사용시간
프로세스 스케줄러는 CPU 활용률을 극대화 하고 사용자 경험을 개선하기 위한 핵심 메커니즘이다. 실행 가능한 프로세스를 효율적으로 배치하여 시스템 자원을 관리하기 위한 과정을 하나씩 살펴보자.

프로세스 스케줄러

초기의 단일 작업 배치 시스템은 한 번에 하나의 작업만 처리할 수 있었다. 하여 한 작업이 끝나야 다음 작업을 실행할 수 있었고, 이는 자원의 낭비를 초래했다. 시간이 지나며 컴퓨터 성능이 개선되고, 여러 작업을 동시에 처리하려는 요구가 증가하면서 멀티 프로그래밍과 타임 쉐어링 시스템이 도입되었다.
멀티 프로그래밍과 타임 쉐어링 환경에서는 여러 프로세스가 동시에 메모리에 상주 할 수 있으며, 여럿 프로세스들 중 어떤 프로세스를 CPU에 실행할지 결정해야하는 문제가 생긴다. 이를 해결하기 위해 프로세스 스케줄러가 도입이 되었다. 프로세스 스케줄러는 CPU 자원을 효율적으로 관리하고, 사용자가 빠르고 공정하게 작업을 처리할 수 있도록 한다.
일반적인 컴퓨터 관련 교과서에서 설명하는 스케줄러의 동작:
논리 CPU는 한 번에 하나의 프로세스만 처리
여러 프로세스가 타임 슬라이스(Time slice) 단위로 순서대로 CPU를 사용
P0, P1, P2 세 가지 프로세스가 존재하면, 타임 슬라이스 단위로 CPU가 순환하며 각 프로세스를 처리

프로세스 스케줄링 목표

1.
CPU 자원의 효율적 활용:
항상 실행 중인 프로세스가 있도록 하여 CPU 활용률을 극대화한다.
프로세스가 I/O 작업으로 대기 중일 때 다른 프로세스가 CPU를 사용할 수 있도록 스케줄링한다.
2.
I/O와 CPU 작업의 균형:
I/O 바운드와 CPU 바운드 프로세스의 특성을 고려하여 스케줄링의 균형을 유지한다.
3.
응답 시간 최소화:
사용자와의 상호작용 프로그램의 응답 시간을 최소화해야 한다.
특히 타임 쉐어링 시스템에서 중요한 목표입니다.
4.
처리량 최대화:
단위 시간당 처리되는 작업(프로세스)의 수를 최대화합니다.
5.
대기 시간 최소화:
프로세스가 실행을 기다리는 대기 시간을 최소화합니다.
6.
공정성(Fairness):
프로세스들이 공정하게 CPU 자원을 배분받을 수 있도록 보장합니다.
특정 프로세스가 기아 상태(Starvation)에 빠지지 않도록 관리합니다.

스케줄링 관련 개념들

멀티 프로그래밍
I/O 바운드와 CPU 바운드 프로세스
스케줄링 알고리즘 ← cpu 스케줄링 관련

실습: 경과 시간, 사용 시간

스케줄링에서는 시간의 개념이 중요하다. 프로세스 실행 시간 측정 시 경과시간, 사용시간에 대해 알아보자.
경과 시간(Elapsed Time)
사용 시간(CPU Time)
- real: 프로세스 시작부터 종료까지 경과한 시간 - 일반적으로 초 시계로 측정한 값과 동일
- 프로세스가 실제로 CPU를 사용한 시간 - user: 사용자 모드에서 동작한 시간 - sys: 커널모드에서 동작한 시간(시스템 콜 호출 시)
load.py : CPU를 사용하는 프로그램
#!/usr/bin/python3 # 부하 정도를 조절하는 값 # time 명령어를 사용해서 실행했을 때 몇 초 정도에 끝나도록 조절하면 결과를 확인하기 좋음 NLOOP = 100000000 for _ in range(NLOOP): pass
Bash
복사
CPU를 계속 사용했기 때문에 : real ≈ user
시스템 콜이 거의 없기 때문에 : sys ≈ 0
Sleep : CPU를 거의 사용하지 않는 명령어
time slepp 3
SQL
복사
프로세스 경과 시간 : real ≈ 3초
CPU를 거의 사용하지 않았기 때문에 : user, sys ≈ 0

Q&A

Search
Main PageCategoryTagskkogggokkAbout MeContact