운영 체제 없이 쿼드 코어 ARM의 코어 1개를 실행하는 방법

운영 체제 없이 쿼드 코어 ARM의 코어 1개를 실행하는 방법

저는 쿼드 코어 ARM CPU를 사용하고 있는데 Linux에서 3개의 코어를 실행하고 Linux 없이 1개의 코어를 실행할 수 있는지 궁금합니다.

답변1

하나는 하나의 코어에서 실행되고 다른 하나는 다른 코어에서 실행되는 두 개의 운영 체제를 가질 수는 없습니다. ("OS-less"는 효과적으로 실행하는 코드가 자체 운영 체제를 애플리케이션 코드에 통합하는 특별한 경우입니다.) 여러 운영 체제가 이런 방식으로 실행될 수 있지만 서로를 알아야 하며 피하기 위해 신중하게 작성해야 합니다. 서로를 밟고 있습니다.

하나의 운영 체제를 하나의 코어에 할당하고 하나의 운영 체제를 다른 코어에 할당하더라도 컴퓨터는 단순한 프로세서 그 이상입니다. 운영 체제는 메모리와 주변 장치를 놓고 경쟁합니다. 어쩌면 Linux 커널에게 코어에서 완전히 멀리 떨어져 있도록 지시하는 것이 가능할 수도 있습니다. (이것이 가능한지 확실하지 않습니다. 거기에서 프로세스를 예약하지 않도록 지시하는 것만으로는 충분하지 않습니다. 쉽습니다. 커널은 해당 코어가 인터럽트를 수신하도록 시도하지 않습니다.) 그러나 이는 가장 명백한 문제일 뿐입니다. Linux가 사용하지 않는 코어를 사용하려면 Linux가 전원 관리 메커니즘의 일부로 코어를 종료하지 않도록 해야 합니다.

그러면 추억이 있습니다. Linux에게 물리적 메모리의 특정 영역을 멀리하라고 지시하는 것은 쉽습니다. 하지만 딱 하나메모리 관리 유닛모든 커널에서 사용 가능하며 Linux에서는 이 기능이 필요합니다. Linux가 다른 운영 체제와 공존하려면 다른 운영 체제가 MMU 데이터의 일부를 소유할 수 있도록 MMU 관리 코드를 크게 변경해야 하며, 두 운영 체제는 MMU 사용 방법에 동의해야 합니다. MMMU. 기술적으로 말하면 운영 체제는 MMU 없이 실행될 수 있지만 적어도 ARM CPU의 경우 MMU가 없다는 것은 가상 메모리가 없다는 의미일 뿐만 아니라(분명히) 캐시도 없다는 의미이므로 매우 느립니다.

그런 다음 주변 장치가 있습니다. 실제로 여러 운영 체제를 실행하는 경우 각 주변 장치는 하나의 운영 체제에서 소유해야 하며 다른 운영 체제는 꺼진 상태로 유지해야 합니다. 두 운영 체제가 동시에 동일한 버스를 사용하는 것은 불가능하므로 동일한 버스에 있는 모든 주변 장치는 동일한 운영 체제에 속해야 합니다.

여러 운영 체제를 실행하려는 경우 핵심은 이를 분할하는 방법이 아닙니다. 당신은해야합니다가상화이러한 모든 공유 리소스(물리적 메모리, 가상 메모리, 주변 장치)는 물론 CPU 자체도 가상화할 수 있습니다. 이는 다음을 사용하여 수행됩니다.가상 기기: 각 운영 체제는 가상 머신에서 실행되며 가상 CPU, 가상 MMU, 가상 인터럽트 등에 액세스할 수 있으며 이를 수행하는 운영 체제가 있습니다.주인이러한 가상 머신을 모두 보유하고 실제 하드웨어에 액세스할 수 있습니다. 호스트가 가상 머신을 독점적으로 실행하고 다른 작업을 수행하지 않는 경우 이를 호출합니다.관리 프로그램.

관련 정보