ARM의 user mode와 kenel mode모드에 대해서 알아보겠습니다.
일단 ARM이 무엇인지 알아야 하는데
ARM은 Advanced RISC Machine 즉 임베디드 기기에 많이 사용되는 RISC 프로세서입니다.
RISC(Reduced Instruction Set Computer)는 이름에서 볼 수 있듯이 CPU 개수를 줄여 하드웨어 구조를 간하게 만드는 방법으로 마이크로프로세서를 설계하는 방법 중에 하나입니다.
그렇다면 User Level과, Kernel Level의 동작 모드에 대해서 알아보겠습니다.
User Level은 Application과 연결되는 Library로 구성되며, 이 라이브러리에 가상화, 스케줄링, 동기화 등의 기능이 있습니다.
User Level에서는 라이브러리에서 이 기능들을 처리해주고 context switiching 을 할 필요가 없기 때문에 User Level 의 프로세스는 빠르고 효율적입니다. 다만 단점도 존재합니다.
- Blocking : 한 Thread에서 Blocking이 되어버리면 process 전체가 멈춰버리는 문제가 생길 수 있습니다.
- 공유 리소스 문제 : shared resource가 overwrite되는 문제가 발생할 수 있습니다.
- 구현상의 어려움 : 스케줄링에 대한 구현에 어려움이 있습니다.
Kernel Level에서는 다양한 CPU로 가상화, 스케줄링, 동기화 등을 수행합니다.
User Level과 달리 프로세스가 독립적으로 동작하여 blocking 문제가 발생되지 않습니다. 때문에 안정적이긴 하지만, context change로 인해 속도가 저하될 수가 있습니다.
결론적으로 User Level에서는 context change가 필요 없어 빠른 처리 속도가 보장되지만, 문제가 생길 경우(Blocking) 프로세스가 정지되어버리는 리스크가 있습니다. 그리고 특정 레지스와 I/O장치에 access 할 수 없습니다. 반면, Kernel Level에서는 속도는 느리지만, 멀티프로세스의 이점을 이용할 수 있습니다.
참고
[1] - https://ko.wikipedia.org/wiki/ARM_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98
[3] - https://genesis8.tistory.com/242
[4] - https://www.youtube.com/watch?v=_5q8ZK6hwzM
[5] - https://www.youtube.com/watch?v=-NONm-Jq34Y&t=21s
[6] - http://faculty.salina.k-state.edu/tim/ossg/Introduction/OSworking.html
'개발 > 잡다개발' 카테고리의 다른 글
B+ Tree (0) | 2020.05.25 |
---|---|
구글 colab import csv read as pandas (0) | 2020.05.24 |
Synchronization Tools (0) | 2020.05.07 |
Synchronization Examples (0) | 2020.05.07 |
Deadlock (0) | 2020.05.07 |