하드웨어를 제어하는 시스템 소프트웨어 개발자들은 ARM 프로세서를 잘 배워야 한다고 말씀 드렸습니다. 그렇다면 다른 분야의 소프트웨어 개발자들도 ARM 프로세서들을 잘 알아야 할까요? 솔직히 말해, 모든 소프트웨어 개발자가 ARM 프로세서를 잘 배울 필요는 없습니다.
예전과 달리 소프트웨어 분야가 다양해졌고, 한 프로젝트에 탑재되는 소프트웨어의 계층 구조도 복잡해졌기 때문입니다.
다음은 안드로이드의 시스템 아키텍처 구성도인데, 이 그림을 보면서 설명을 더 하겠습니다.
그림: 안드로이드 소프트웨어 계층
그림의 윗 부분부터 보면 "Application" - "Application Framework" - "Libraries" - "Linux Kernel" 이란 계층이 보입니다. "Application" 계층에 있는 코드는 대부분 Java란 언어로 구현되며, 이 계층에서 실행되는 애플리케이션을 개발하는 개발자 분들은 애플리케이션의 시나리오나 안드로이드 프레임워크에서 제공하는 함수의 용법을 파악합니다. Java로 애플리케이션을 개발하는 분들은 ARM 프로세서의 동작 원리에 대해서 잘 알 필요는 없습니다.
하지만 C나 C++언어로 구현된 Application Framework이나 Libraries를 개발하는 개발자들은 ARM 프로세서에 대해 잘 알 필요가 있습니다.
시스템 소프트웨어 개발자와 마찬가지로 C/C++로 구현된 코드를 작성하거나 다른 라이브러리를 링크해 어떤 기능을 구현하다보면 여러가지 버그를 만날 가능성이 높습니다. 그 중에 대표적인 케이스를 예로 들면 다음과 같습니다.
● 크래시가 발생하면 코어 덤프와 같은 메모리 덤프 파일을 받아 디버깅을 수행
● 특정 시점에서 성능이 안 나오는 문제가 나와 성능을 키우기 위한 코드 작성
이와 같은 실전 문제를 빨리 디버깅하고 최적의 코드를 작성하기 위해서는 ARM 프로세서의 동작 원리를 파악할 필요가 있습니다.
이번 포스트에서는 소프트웨어 개발자들이 ARM 프로세서를 배워야 하는 이유에 대해 설명했습니다. 사실 이미 다양한 분야의 고수 소프트에어 개발자들이 이미 다음과 같은 조언을 했습니다.
● 코딩을 하는 모든 개발자들은 자신이 작성한 코드를 실제 실행하는
CPU가 어떻게 작동하는지 잘 알아야 더 좋은 코드를 작성할 수 있다.
저는 "최근 가장 대중적으로 많이 사용되는 CPU 아키텍처인 ARM 프로세서를 잘 배워야 더 좋은 코드를 작성할 수 있다"라고 말씀드리고 싶습니다.
이어지는 포스트에서는 ARM 프로세서를 공부하는 방법의 문제점과 효율적으로 공부하는 방법을 소개합니다.
Reference: ARM 프로세서의 주요 기능
ARM 프로세서는 왜 배워야 할까
ARM 프로세서 학습하는 방법의 문제점
ARM 프로세서 소개
ARM 아키텍처를 구성하는 주요 기능
● 어셈블리 명령어란
● ARM의 동작 모드와 익셉션 레벨
Written by <디버깅을 통해 배우는 리눅스 커널의 구조와 원리> 저자
'시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 > 1장: Arm 프로세서 소개' 카테고리의 다른 글
[ARM프로세서] ARM 프로세서의 역사 (0) | 2023.06.10 |
---|---|
[ARM프로세서] ARM 프로세서를 공부하는 방법의 문제점 (0) | 2023.06.10 |
[ARM프로세서] 소프트웨어 개발자가 ARM 프로세서를 배워야 하는 이유 (0) | 2023.06.10 |
[ARM] 레지스터란(ARMv7, ARMv8) (0) | 2023.06.10 |
[ARM] ARM Errata란 (0) | 2023.06.09 |