2017-01-23 10 views
0

다음 링크에서; https://www.openhub.net/p/f9-kernel F9 Microkernel은 Cortex M에서 실행되지만 Cortex M 시리즈에는 MMU가 없습니다. MMU와 가상 메모리에 대한 지식은 제한되어 있으므로 다음과 같은 제한 사항이 있습니다.MMU 없이도 마이크로 커널이 가능합니까?

  1. MMU없이 각 프로세스에서 전체 물리적 메모리의 가시성을 어떻게 방지 할 수 있습니까?
  2. MMU없이 일부 정적 메모리 설정으로 격리 할 수 ​​있습니까? (내 응용 프로그램과 커널을 실행하기에 충분한 칩 RAM을 가지고, 제한된 프로세스를위한 하드 코딩 된 메모리 영역 만). 하지만 여전히 나는 이것이 접근을 막지 않을 것인가?

답변

1

ARM Cortex-M 프로세서에는 MMU가 없으며 STMicroelectronics의 STM32F 시리즈와 같은 일부 구현에는 선택적 메모리 보호 장치 (MPU)가 있습니다.

다른 L4 커널과 달리 F9 microkernel은 MPU 전용 환경 용으로 설계되었으며 ARMv7 PMSAv7 (Protected Memory System Architecture) 모델이 지원되는 Cortex M3/M4에 맞게 최적화되어 있습니다. PMSAv7 준수 시스템의 시스템 주소 공간은 MPU로 보호됩니다. 또한 사용 가능한 RAM은 일반적으로 작고 (약 256KB), 더 큰 실제 주소 공간 (최대 32 비트)은 bit-banding을 사용하여 사용할 수 있습니다.

MPU 보호 메모리는 지원되는 영역 수를 정의하여 영역 세트로 나뉩니다. 예를 들어 STM32F429은 8 개의 별도 메모리 영역을 제공합니다. PMSAv7에서 최소 보호 영역 크기는 32 바이트이고 최대 값은 4GB입니다. MPU는 완전한 액세스를 제공합니다

  • 보호 영역을
  • 중복 보호 지역
  • 액세스 권한
  • 내보내기 메모리는

MPU 불일치 및 권한 위반이 프로그램 우선 순위 MemManage를 호출 시스템 속성 결함 처리기. (MEM 맵 테이블에 하드 코딩) 특정 속성을 가진 PAS의 영역을 나타냅니다

  1. 메모리 풀 : F9 마이크로 커널에서

    메모리 관리는 세 가지 개념으로 나눌 수 있습니다.

  2. 주소 공간 - 특정 스레드에 바인드 된 fpages의 정렬 된 목록입니다.
  3. 유연한 페이지 - L4의 기존 페이지와 달리 fpage는 MPU 영역에 대신 표시됩니다.
+0

주소 공간이 분할 작업 바이스라면 마이크로 커널이 맞지 않습니까? 예를 들어, 태스크가 드라이버와 커널 호출 (동일한 주소 공간)을 모두 호출한다고 말하면 드라이버 호출은 커널 메모리가 액세스 할 때 커널 메모리를 손상시킬 수 있습니다. 다른 모듈에 의한 커널 손상이 어떻게 작업 보호로 막을 수 있었습니까? – sniper

+0

소프트웨어 결함 격리 (SFI)와 마이크로 커널은 실제로 다른 개념입니다. 시스템 설계의 관점에서 우리는 효율적인 IPC 또는 기능 기반 자원 공유 메커니즘을 통해 장치 드라이버가 작업/스레드 특정 메모리 영역에 액세스하지 못하게해야합니다. – jserv