무한 루프 VS 스케줄러

무한 루프 VS 스케줄러

어셈블리 관점에서, 셰둘러가 사용할 수 있는 제어 기능으로 점프하지 않고 몇 가지 명령으로 점프하는 코드를 작성했을 때 어떻게 Unix가 이와 같은 코드로 분리됩니까?

타이머와 인터럽트를 사용하고 있다고 생각합니다. 그렇다면 문제는 중단 없이 하드웨어에서 유닉스 시스템을 구현하면서도 제한된 시간 내에 무한 루프 코드를 해결할 수 있느냐는 것입니다.

아니면 유닉스가 "while(true){}"와 같은 코드를 처리하는 유일한 방법은 인터럽트가 있는 하드웨어 타이머를 통해서라고 가정하는 것이 맞습니까?

그렇다면 하드웨어 타이머 + 인터럽트 없이 하드웨어에서 유닉스 계열 시스템을 구현하기 위한 최소 요구 사항은 무엇입니까?

답변1

비선점형 스케줄링과 선점형 스케줄링의 차이점에 대해 논의하고 있습니다.

비선점형(협동적이라고도 함)은 더 간단하며(타이머가 필요하지 않음) 스레드 통신에 잠금이 필요하지 않습니다. 예를 들어 Apple Mac OS9 및 이전 버전에서는 초기 MS-Windows, 많은 임베디드 시스템 및 마이크로스레딩이 사용되었다고 생각합니다.

네, 타이머가 필요합니다. 그러나 가장 간단한 하드웨어에 대한 질문입니다. Unix에는 타이머보다 훨씬 복잡한 MMU가 필요합니다. (실제로 MMU가 없는 일부 Unix 계열 시스템이 있으며 대부분의 경우 동일한 방식으로 작동합니다(차이점: 보안 없음, 스왑/페이징 없음)

케이스 작업 전환을 허용하는 또 다른 방법입니다 while true. 코드 삽입을 사용하면 됩니다. 컴파일러나 로더는 수율을 조정하기 위해 코드를 삽입합니다. 이는 수행하기 어려울 수 있습니다. 로더가 필요한 위치를 알 수 있는 정보가 충분하지 않을 수 있습니다. 원자성 가정이 깨질 수 있습니다. 올바른 언어와 컴파일러가 주어지면아마도아주 잘 할 수 있습니다. 그러나 나는 어떤 예도 모른다.

관련 정보