2013-08-27 5 views
3

커널 공간에서 실행될 때 프로세스를 선점 할 수 없다는 것을 알고 있습니다. 사실이라면 RTOS에서 어떻게 응답 성이 보장됩니까? (시스템 호출이 실행되는 데 더 많은 시간이 걸리는 경우)? 프로세스가 커널 공간에서 실행 중일 때도 컨텍스트 전환을 할 수 있습니까?RTOS에서 커널 공간에서 실행될 때 프로세스가 미리 알려질 수 있음

+0

RTOS = Real-time Operating System? –

답변

1

프로세스를 선점 할 수 있는지 여부는 프로세스 상태 디자인에 따라 다릅니다. 리눅스에서는 UNITERUPTIBLE_SLEEP을 가지고 있는데, 프로세스가 여전히 요청한 특정 서비스를 종료합니다. (예 읽기). 서비스가 완료되지 않고 프로세스가 신호를 얻지 않고 무한히 잠자고있는 (시스템 리소스를 보유하고있는) 경우에도 서비스가 완료되지 않을 수도 있습니다.

RTOS의 경우이 방법은 리소스 (Ex 메모리)가 부족하기 때문에 정당화되지 않습니다. 따라서 프로세스는 UNITERUPTILBE 상태에있을 수 없습니다. 따라서 OS는 조기에 일부 서비스를 대기/대기하는 프로세스에 신호를 보낼 수 있습니다. 따라서 운영 체제는 프로세스에 대한 제어력이 뛰어나 시스템 리소스를 제어 할 수 있습니다.

@Levente Kurusa가 지적한대로 OS는 일정한 시간이 경과하면 프로세스에 신호를 보내고 OS에 대한 제어권을 부여하거나 (시간이 잘 걸리는 실행으로 응답 시간이 좋음) 대기중인 경우 죽일 수 있습니다 장시간 동안 서비스를 위해.

1

RTOS에서 각 프로세스에는 최소 실행 시간이 있으며, 시스템 호출은 최악의 상황, 즉 완료하는 데 걸리는 최대 시간을 보장하는 방식으로 문서화되고 구현됩니다. 즉, 예를 들어 open()을 호출하면 RTOS의 시스템 호출 문서가 최악의 시간 필드를 갖게됩니다. 통화가 100ms 이내에 완료되지 않으면 실패합니다. RTOS의 응용 프로그램 개발은 일반적인 OS 개발과는 완전히 다릅니다. 각 통화 시간 등을 고려해야합니다. 예를 들어, QnX에서 OS에 최대 응답 시간을 알려줘야합니다. 해당 프레임에서 프로세스가 완료되지 않으면 프로세스가 종료됩니다.
참고 : QnX는 x86 용 RTOS입니다.

0

RTOS 아키텍처는 상당히 다양하므로 일반 성명을 발표 할 수 없습니다. 커널 공간의 개념은 디자인과 실행 플랫폼에 따라 특정 RTOS와 관련되지 않을 수도 있습니다. 예를 들어 MMU가없는 타겟은 실제로 개념을 구현할 수 없지만 일부 타겟은 커널에서 사용할 수있는 인터럽트 나 수퍼바이저의 권한 실행 모드를 가지고 있지만 그와 같은 것은 아니며 스택과 레지스터 세트의 전환과 액세스 만 필요합니다 관리 메모리 및 I/O 공간이 아닌 특정 명령어로

많은 RTOS는 단순히 작업 스케줄링, 타이머, 동기화 및 IPC 이상을 제공하는 스케줄링 커널이며 정적으로 좋아하는 라이브러리로 제공되므로 최종 응용 프로그램이 모 놀리 식입니다. 대부분의 경우 모든 스레드가 단일 메모리 공간을 공유하며 작업 모델로서 "경량"스레드가 아닌 "프로세스"개념이 구현되지 않습니다. "커널 공간"개념이있는 경우 일반적으로 OS 스케줄러 만이 해당 모드로 실행되며 모든 작업, 스레드 또는 프로세스는 해당 "공간"외부에서 실행됩니다.

MMU를 광범위하게 사용하고 "프로세스"모델을 사용하는 OS는 마이크로 커널 아키텍처를 사용하는 QNX이므로 스케줄링을 담당하는 시스템의 아주 작은 부분 만 "커널 공간"에서 실행됩니다. OS 및 모든 사용자 프로세스가이를 실행합니다.

그러나 RTOS에서는 항상 인터럽트가 가능한 한 비활성화되거나 비활성화되며 스케줄러 자체는 완전히 결정적입니다.

RTOS 개념을 더 잘 이해하려면 Jack Ganssle의 this online course을 살펴보십시오.

관련 문제