문제

자신의 말로 설명하면, 선점은 무엇이며 (Linux) 커널에 어떤 의미가 있습니까?

선제적인 커널을 갖는 데있어 장점과 단점은 무엇입니까?

도움이 되었습니까?

해결책

선제 적 멀티 태스킹 - 단일 프로세서에서 여러 프로세스/스레드를 실행하여 실제로 각각이 실행될 때 동시에 실행되는 환상을 만듭니다. 프로세스는 실행을 예정하고 기다릴 때 "선점"됩니다. 다음 번에 슬라이스가 들어옵니다.

선제 적 커널은 코드를 실행하는 중간에 (예 : 시스템 호출에 대한 응답으로) 다른 일을하고 다른 스레드, 아마도 커널에없는 스레드를 실행하는 중간에 중단 될 수있는 커널입니다.

선제 적 커널의 주요 장점은 SYS 전화가 전체 시스템을 차단하지 않는다는 것입니다. Sys-Call이 끝나는 데 시간이 오래 걸리면 커널 이이 시간에 다른 일을 할 수 없다는 것을 의미하지는 않습니다. 주요 단점은 이것이 커널 코드에 더 많은 복잡성을 도입하여 더 많은 엔드 케이스를 처리하거나, 더 미세한 잠금을 수행하거나, 잠금식 구조 및 알고리즘을 사용해야한다는 것입니다.

다른 팁

실제로 "선제 적"이라는 용어를 사용해야합니다. 선점에는 다른 종류가 있습니다. 본질적으로, 그것은 매우 간단하며 아마도 다른 이름으로 이것을 이해할 수 있습니다. 선제 적 운영 체제는 선점 된 응용 프로그램에서 특별한 프로그래밍없이 사용자 모드 스레드 간의 컨텍스트를 전환 할 수 있습니다. 이것은 멀티 태스킹을 허용합니다. OS는 프로세스로 전환하고 다시 전환 할 수 있으며이 스위칭은 본질적으로 트라스 니트입니다. 커널 모드 스레드를 선점 할 수있는 선제 적 커널과 같은 것이 있습니다 (대부분의 운영 체제는이를 허용하지 않지만 실시간 시스템과 같은 특정 응용 프로그램에는 필요합니다). 이것은 매우 단순화 된 설명입니다.

다른 사람들은 선제적인 커널이 무엇인지 적절하게 설명했습니다.

좋은 것은 무엇입니까?

대부분 혜택은 다음과 같습니다.

  • 비 SMP 시스템에 대한 대기 시간이 낮 으실 - 일반적으로 실시간 시스템 또는 대기 시간이 중요한 다른 것들 (오디오, 비디오 앱)에 사용됩니다.
  • SMP 시스템이없는 커널 개발자 교육 SMP에 대한 올바른 코드를 작성하는 방법

방해가되지 않는 커널을 사용하면 단일 프로세서 시스템에서 커널 개발자가 게으르고 대부분의 시간을 잠그지 않고 도망 갈 수 있습니다. 물론 이것은 SMP에서 큰 실패입니다. 선제적인 커널은 더 많은 코어 없이이 통증을 얻을 수 있습니다.

나는 이것을 생각 해요 게시하다 귀하의 질문을 설명합니다.

선점이란 무엇입니까?

운영 체제가 우선 순위가 높은 과제를 선호하여 현재 예정된 작업을 선점하거나 중지하는 능력. 스케줄링은 프로세스 또는 I/O 스케줄링 등 중 하나이지만 이에 국한되지 않을 수 있습니다.

선점 커널이란 무엇입니까?

Linux에서는 사용자 공간 프로그램이 항상 선점적이었습니다. 커널은 일반 시계 진드기를 사용하여 사용자 공간 프로그램을 방해하여 다른 스레드로 전환합니다. 따라서 커널은 사용자 공간 프로그램이 프로세서 (협동 멀티 태스킹의 경우)를 명시 적으로 해제 할 때까지 기다리지 않습니다. 이는 사용자 공간 프로그램의 무한 루프가 시스템을 차단할 수 없음을 의미합니다.

그러나 2.6 커널까지 커널 자체는 사전에 전달되지 않았습니다. 한 스레드가 커널에 들어가 자마자 다른 스레드를 실행하는 데 선점 할 수 없었습니다. 프로세서를 사용하여 SyScall이 종료되었을 때 또는 현재 스레드가 Schedule () 함수를 사용하여 스케줄러에게 다른 스레드를 실행하도록 요구할 때 다른 스레드를 실행하는 데 사용될 수 있습니다. 이는 커널 코드의 무한 루프가 전체 시스템을 차단했음을 의미하지만 실제로는 문제가되지 않습니다. 커널 코드는 무한 루프가 없도록 설계되었습니다.

커널 선점은 2.6 커널로 도입되었으며 config_preemp 옵션을 사용하여 활성화 또는 비활성화 할 수 있습니다. CONFIG_PREEMPT가 활성화되면 코드가 로컬 인터럽트를 비활성화 한 경우를 제외하고는 커널 코드를 어디에서나 선점 할 수 있습니다. 코드의 무한 루프는 더 이상 전체 시스템을 차단할 수 없습니다. config_preemp가 비활성화되면 2.4 동작이 복원됩니다.

장점과 단점?

장점 : 선점 커널은 대기 시간과 확장 성을 향상시킬 수 있으며 우선 순위가 높은 작업을 실행하고 적시에 응답 할 수 있습니다.

단점 : 특히 SMP에서 선점 커널에서 코드 작성이 어렵게 만들고 많은 요인을 고려해야합니다.

선점은 OS가 여러 작업 (별도의 독립형 코드)을 지원하고 일정에 따라 작업간에 전환한다는 것을 의미합니다. 작업이 중단되면 "선점"이라고합니다. 최신 OS는 이것을 지원하지만 예를 들어 간단한 임베디드 시스템에는 필요하지 않습니다. 지원 작업 전환의 오버 헤드가 항상 가치가있는 것은 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top