선점이란 무엇입니까? / 선점 형 커널이란 무엇입니까? 무엇에 좋은가요?
선점이란 무엇이며 (리눅스) 커널에 어떤 의미가 있습니까?
선점 형 커널의 장점과 단점은 무엇입니까?
선점 형 멀티 태스킹-단일 프로세서에서 여러 프로세스 / 스레드를 실행하여 실제로 각각이 실행될 작은 다중 시간 조각이 할당 될 때 동시에 실행된다는 환상을 만듭니다. 프로세스가 실행되지 않도록 예약되고 다음에 실행할 시간 조각.
선점 형 커널은 다른 작업을 수행하고 다른 스레드 (커널에없는 스레드)를 실행하기 위해 코드를 실행하는 동안 (예 : 시스템 호출에 대한 응답으로) 중단 될 수있는 커널입니다.
선점 커널의 주요 장점은 sys-call이 전체 시스템을 차단하지 않는다는 것입니다. 시스템 호출이 완료되는 데 오랜 시간이 걸린다고해서 커널이이 시간에 다른 작업을 수행 할 수 없다는 의미는 아닙니다. 가장 큰 단점은 이것이 커널 코드를 더 복잡하게 만들고, 더 많은 최종 케이스를 처리하고, 더 세밀한 잠금을 수행하거나, 잠금없는 구조와 알고리즘을 사용해야한다는 것입니다.
실제로 "선점"이라는 용어를 사용해야합니다. 선점에는 여러 종류가 있습니다. 본질적으로 이것은 매우 간단하며 아마도 다른 이름으로 이것을 이해할 것입니다. 선점 형 운영 체제는 선점 된 응용 프로그램에서 특별한 프로그래밍없이 사용자 모드 스레드간에 컨텍스트를 전환 할 수 있습니다. 이를 통해 멀티 태스킹이 가능합니다. OS는 프로세스로 전환 할 수 있으며이 전환은 본질적으로 투명합니다. 커널 모드 스레드를 선점 할 수있는 선점 커널과 같은 것도 있습니다 (대부분의 운영 체제에서는이를 허용하지 않지만 실시간 시스템과 같은 특정 응용 프로그램에 필요함). 이것은 매우 간단한 설명입니다.
다른 사람들은 선점 형 커널이 무엇인지 적절하게 설명했습니다.
무엇에 좋은가요?
대부분의 이점은 다음과 같습니다.
- 비 SMP 시스템에서 지연 시간 단축-일반적으로 실시간 시스템 또는 지연이 중요한 기타 항목 (오디오, 비디오 앱)에 사용됩니다.
- SMP 시스템이없는 커널 개발자에게 올바른 SMP 코드 작성 방법 교육
비선 점형 커널을 사용하면 단일 프로세서 시스템에서 커널 개발자가 대부분의 시간을 잠그지 않고 게으르고 탈출 할 수 있습니다. 물론 이것은 SMP에서 큰 실패입니다. 선점 형 커널을 사용하면 더 많은 코어없이 이러한 문제를 해결할 수 있습니다.
이 게시물 이 귀하의 질문을 설명 한다고 생각합니다 .
선점이란 무엇입니까?
우선 순위가 더 높은 작업을 위해 현재 예약 된 작업을 선점하거나 중지하는 운영 체제의 기능입니다. 스케줄링은 프로세스 또는 I / O 스케줄링 등 중 하나 일 수 있지만 이에 국한되지는 않습니다.
선점 커널이란 무엇입니까?
Linux에서 사용자 공간 프로그램은 항상 선점 가능했습니다. 커널은 일반 클럭 틱을 사용하여 사용자 공간 프로그램을 인터럽트하여 다른 스레드로 전환합니다. 따라서 커널은 사용자 공간 프로그램이 프로세서를 명시 적으로 해제 할 때까지 기다리지 않습니다 (협동 멀티 태스킹의 경우). 이것은 사용자 공간 프로그램의 무한 루프가 시스템을 차단할 수 없음을 의미합니다.
그러나 2.6 커널까지 커널 자체는 선점 할 수 없었습니다. 한 스레드가 커널에 들어가 자마자 다른 스레드를 실행하도록 선점 할 수 없었습니다. 프로세서는 syscall이 종료되거나 현재 스레드가 schedule () 함수를 사용하여 다른 스레드를 실행하도록 스케줄러에 명시 적으로 요청했을 때 다른 스레드를 실행하는 데 사용할 수 있습니다. 이것은 커널 코드의 무한 루프가 전체 시스템을 차단했음을 의미하지만 실제로는 문제가 아닙니다. 커널 코드는 무한 루프가 없도록 설계되었습니다.
커널 선점은 2.6 커널에 도입되었으며 CONFIG_PREEMPT 옵션을 사용하여 활성화 또는 비활성화 할 수 있습니다. CONFIG_PREEMPT가 활성화되면 코드가 로컬 인터럽트를 비활성화 한 경우를 제외하고 모든 곳에서 커널 코드를 선점 할 수 있습니다. 코드의 무한 루프는 더 이상 전체 시스템을 차단할 수 없습니다. CONFIG_PREEMPT가 비활성화되면 2.4 동작이 복원됩니다.
장점과 단점?
장점 : 선점 커널은 대기 시간과 확장 성을 향상시킬 수 있으며 우선 순위가 높은 작업을 실행하고 적시에 응답 할 수 있습니다.
단점 : 선점 커널, 특히 SMP에서 코드 작성을 어렵게 만들고 많은 요소를 고려해야합니다.
선점이란 OS가 여러 작업 (별도의 독립 실행 형 코드)을 지원하고 일정에 따라 작업간에 전환한다는 것을 의미합니다. 작업이 중단 될 때이를 "선점"이라고합니다. 최신 OS는이를 지원하지만, 예를 들어 단순한 임베디드 시스템에는 필요하지 않습니다. 작업 전환을 지원하는 오버 헤드가 항상 가치가있는 것은 아닙니다.
'Program Club' 카테고리의 다른 글
| 2D 점을 3D로 역 투영하려면 어떻게합니까? (0) | 2020.12.30 |
|---|---|
| Postgres-빈 배열을 확인하는 방법 (0) | 2020.12.30 |
| 대리자로 생성자-C #에서 가능합니까? (0) | 2020.12.30 |
| Python 다중 처리 및 공유 카운터 (0) | 2020.12.30 |
| 현재 활동 바꾸기 (0) | 2020.12.30 |