3. 운영체제
Non-RTOS
같은 자원에 여러 개의 태스크가 동시에 접근해야 할 경우 사용자 응용 프로그램은 자원에 직접 접근할 수 없다.
사용자 응용 프로그램이 OS를 통해 자원에 접근하는 과정
- 디바이스 드라이버(Device Driver) 등록: 실제 (하드웨어) 자원을 제어할 디바이스 드라이버가 미리 OS에 등록되어 있어야 한다.
- 사용자 응용 프로그램 자원 요청: 사용자 응용 프로그램은 OS에게 자원에 대한 접근 권한 요청
- 해당 디바이스 드라이버 검색: 요청을 받은 OS는 해당 자원을 실제로 제어할 디바이스 드라이버가 자신(OS)에게 등록되어 있는지 검색. 없으면 오류 메세지, 있으면 실행
- 디바이스 드라이버 자원 제어: 실제 하드웨어 지원을 제어하고 결과를 전달.
RTOS 이든 Non-RTOS이든 모든 운영체제에서 가장 중요한 개념은 여러 개의 테스크 를 어떻게 관리할 것인가 효율적으로 관리하는 방법을 “스케줄링(Scheduling)
”이라고 한다.
RTOS
USN은 주변 환경 정보를 수치적 으로 변환해주는 센서(Sensor)를 제어하는 부분과 센서로부터 받아들인 정보를 디지털로 변환하여 자신의 주변에 있는 이웃 센서 노드들에게 데이터를 전송하는 네트워크를 제어하는 부분으로 구성
- 네트워크 제어 부분: 우선 순위 낮음, 주변에 이웃 센서 노드들이 몇 개나 살아 있는지 주기적으로 감지, 마이크로 프로세서에서 넘어 온 데이터를 전송
- 센서 제어 부분: 우선 순위 높음, 센서로부터 전달된 데이터를 디지털로 변환하여 마이크로 프로세서에게 전달
RTOS는 미 버클리 대학 개발 Tiny OS와 한국전자정보통신연구원(ETRI)에서 개발한 Nano Qplus
우선 순위 제어가 반드시 필요한 경우 RTOS 사용
32Bit 고 사양 CPU에서는 “MMU(Memory Management Unit)” 가 추가된다.
“가상 메모리(Virtual Memory)” 라는 개념은 MMU에 의해 가능해진 것이다.
MMU는 가상 메모리 주소를 통해 실제 메모리 주소로 변환(mapping) 한다.
RTOS
와Non-RTOS
RTOS는 우선순위가 필요한 제품에 사용 되고, Non-RTOS는 같은 자원에 접근하려는 태스크 수가 많은 제품 개발에 사용된다. 그러나, Non-RTOS에서도 우선 순위 제어가 필요하며, 기능이 있다.
Real-Time(실시간) = 원하는 시간 내에 원하는 결과를 얻을 수 있는
차이점은 즉 RTOS란 태스크들이 원하는 시간 안에 원하는 결과를 얻도록 보장(Guarantee)**해주는 운영체제(OS)이다.**
반대로 Non-RTOS는 최대한 결과를 얻도록 노력은 하나, 보장은 안 한다.
RTOS에게 보장을 주는 것은 “우선순위(Priority)”에 있다. 우선순위가 높은 태스크를 먼저 실행하는 것이 “선점(Preemption)”이라 한다.
RTOS = 우선순위 보장 = 원하는 시간에 원하는 결과 보장 = 원하는 시간에 CPU 제어권 획득 보장
여기서 중요한 것은, **Non-RTOS는 각 태스크가 프로세스(Process)****로 되어 있고,** **RTOS는 쓰레드(Thread)****로 되어 있다는 점**이다.
**프로세스(Process)는 독립된 메모리 영역을 할당 받게 되지만**, **쓰레드(Thread)는** 독립된 메모리 영역을 할당 받지 않고 **메모리 일부를 서로 공유하기 때문에 모든 태스크가 동일한 CPU 동작 모드로 실행되어야 하기 때문이다.**
CPU 동작 모드는 소프트웨어 종류에 따라 CPU가 동작하는 하드웨어 동작 방식도 달라진다는 개념.
즉, 사용자 응용 프로그램(User Application)을 실행시킬 때의 CPU 동작 방식과 OS 커널 내의 디바이스 드라이버 등을 실행시킬 때의 CPU 동작 방식이 하드웨어적으로 서로 다르다.
“
User
” 모드: 사용자 응용 프로그램(User Application)이 실행될 때“
Supervisor
” 모드 : Linux 커널(Kernel)이 실행될 때RTOS는 모든 태스크가 동일하게 Supervisor 동작 모드로 실행,
RTOS의 모든 태스크를 합치면 하나의 프로세스
main 함수 1개 = 실행 파일 1개 = 프로세스 1개
Non-TROS(Linux, Windows)에서는 하나의 프로그램을 개발할 때 별도의 실행 파일이 1개씩 만들어진다. 왜냐하면 프로세스 기반으로 운영되는 OS 되기 때문이다.
그러나 RTOS에서는 그렇지 않다. RTOS 역시 많은 수의 소스 코드 파일로 구성 되어 있으나, 전체 중에 main 함수는 1개 뿐이다. 당연히 실행 파일도 1개만 나온다.
'임베디드 > [ Embedded ]' 카테고리의 다른 글
[ Embedded ] 21. 임베디드 개발환경(Toolchain, Compile...) (0) | 2020.10.29 |
---|---|
[ Embedded ] 20. 임베디드 시스템의 개요와 이해 (0) | 2020.10.29 |
[ Embedded ] 18. 마이크로 프로세서란? (0) | 2020.10.29 |
[ Embedded ] 17. 임베디드 플랫폼이란? (0) | 2020.10.29 |
[ Embedded ] 16. Loopback(루프백) (0) | 2020.10.08 |