맨위로가기

선점 스케줄링

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

선점 스케줄링은 실행 중인 프로세스를 중단하고 다른 프로세스를 실행할 수 있도록 하는 멀티태스킹 운영 체제 방식이다. 이는 스케줄러가 인터럽트를 사용하여 작동하며, 각 프로세스에 CPU 시간을 공정하게 할당한다. 타임 슬라이스(퀀텀)는 프로세스가 실행되는 시간 간격이며, 짧으면 스케줄러 오버헤드가 증가하고 길면 응답성이 저하될 수 있다. 현재 대부분의 운영 체제는 선점형 멀티태스킹을 지원하며, 초기 MS-DOS와 같은 일부 운영 체제는 지원하지 않았다.

더 읽어볼만한 페이지

  • 병행 컴퓨팅 - 슈퍼컴퓨터
    슈퍼컴퓨터는 일반 컴퓨터보다 훨씬 높은 성능을 가진 컴퓨터로, 복잡한 계산과 시뮬레이션을 수행하며, 프로세서, 메모리, 스토리지, 네트워크 등으로 구성되어 병렬 처리를 통해 높은 성능을 구현하고, 군사, 기상 예측, 과학 기술 분야, 인공지능 등 다양한 분야에서 활용되고 있다.
  • 병행 컴퓨팅 - 프로세스
    프로세스는 컴퓨터에서 실행되는 프로그램의 인스턴스로, 운영 체제가 시스템 자원을 효율적으로 관리하며 멀티태스킹 환경에서 독립적인 실행 흐름을 유지한다.
  • 운영체제 기술 - 프로세스
    프로세스는 컴퓨터에서 실행되는 프로그램의 인스턴스로, 운영 체제가 시스템 자원을 효율적으로 관리하며 멀티태스킹 환경에서 독립적인 실행 흐름을 유지한다.
  • 운영체제 기술 - 커널 (컴퓨팅)
    커널은 운영 체제의 핵심으로, 하드웨어와 소프트웨어 간 상호 작용을 관리하며 시스템 보안, 자원 관리, 하드웨어 추상화, 프로세스 스케줄링, 프로세스 간 통신, 다중 작업 환경 지원 등의 기능을 제공하고, 모놀리식, 마이크로, 혼합형 커널 등으로 구현되며 가상화 및 클라우드 컴퓨팅 환경에서 중요성이 커지고 있다.
선점 스케줄링
컴퓨터 과학
종류스케줄링 알고리즘
목표공정성
낮은 지연 시간
높은 처리량
방법시간 할당량
우선 순위
자원 점유 여부 감시
장점시스템 전체 처리량 향상 및 사용자 경험 개선
단점구현 복잡성 증가 및 문맥 전환으로 인한 오버헤드 발생 가능
선점 (컴퓨팅)
정의태스크가 완료되기 전에 운영 체제가 태스크를 **일시 중단**하고 다른 태스크에 CPU를 할당하는 기능
목적시스템의 응답성을 높이고, 중요한 작업이 CPU 시간을 확보하도록 보장
관련 개념멀티태스킹
스케줄링
설명선점 스케줄링은 컴퓨터에서 운영 체제가 프로세스나 스레드의 실행을 강제로 중단시키고, 다른 프로세스나 스레드에 CPU를 할당하는 스케줄링 방식
목표시스템의 응답성 향상
특정 작업의 우선순위 보장
공정한 자원 분배
적용 분야실시간 시스템, 시분할 시스템
특징우선순위 기반 스케줄링에 주로 사용
문맥 교환 오버헤드 발생 가능
동작 방식
인터럽트 발생운영 체제가 인터럽트를 사용하여 실행 중인 프로세스를 중단
우선순위 확인운영 체제가 대기 중인 프로세스들의 우선순위를 확인
CPU 할당가장 높은 우선순위를 가진 프로세스에 CPU를 할당
문맥 교환중단된 프로세스의 상태를 저장하고, 새로운 프로세스의 상태를 복원
장점 및 단점
장점응답성 향상: 긴 작업을 기다리지 않고 짧은 작업을 먼저 처리
우선순위 제어: 중요한 작업에 더 많은 CPU 시간을 할당
공정성: 모든 작업에 공정한 CPU 시간 분배 가능
단점문맥 교환 오버헤드: 프로세스 전환 시 시스템 자원 소모
우선순위 역전: 낮은 우선순위 작업이 높은 우선순위 작업을 방해할 수 있음
구현 복잡성: 스케줄링 알고리즘의 복잡성 증가
구현 방법
시간 할당량 기반각 프로세스에 CPU 사용 시간을 제한하고, 할당된 시간이 지나면 강제 중단
우선순위 기반높은 우선순위 프로세스가 낮은 우선순위 프로세스를 선점
이벤트 기반특정 이벤트 발생 시 실행 중인 프로세스를 중단하고 다른 프로세스 실행
고려 사항
문맥 교환 오버헤드 최소화프로세스 전환 횟수를 줄여 시스템 성능 저하 방지
우선순위 역전 방지우선순위 상속 등의 기법을 사용하여 문제 해결
스케줄링 정책 결정시스템의 요구 사항에 맞는 적절한 스케줄링 정책 선택

2. 사용자 모드와 커널 모드

현대의 대부분의 운영 체제는 선점 커널을 가지고 있으며, 이는 커널 모드에서도 작업을 선점할 수 있도록 설계되었다. 이러한 운영 체제의 예로는 솔라리스 2.0/SunOS 5.0,[12] 윈도우 NT, 리눅스 커널 (2.6.x 이상),[3] AIX 및 일부 BSD 시스템 (NetBSD, 버전 5부터)이 있다.[2]

어떤 시스템 설계에도 선점 불가능한 연산이 존재한다. 이는 일반적으로 커널의 기능이나 인터럽트 처리이며, 이를 완료될 때까지 실행할 수 있도록 하지 않으면 경합 상태가 발생하기 쉬워 데드락을 유발한다. 태스크가 커널 기능을 처리하는 동안 스케줄러가 선점할 수 없도록 하여 시스템의 반응성을 약간 희생하지만, 커널 설계를 간소화할 수 있다. 시스템의 특권 레벨을 지정하는 CPU 모드 (사용자 모드와 커널 모드) 또한 태스크가 선점 가능한지 여부를 판단하는 기준 중 하나가 된다.[9]

3. 선점형 멀티태스킹

선점형 멀티태스킹은 운영 체제가 각 프로세스에 CPU 사용 시간을 할당하고, 필요에 따라 실행 중인 프로세스를 중단시키고 다른 프로세스에 CPU 자원을 넘겨주는 방식이다. 이는 프로세스나 작업이 시스템 자원이 필요 없을 때 명시적으로 양보하도록 프로그램을 작성하는 협력형 멀티태스킹 방식과 구별된다.[10]

선점형 멀티태스킹은 인터럽트 메커니즘을 사용하여 현재 실행 중인 프로세스를 일시 중단하고, 스케줄러를 호출하여 다음에 실행해야 할 프로세스를 결정한다. 따라서 모든 프로세스는 주어진 시간에 일정량의 CPU 시간을 얻게 된다.

선점형 멀티태스킹에서 운영 체제 커널은 스케줄링 정책의 우선순위 제약을 충족하기 위해 컨텍스트 전환을 시작하여 활성 작업을 선점할 수도 있다. 우선순위가 높은 작업이 현재 실행 중인 작업을 점유하면 선점형 스케줄링이라고 한다.

선점형 멀티태스킹은 컴퓨터 시스템이 각 프로세스에 정기적인 운영 시간을 보다 안정적으로 보장하고, 중요한 외부 이벤트를 신속하게 처리할 수 있도록 한다.

특정 시점에 프로세스는 입출력을 대기하는 I/O 바운드와 CPU를 완전히 활용하는 CPU 바운드의 두 가지 범주로 나눌 수 있다. 초기 시스템에서는 프로세스가 입력을 기다리는 동안 폴링하거나 대기하곤 했다. 이 시간 동안 프로세스는 유용한 작업을 수행하지 않았지만 여전히 CPU에 대한 완전한 제어 권한을 유지했다. 인터럽트와 선점형 멀티태스킹의 출현으로 이러한 I/O 바운드 프로세스는 필요한 데이터가 도착할 때까지 "차단"되거나 보류되어 다른 프로세스가 CPU를 활용할 수 있도록 했다. 요청된 데이터가 도착하면 인터럽트가 생성되므로 차단된 프로세스가 실행으로 적시에 복귀할 수 있었다.

멀티태스킹 기술은 원래 여러 사용자가 단일 기계를 공유할 수 있도록 하기 위해 개발되었지만, 사용자 수와 관계없이 유용하다. 메인프레임에서 단일 사용자 개인용 컴퓨터 및 무사용자 제어 시스템 (예: 로봇 우주선)에 이르기까지 많은 운영 체제는 다양한 이유로 멀티태스킹 지원의 유용성을 인식해 왔다. 멀티태스킹을 통해 단일 사용자가 여러 애플리케이션을 동시에 실행하거나 컴퓨터 제어를 유지하면서 "백그라운드" 프로세스를 실행할 수 있다.

3. 1. 타임 슬라이스

선점형 멀티태스킹 시스템에서 프로세스가 실행되도록 허용되는 시간 간격을 보통 '''타임 슬라이스''' 또는 '''퀀텀'''이라고 부른다.[1] 스케줄러는 각 타임 슬라이스마다 실행할 다음 프로세스를 선택한다.[2] 타임 슬라이스의 길이는 시스템 성능과 프로세스 응답성 사이의 균형을 맞추는 데 매우 중요하다. 타임 슬라이스가 너무 짧으면 스케줄러가 너무 많은 처리 시간을 소비하고, 너무 길면 프로세스가 입력에 응답하는 데 더 오래 걸린다.[3]

인터럽트는 타임 슬라이스가 만료될 때 운영체제 커널이 프로세스 간을 전환하여 프로세서의 시간을 여러 작업 간에 공유, 병렬(동시)으로 이러한 작업을 처리하는 것처럼 보이게 한다.[4] 이러한 설계를 제어하는 운영 체제를 멀티태스킹 시스템이라고 한다.[5]

3. 2. 시스템 지원

오늘날 대부분의 운영 체제는 선점형 멀티태스킹을 지원한다. 여기에는 윈도우, macOS, 리눅스 (안드로이드 포함), iOS, iPadOS 등이 포함된다.[4]

IBM PC 호환 기종용 초기 운영 체제인 MS-DOSPC DOS는 멀티태스킹을 전혀 지원하지 않았지만, MP/M-86 (1981) 및 Concurrent CP/M-86과 같은 대체 운영 체제는 선점형 멀티태스킹을 지원했다. MINIX와 Coherent를 포함한 다른 유닉스 계열 시스템은 1980년대 개인용 컴퓨터에서 선점형 멀티태스킹을 제공했다.[4]

이후 MS-DOS 호환 시스템은 Concurrent DOS, Multiuser DOS, Novell DOS (나중에 Caldera OpenDOS 및 DR-DOS 7.02 이상으로 명칭 변경)을 포함하여 선점형 멀티태스킹/멀티스레딩을 기본적으로 지원했다. Concurrent DOS 386부터 여러 DOS 프로그램을 가상 DOS 머신에서 동시에 실행할 수 있었다.[4]

선점형 멀티태스킹을 제한적으로 지원하는 최초의 Windows 버전은 Windows/386 2.0이었다. 이 버전은 Intel 80386의 가상 8086 모드를 사용하여 가상 8086 머신에서 DOS 응용 프로그램을 실행했는데, 이는 일반적으로 선점될 수 있는 "DOS 박스"로 알려졌다. Windows 95, 98 및 Me에서 32비트 응용 프로그램은 각 응용 프로그램을 별도의 주소 공간에서 실행하여 선점형으로 만들었지만, 16비트 응용 프로그램은 이전 버전과의 호환성을 위해 협력형으로 유지되었다.[7] Windows 3.1x (보호 모드)에서 커널 및 가상 장치 드라이버는 선점적으로 실행되었지만, 모든 16비트 응용 프로그램은 비선점형이었으며 동일한 주소 공간을 공유했다.[4]

선점형 멀티태스킹은 Windows NT (모든 버전), OS/2 (네이티브 응용 프로그램)에서 항상 지원되었다.[4]

초기 버전의 클래식 Mac OS는 멀티태스킹을 전혀 지원하지 않았으며, 협력형 멀티태스킹은 System Software 5에서 MultiFinder를 통해 제공되었고, System 7에서 표준이 되었다. 클래식 Mac OS에서 발견된 협력형 멀티태스킹을 선점형 모델로 업그레이드하려는 계획이 있었지만 (그리고 Mac OS 9에 선점형 API가 존재했지만, 제한적인 의미에서[8]), 이러한 계획은 Mac OS X (현재 macOS)로 변경되었다. 이는 기존 Mac 시스템 스타일과 NeXTSTEP의 하이브리드로, Mach 커널을 기반으로 하고, 부분적으로 BSD에서 파생된 운영 체제이며, BSD는 항상 유닉스 계열 선점형 멀티태스킹을 제공했다.[4]

4. 마이크로커널

일부 시스템은 마이크로커널 설계를 통해 반응성을 향상시키고, 경우에 따라 프로세스의 선점 필요성 자체를 실질적으로 줄였다.[9] 구현 예시로 Mach 3.0을 실시간에 대응시킨 RT-Mach가 있다.

참조

[1] 서적 Modern operating systems Pearson
[2] 논문 Realtime scheduling in SunOS 5.0
[3] 웹사이트 Release notes for v2.5.4 https://cdn.kernel.o[...] Linux Kernel Organization, Inc. 2021-07-03
[4] 간행물 Dynamic Uno https://archive.org/[...] 1983-09
[5] 서적 1984 TRS-80 Catalog https://archive.org/[...] Tandy Corporation 1984
[6] 서적 The Sinclair QDOS Companion https://archive.org/[...] Sunshine Books 1985
[7] 웹사이트 How 16-Bit and 32-Bit Programs Multitask in Windows 95 (Q117567) http://support.micro[...] 2008-01-17
[8] 웹사이트 Re: newbie question: What is a Blue Task http://lists.apple.c[...] 2007-03-29
[9] 문서 preemptive kernel
[10] 문서 preemptive multitask
[11] 문서 How 16-Bit and 32-Bit Programs Multitask in Windows 95 (Q117567) http://support.micro[...]
[12] 저널 Realtime scheduling in SunOS 5.0



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com