전체 글 (484) 썸네일형 리스트형 [Arm프로세서] 운영체제 관점에서 메모리 매니지먼트란? 이번에는 다음 그림을 통해 가상 주소와 물리 주소 공간이 어떻게 구성됐는지 알아봅시다. 그리고 가상 주소를 물리 주소로 변환하는 변환 테이블에 대해서도 배워 봅시다. 그림 19.5 소프트웨어 관점에서 본 가상 주소 공간과 물리 주소 공간 그림의 왼쪽 부분부터 봅시다. 왼쪽 부분은 소프트웨어 관점에서 본 가상 주소 공간을 나타냅니다. 가상 주소에는 각각 영역별로 특정 속성을 지닌 코드와 데이터가 존재합니다. 소프트웨어를 실행하는 주인공인 프로세스는 가상 주소 공간에서 실행됩니다. 프로세스가 가상 주소 공간에서 어떤 명령어를 실행하면 메모리에 위치한 변환 테이블에 접근합니다. 이는 그림의 가운데 부분에 해당됩니다. 변환 테이블에 의해 가상 주소는 물리 주소 공간에 접근합니다. 여기서 가운데 존재하는 '변환 .. [Arm프로세서] 가상 주소와 물리 주소의 개념 리눅스를 비롯한 대부분의 운영체제에서는 가상 메모리를 메모리 관리 기법으로 활용합니다. 이번에는 가상 메모리와 물리 주소에 대해 알아보고 가상 메모리 기법이 적용된 이유를 알아봅시다. 대부분의 운영체제는 다양한 메모리(DRAM) 상에서 실행될 수 있는데, 다음 그림은 가상 메모리 기법을 적용하기 전의 시스템 구조도입니다. 그림 19.2 물리 메모리와 메모리 시스템의 관계 물리 메모리가 '물리 메모리 A' ~ '물리 메모리 D'까지 있습니다. 만약 소프트웨어 개발자가 물리 메모리 타입에 따라 주소 오프셋을 변경하는 설정을 하거나 추가로 물리 메모리와 관련된 설정을 하면 소프트웨어의 복잡도가 많이 늘어날 수 있습니다. 물리 메모리에 대한 예외 상황을 점검해야 하니 골치가 아플 것입니다. 하드웨어 측면에서는 .. [Arm프로세서] MMU 란 MMU(Memory Management Unit)란 무엇일까요? 가상 주소를 물리 주소로 변환하는 일을 하는 주인공이 MMU입니다. MMU는 하드웨어 블록으로 Arm 프로세서 내부에 존재합니다. MMU를 눈으로 직접 확인하고 싶지만 Arm 코어와 함께 MMU가 내부에 실장돼 있어 확인할 수는 없습니다. 최근에 개발되는 대부분 시스템에서 프로세스는 MMU를 활성화한 상태에서 실행됩니다. 그래서 MMU를 활성화하면 운영체제에서 실행되는 프로세스가 바라보는 주소는 가상 주소입니다. 여기서 ‘가상’이라는 용어는 말 그대로 세상에 존재하지 않는 논리적인 개념으로 볼 수 있습니다. 그런데 가상 주소가 존재하려면 MMU가 있어야 하는데, MMU의 역할은 가상 주소를 물리 주소로 변환하는 것입니다. 그렇다면 MMU는 .. [Arm프로세서] 메모리 매니지먼트란? Arm 아키텍처에서 메모리 매니지먼트란 무엇일까요? Arm 아키텍처에서 메모리와 관련된 내용을 다룰 때 '메모리 매니지먼트'와 MMU를 함께 설명하는 경우가 많아 메모리 매니지먼트에 대해 한 문장으로 정의하기 어렵습니다. Arm 아키텍처에서 메모리 매니지먼트는 다음과 같은 기능을 활용해 운영체제 커널에서 메모리 관련 시스템을 구축할 수 있는 환경을 제공하는 것입니다. MMU: 가상 주소를 물리 주소로 변환 메모리 컨트롤 레지스터: MMU와 메모리 시스템 관련 속성 설정 그렇다면 MMU는 무엇일까요? 가상 주소를 물리 주소로 변환하는 일을 하는 하드웨어 블록을 MMU라고 합니다. 메모리 매니지먼트의 전체 구조 다음 그림을 보면서 메모리 매니지먼트를 구성하는 주요 기능에 대해 알아봅시다. 그림 19... [Arm프로세서] Armv7: 어떤 동작 모드를 선택해야 할까? 이어서 Arm 아키텍처에서 정의된 동작 모드가 운영체제나 RTOS에서는 어떻게 활용되는지 알아봅시다. 유저 모드는 유저 애플리케이션이 실행되는 모드이고, 슈퍼바이저 모드는 운영제체의 커널이나 커널 드라이버가 실행되는 모드입니다. 그런데 동작 모드에 대한 내용을 처음 접하면 다음과 같은 다양한 의문이 생깁니다. 동작 모드는 왜 존재하며, 각각 어떻게 활용될까? 진행 중인 프로젝트에서 혹시 운영체제를 사용하지 않는 경우에는 유저 모드만 사용하면 될까? 이 질문에 대해 "프로젝트의 스펙에 맞게 동작 모드를 선택하면 된다"라고 말씀드리고 싶습니다. 동작 모드를 선택하는 예시 한 가지 예를 들까요? 디스플레이 디바이스에 'Hello, world'만을 출력하는 동작만 수행하는 제품을 만든다고 가정해 봅시다. 키보드.. [Arm프로세서] Armv8: 익셉션 레벨은 어떻게 변경될까? Armv8 아키텍처에서 익셉션 레벨은 어떻게 변경될까요? 크게 3가지 방식으로 익셉션 레벨이 변경됩니다. SVC, HVC, SMC 명령어 실행 IRQ/FIQ 인터럽트 발생 ERET 명령어 실행 다음 표를 보면 익셉션 레벨로 진입하는 방법을 확인할 수 있습니다. 표 6.3 Armv8 아키텍처에서 익셉션 레벨로 진입하는 방법 먼저 유저 애플리케이션이 실행되는 EL0에서 진입되는 익셉션 레벨을 알아봅시다. EL0에서 진입하는 익셉션 레벨 EL0에서 EL1으로 진입하는 방법은 크게 3가지로 분류할 수 있습니다. 첫 번째로는 소프트웨어적으로 EL1에 진입하는 방법입니다. EL0에서 SVC 명령어를 실행하면 EL0 Synchronous 익셉션이 유발되면서 EL1으로 진입합니다. 이런 동작을 운영체제에서는.. [Arm프로세서] Armv8: 익셉션 레벨과 특권 레벨 Armv8 아키텍처는 PL0 ~ PL3까지 4개의 privilege level(접근 권한)을 정의합니다. privilege levels은 Armv7 아키텍처에서 다룬 내용과 거의 유사합니다. privilege levels은 Arm 아키텍처에서만 지원할까요? 그렇지는 않습니다. x86을 포함한 대부분의 CPU 아키텍처는 privilege levels과 같은 기능을 지원합니다. 그 이유는 무엇일까요? 주로 리눅스와 같은 범용 운영체제를 설계할 때 시스템에 결함을 일으킬 수 있는 유저 애플리케이션으로부터 시스템을 보호하기 위해서입니다. 리눅스 커널과 같은 운영체제 커널은 privilege level에서 실행되며 privilege level에서만 주요 시스템 설정(시스템 레지스터, 인터럽트, 캐시 접근)을 .. [Arm프로세서] 익셉션 레벨 소개 익셉션 레벨은 ‘익셉션’과 ‘레벨’의 합성어로 익셉션의 레벨로 해석할 수 있습니다. 그런데 ‘익셉션 레벨’은 ‘익셉션의 레벨’과는 조금 다른 의미를 지니는 용어입니다. 먼저 익셉션 레벨을 소개합니다. 다음과 같은 Arm 스펙 문서의 내용을 보면서 익셉션 레벨에 대해 알아봅시다. 출처: Arm Architecture Reference Manual Armv8, for A-profile architecture https://developer.arm.com/documentation/ddi0487/gb D1.1 Exception levels The ARMv8-A architecture defines a set of Exception levels, EL0 to EL3, where: • If ELn is the Ex.. 이전 1 ··· 5 6 7 8 9 10 11 ··· 61 다음