기금넷 공식사이트 - 복권 조회 - 리눅스 스케줄링 알고리즘의 핵심 아이디어는 무엇입니까?

리눅스 스케줄링 알고리즘의 핵심 아이디어는 무엇입니까?

첫 번째 부분: 실시간 스케줄링 알고리즘.

POSIX 1003.b 는 실시간 시스템이 무엇인지 정의합니다. 즉, 시스템이 제한된 응답 시간 내에 필요한 서비스 수준을 제공할 수 있음을 의미합니다. 실시간 시스템 프로그램의 논리적 정확성은 계산의 정확성뿐만 아니라 결과에도 달려 있습니다. 시스템의 시간 제한을 충족하지 못하면 시스템 오류가 발생합니다.

실시간 시스템에 대한 요구 사항에 따라 소프트 실시간 및 하드 실시간 으로 나눌 수 있습니다. 하드 실시간 시스템은 시스템이 어떠한 상황에서도 최악의 서비스 시간과 이벤트의 응답 시간을 충족해야 한다는 것을 의미합니다. 예를 들어 우주선의 통제는 이런 시스템의 현실이다. 다른 모든 실시간 시스템의 특성을 소프트 실시간 시스템이라고 할 수 있습니다. 지워진다면 소프트 실시간 시스템은 통계적으로 볼 때 하나의 작업 (다음 토론에서는 작업과 프로세스를 구분하지 않음) 이 시스템의 처리 시간을 보장할 수 있으며, 마감일이 오기 전에 이벤트를 처리할 수 있는 마감일을 얻을 수 있습니다. 치명적인 오류는 발생하지 않습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 성공명언) 예를 들어, 실시간 멀티미디어 시스템은 소프트 실시간 시스템입니다.

컴퓨터 시스템의 CPU 및 기타 리소스는 실시간 운영 체제 지원을 제공하기 위해 효과적으로 예약 및 관리됩니다. 멀티 태스킹 실시간 시스템에서는 자원 스케줄링 및 관리가 더욱 복잡합니다. 다음 토론은 다양한 실시간 작업 스케줄링 알고리즘, 일반 Linux 운영 체제 프로세스 스케줄링 및 다양한 실시간 Linux 시스템 분류에 초점을 맞추어 실시간 기능 지원 및 일반 Linux 시스템 개선을 연구합니다. 실시간 분야의 몇 가지 문제를 요약하고 다양한 실시간 Linux 운영 체제를 요약합니다. 최종 분석에서 이러한 문제를 해결하는 방법입니다.

CPU 실시간 스케줄링 알고리즘 분류

다양한 실시간 운영 체제에 대한 실시간 스케줄링 알고리즘은 Wang99] [Gopalan0 1]: 우선 순위 기반 스케줄링 알고리즘 (우선 순위 기반 스케줄링 PD), 공유 CPU 사용 기반 비례 스케줄링 알고리즘 (공유 기반 스케줄링 SD), 시간 기반 프로세스 스케줄링 알고리즘의 세 가지 범주로 나눌 수 있습니다 다음은 세 가지 스케줄링 알고리즘에 대한 설명입니다.

1..1

/> 우선 순위 기반 스케줄링 알고리즘, 우선 순위 기반 스케줄링 알고리즘, 각 프로세스에는 우선 순위가 부여됩니다. 프로세스가 예약될 때마다 스케줄러는 항상 일정 우선 순위가 가장 높은 작업 실행을 가집니다. 우선 순위 할당 방법에 따라 우선 순위 기반 스케줄링 알고리즘은 Krishna0 1] [Wang99]: 정적 우선 순위 스케줄링 알고리즘으로 나눌 수 있습니다.

이 알고리즘은 이러한 시스템에서 실행되는 모든 프로세스에 정적으로 우선 순위를 할당합니다. 작업 주기의 사용자 우선 순위 또는 기타 예약된 정책과 같은 정적 우선 순위 할당 속성을 적용합니다. RM (속도 단조) 스케줄링 알고리즘은 일반적인 정적 우선 순위 스케줄링 알고리즘입니다. 실행된 작업의 일정 우선 순위 주기 크기에 따라 실행 주기가 작은 작업의 우선 순위가 높습니다.

동적 우선 순위 스케줄링 알고리즘

이 알고리즘은 작업의 자원 요구 사항에 따라 작업 우선 순위를 동적으로 할당하므로 자원 할당 및 스케줄링 목적이 더욱 유연합니다. 비 실시간 시스템의 경우 짧은 작업 우선 순위 스케줄링 알고리즘과 같은 많은 알고리즘이 있습니다. 실시간 작업 스케줄링 알고리즘, EDF 알고리즘은 가장 널리 사용되는 동적 우선 순위 스케줄링 알고리즘으로, 준비 대기열에 있는 각 작업의 마감일 (deadline) 을 기준으로 우선 순위를 지정하며 가장 늦은 마감일이 가장 높은 우선 순위를 갖습니다.

1.2

우선 순위 스케줄링 알고리즘에 기반한 스케줄링 알고리즘은 간단하고 효과적이지만 비례 공유를 기반으로 하는 하드 실시간 스케줄링입니다. 대부분의 경우 이 알고리즘은 실시간 멀티미디어 회의 시스템과 같은 소프트 실시간 응용 프로그램에 적합하지 않습니다. 소프트 실시간 애플리케이션의 경우 공유 자원 스케줄링 알고리즘 (SD 알고리즘) 을 사용하는 것이 좋습니다.

비례 공유 스케줄링 알고리즘은 CPU 사용률에 대한 비례 공유 스케줄링 알고리즘입니다. 기본 아이디어는 일정 가중치 (비율) 에 따라 실행 시간에 비례하도록 예약된 작업 세트가 필요하다는 것입니다.

비례 공유 스케줄링 알고리즘 [Nieh0 1] 을 구현하는 두 가지 방법이 있습니다. 첫 번째 방법은 준비 중 일정 대기열의 첫 번째 빈도를 조정하고 일선 대기열을 예약하는 것입니다. 두 번째 방법은 준비 대기열에서 생산할 프로세스를 연속적으로 예약하는 것입니다. 그러나 조정에 따라 한 프로세스의 런타임 슬라이스의 가중치를 할당합니다.

비례 공유 스케줄링 알고리즘은 순환법, 공정공유, 공정대기열, 새로운 복권 스케줄링 방법, (복권) 등 여러 범주로 나눌 수 있습니다.

비례 공유 스케줄링 알고리즘의 한 가지 문제는 우선 순위 개념이 정의되지 않았다는 것입니다. 모든 작업은 사용하는 CPU 리소스의 비율에 따라 공유됩니다. 시스템에 과부하가 걸리면 모든 작업이 느린 비율로 실행됩니다. 따라서 실시간 프로세스 동안 시스템의 CPU 처리 시간을 보장하기 위해 일반적으로 동적 가중치 조정 프로세스를 사용합니다.

1.3. 시간 프로세스 스케줄링 알고리즘에 기반한 스케줄링 알고리즘

입력이 안정적이고 간단한 시스템의 경우 시간 중심 (구동 시간: TD) 데이터 처리를 사용하여 좋은 예측을 제공할 수 있습니다. 이 스케줄링 알고리즘은 본질적으로 디자인 프로토타입이 있는 오프라인 정적 스케줄링 방법입니다. 시스템의 설계 단계에서는 모든 경우에 하나의 명확한 시스템에서 각 작업 전환의 시작 및 종료 시간이 미리 계획되고 설계됩니다. 이 알고리즘은 소형 임베디드 시스템, 자동 제어 시스템, 센서 등의 어플리케이션 환경에 적합합니다.

이 알고리즘의 장점은 작업 실행의 예측 가능성이 높지만 가장 큰 단점은 유연성이 부족하여 CPU 가 유휴 상태일 때 실행할 작업이 있다는 것입니다.

범용 리눅스 시스템 Linux 스케줄링

일반 Linux 시스템은 실시간 및 비실시간 프로세스를 모두 지원하며, 실시간 프로세스는 일반 프로세스에 비해 절대적인 우선 순위를 가집니다. 이에 따라 실시간 프로세스 일정 정책은 SCHED_FIFO 또는 SCHED_RR 이고 일반 프로세스 일정 정책은 SCHED_OTHER 입니다.

각 작업 스케줄링 알고리즘은 리눅스에서 구현되며 rt_priority 우선 순위 정책 (Linux) 과 카운터라는 네 가지 스케줄링 매개변수가 있습니다. 예약 프로세스 스케줄링은 이 네 가지 매개 변수를 기반으로 합니다.

SCHED_OTHER 일정 정책, 스케줄러는 항상 우선 순위+카운터 값을 선택하여 프로세스 실행을 예약합니다. SCHED_OTHER 일정 정책을 사용하여 일정 프로세스를 논리적으로 분석합니다. 우선 순위는 고정 일정 주기 (epoch) 이고, 각 일정 주기 프로세스에 대한 우선 순위의 영향과 카운터 값은 변수 값이 결정되면 발생하며, 프로세스의 우선 순위와 슬라이스 수를 나타냅니다. 이 방법을 사용하면 카운터가 각 일정 주기에서 동적 값이며 현재 일정 주기를 반영할 수 있습니다. 각 일정 주기가 시작될 때 우선 순위 값 카운터에 할당됩니다. 그러면 각 프로세스가 실행되도록 예약된 카운터 값은 얼마입니까? 줄이다. 카운터 값이 0 이면 프로세스가 이미 실행 중인 슬라이스 일정 주기 동안 프로세스가 더 이상 일정 주기 프로세스 일정에 참여하지 않습니다. 모든 프로세스에 시간 슬라이스가 부족하면 일정 주기가 종료되고 다시 반복됩니다. 또한 Linux 시스템의 일정 주기는 고정되어 있지 않으며 실행 중인 프로세스 수 및 우선 순위 값과 같은 수가 동적임을 알 수 있습니다. 획기적인 길이에 영향을 줄 수 있습니다. 주목할 만하게도, 2.4 커널에서 가장 중요한 임무는 두 개의 유사한 함수를 교체하는 것이다.

비례 공유 일정 전략 SCHED_OTHER 는 프로세스 일정의 형평성을 보장하도록 설계되었습니다. 즉, 우선 순위가 낮은 프로세스도 각 시대의 CPU 실행 시간 몫을 얻을 수 있습니다. 또한 프로세스 실행 시 더 높은 우선 순위 값을 얻을 수 있는 다양한 프로세스 우선 순위를 제공합니다.

실시간 프로세스의 경우 실시간 우선 순위 rt_priority 기반 우선 순위 스케줄링 정책을 사용하지만 동일한 실시간 우선 순위에 대한 프로세스 스케줄링 방법은 서로 다른 스케줄링 정책을 기반으로 합니다.

Br/>; SCHED_FIFO: 다른 프로세스가 정적 우선 순위에 따라 대기한 다음 동일한 우선 순위 대기열에서 일정이 잡혀 실행 중인 첫 번째 프로세스가 1 이 발생할 때까지 종료되지 않습니다. 높은 우선 순위 프로세스가 CPU 자체의 자원 요청을 침해했습니다. CPU 를 적극적으로 포기 (SCHED _ YIELD); 호출);

SCHED_RR 은 이렇습니다. 이 스케줄링 전략인 SCHED_FIFO 는 위와 똑같습니다. 단, 각 프로세스에 시간 슬라이스를 할당한다는 점만 있습니다. 구현 중 슬라이스 길이는 sched_rr_get_interval 을 통해 호출할 수 있습니다.

Linux 시스템 자체는 데스크톱 지향 시스템이므로 실시간 응용 프로그램의 몇 가지 문제:/> /> 리눅스 시스템 스케줄링 장치는 10ms 이므로 정확한 타이밍 인터럽트를 제공할 수 없습니다. P> 프로세스 호출 시스템 호출이 커널 모드에서 실행될 때 선점될 수 없습니다.

Linux 커널 구현은 대량의 폐쇄 중단 작업 손실을 사용합니다.

가상 메모리 기술의 사용으로 인해 페이지 오류가 발생할 경우 하드 드라이브에서 읽은 데이터를 교환해야 하지만 하드 드라이브의 읽기 및 쓰기 저장 위치의 무작위성으로 인해 읽기 및 쓰기 시간이 무작위화되고 경우에 따라 실시간 작업 마감 기간에 영향을 줄 수 있습니다.

Linux 프로세스 스케줄러도 실시간 우선 순위를 지원하지만 효과적인 실시간 작업 스케줄링 메커니즘 및 알고리즘이 부족합니다. 네트워크 하위 프로토콜 처리 및 기타 장치 인터럽트 처리, 일정에는 해당 프로세스와 고유한 스케줄링 메커니즘이 수반됩니다.

다양한 실시간 리눅스 시스템

홈페이지 & gt 정보

3. 1 RT-Linux 및 RTAI

RT-Linux 는 뉴멕시코 대학 (뉴멕시코 공대) 의 연구 프로젝트인 [[RTLinuxWeb] [Barabanov97] 입니다. 기본 아이디어는 Linux 시스템에서 하드 실시간 지원을 실현하고, 마이크로 커널 실시간 운영 체제 (RT-Linux 의 실시간 하위 시스템이라고도 함) 를 실현하며, 일반 Linux 시스템은 운영 체제에서 우선 순위가 낮은 작업으로 실행됩니다. 일반 Linux 시스템의 또 다른 작업은 FIFO 및 실시간 작업을 통해 통신할 수 있습니다. RT-Linux 의 프레임워크는 그림 1 과 같습니다.

그림 1 RT-Linux 구조

RT-Linux 의 핵심 기술은 소프트웨어가 하드웨어 인터럽트 컨트롤러를 시뮬레이션하는 것입니다. Linux 시스템이 때때로 CPU 인터럽트를 중지할 때 RT-Linux 의 하위 시스템에 대한 요청 차단은 놓을 수 없지만 실제로 하드웨어 인터럽트를 중지하지 않으므로 인터럽트로 인한 시스템 응답 실패를 방지하고 실시간 성능을 높일 수 있습니다. Linux 커널에 전달된 RT-Linux 의 하드웨어 인터럽트가 차단된 인터럽트에 도달할 때 실시간 하위 시스템 인터럽트 루틴이 처리되거나 처리되는지 확인합니다. 또한 일반 리눅스 시스템의 최소 타이밍 정밀도는 시스템의 실시간 클럭을 결정하는 주파수이고, 리눅스의 시스템 클럭은 초당 100 의 클럭 인터럽트로 설정되므로 리눅스의 시스템 타이밍 정밀도가 10ms 인 경우 클럭 주기는/kloc-입니다

RT-Linux 실시간 서브시스템의 작업 스케줄링 우선 순위 구동 알고리즘 (예: RM 및 EDF) 은 다른 스케줄링 알고리즘에도 사용할 수 있습니다.

RT-Linux 독점 시스템, 과중한 작업, 정말 좋은 선택이지만 CPU 자원의 스케쥴만 제공하고 실시간 시스템과 Linux 시스템의 관계는 그다지 긴밀하지 않기 때문에 개발자는 Linux 시스템에서 이미 구현된 기능 (예: 스택) 을 최대한 활용할 수 있습니다. RT-Linux 산업 제어와 같은 실시간 작업은 간단한 하드 실시간 요구 사항이지만 멀티미디어 처리를 적용하려면 많은 작업이 필요합니다.

이탈리아 실시간 응용 프로그램 프로그래밍 인터페이스 (RTAI) 는 RT-Linux 에서 제공되며 RT-Linux 와 동일하게 설계되었습니다. 이는 RTAI 가 원래 설계의 문제를 해결하기 위해 Linux 에 정의된 실시간 하드웨어 추상화 계층입니다. 이 추상화 계층 인터페이스는 실시간 작업 Linux 시스템의 상호 작용을 제공하여 Linux 커널 소스 코드에서 Linux 커널로의 실시간 지원을 추가합니다.

3.2. 쿠트-리눅스

캔자스 대학에서 개발한 KURT-Linux 는 실시간 마이크로초 정밀도 [[KurtWeb] [Srinivasan]] 를 제공합니다. 실시간 커널은 RT-Linux 와 별도로 구현됩니다. KURT-Linux 는 일반적인 Linux 시스템을 기반으로 하며, 일반 Linux 시스템에서 호출할 수 있는 최초의 Linux 기반 실시간 시스템입니다.

KURT-Linux 시스템은 정상 상태, 실시간 상태 및 혼합 상태의 세 가지 상태로 나눌 수 있습니다. 정상 상태에서는 일반 Linux 실시간 실행 상태를 사용하여 정책 작업을 실시간으로 예약하고, 실시간 및 비실시간 작업 혼합 상태는 실시간 상태를 실행할 수 있으며, 실시간 요구 사항을 더욱 엄격하게 만드는 데 사용할 수 있습니다.

Linux 시스템의 실시간 성능을 높이기 위해서는 정확한 클럭 시스템에 대한 지원이 향상되어야 합니다. 그러나 단순히 클럭 주파수를 높이면 일정 부하가 증가하여 시스템 성능이 크게 저하됩니다. 이러한 모순을 해결하기 위해 KURT-Linux 에서 사용되는 클럭 정확도 방법 [UTIMEWeb] 은 Linux 시스템의 UTIME 을 개선하고 클럭 칩을 단일 트리거 상태 (단일 트리거 모드) 로 설정합니다. 즉, 클럭 칩당 시간 초과를 설정한 다음 시간 초과 이벤트가 다시 발생할 때 클럭 인터럽트 처리기에 필요한 클럭 칩에 설정합니다. 기본적인 생각은 정확한 시간이 시계가 중단 되었을 때, 우리는이 정확도를 달성 하기 위해 더 정확한 시간이 필요 하지만, 반드시 시스템 클럭 주파수가 필요 하지 않습니다 의미 합니다. CPU 클럭 카운터, TSC (타임스탬프 카운터) 를 사용하여 정확한 CPU 주파수 정확한 시간을 제공합니다.

KURT-Linux 실시간 작업 스케줄링, 정적 CPU 를 사용하는 실시간 스케줄링 알고리즘, 시간 기반 (TD). 실시간 작업은 설계 단계에서 실시간 이벤트가 발생해야 하며 명시적으로 나열해야 합니다. 반복 작업의 경우 이 알고리즘을 통해 작업 일정을 더 잘 잡을 수 있습니다.

KURT-Linux 와 RT-Linux 의 장점 중 하나는 시스템 호출을 사용할 수 있는 Linux 시스템을 사용할 수 있다는 것입니다. 원래 하드 실시간 지원을 위해 설계되었지만, 단순한 구현이기 때문에 Linux 일정 대신 간단한 시간 중심 일정을 사용하고, 실시간 프로세스 일정 등 비실시간 작업의 영향을 받는 경우도 있습니다. 실시간 작업의 마감일은 취약합니다. KURT-Linux 기반 애플리케이션: art (ATM 참조 운송 시스템), 멀티미디어 재생 소프트웨어. KURT-Linux 의 또 다른 방법은 빈번한 클럭 칩 프로그래밍이 필요하다.

3.3. 빨간색-리눅스

RED-Linux 는 UC 오웬 지점 [REDWeb] [Wang99] 에서 개발한 실시간 Linux 시스템으로 실시간 스케줄링과 Linux 를 지원하여 동일한 운영 체제 커널을 구현합니다. 세 가지 유형의 스케줄링 알고리즘, 즉 시간 기반 우선 더티 및 공유 기반 알고리즘을 지원합니다.

시스템의 일정 세분성을 높이기 위해 RED-Linux 는 RT-Linux 소프트웨어 시뮬레이션의 인터럽트 관리 메커니즘을 학습하여 클럭 인터럽트 빈도를 높였습니다. RED-Linux 의 인터럽트 시뮬레이터는 대기열에서 인터럽트를 대기만 합니다. 하드웨어 인터럽트가 도착하면 실제 인터럽트 처리기가 없습니다.

또한 Linux 커널 모드의 프로세스가 중단되지 않는 문제를 해결하기 위해 RED-Linux 는 Linux 커널이 원어의 많은 기능을 선점하여 커널 모드에서 어느 정도 선점할 수 있도록 합니다. 이 방법은 커널의 실시간 성능을 향상시킵니다.

RED-Linux 는 다양한 스케줄링 알고리즘을 지원할 수 있는 일반적인 스케줄링 프레임워크를 제공하도록 설계되었습니다. 각 작업에 대해 여러 속성이 추가됩니다. 프로세스 일정 기반:

우선 순위: 작업의 우선 순위;

시작 시간: 작업 시작 시간

완료 시간: 작업 종료 시간 BR p> 예산: 운영 중 사용된 자원 및 작업 수

숫자 값을 조정하시겠습니까? 이러한 속성 및 일정은 거의 모든 스케줄링 알고리즘에서 이러한 속성의 사용 우선 순위를 기준으로 합니다. 이 경우 세 가지 서로 다른 스케줄링 알고리즘이 하나의 통합 알고리즘으로 원활하게 결합됩니다.