컴퓨터 지식 네트워크 - 컴퓨터 프로그래밍 - 여러 주류 임베디드 운영 체제의 특징을 소개하고 분석하고 비교합니다. 형님, 지금 이 문제로 어려움을 겪고 있습니다. 조언을 좀 주실 수 있나요?

여러 주류 임베디드 운영 체제의 특징을 소개하고 분석하고 비교합니다. 형님, 지금 이 문제로 어려움을 겪고 있습니다. 조언을 좀 주실 수 있나요?

학습 단계에 있다면 LINUX와 UCOS-II가 더 적합합니다.

uc/os와 uclinux 운영 체제는 공개적으로 사용 가능하고 성능이 뛰어난 두 가지 운영 체제입니다. 무료 임베디드 운영체제는 실시간 운영체제와 비실시간 운영체제를 연구하는 모델로 널리 활용될 수 있다. 이 기사에서는 uc/os와 uclinux를 비교하여 임베디드 운영 체제 적용에 있어 몇 가지 중요한 문제를 분석 및 요약하고 임베디드 시스템 개발에서 운영 체제 선택의 기초를 요약합니다.

두 가지 오픈 소스 임베디드 운영 체제 소개

uc/os와 uclinux 운영 체제는 현재 널리 사용되는 두 가지 무료 오픈 소스 임베디드 운영 체제입니다. uc/os는 소규모 제어 시스템에 적합하며 높은 실행 효율성, 작은 설치 공간, 뛰어난 실시간 성능 및 강력한 확장성의 특징을 가지고 있으며 최소 커널은 2k까지 컴파일할 수 있습니다. Uclinux는 표준 Linux의 우수한 기능을 계승하고 임베디드 프로세서의 특성에 맞게 설계된 운영 체제입니다. 네트워크 프로토콜이 내장되어 있고 다중 파일 시스템을 지원하며 개발자는 표준 Linux에 대한 사전 지식을 활용할 수 있습니다. 컴파일된 타겟 파일은 수백 k개 단위로 제어가 가능합니다.

uc/os는 무료 오픈 소스 코드, 컴팩트한 구조 및 제거 가능한 실시간 커널을 갖춘 실시간 운영 체제입니다. 핵심은 작업 스케줄링 및 관리, 시간 관리, 작업 간 동기화 및 통신, 메모리 관리, 인터럽트 서비스와 같은 기능을 제공합니다.

uclinux는 뛰어난 임베디드 리눅스 버전입니다. uclinux는 micro-conrol-linux의 약자입니다. 표준 Linux와 비교하여 안정성, 강력한 네트워크 기능 및 우수한 파일 시스템과 같은 표준 Linux 운영 체제의 주요 장점을 통합합니다. 그러나 MMU(메모리 관리 장치)가 없기 때문에 멀티태스킹을 구현하려면 특정 기술이 필요합니다.

두 가지 임베디드 운영 체제의 주요 성능 비교

임베디드 운영 체제는 임베디드 시스템의 소프트웨어 및 하드웨어 리소스의 제어 센터로 여러 사용자를 가장 합리적이고 구성합니다. 효과적인 방법* **임베디드 시스템의 다양한 리소스를 즐겨보세요. 사용자는 시스템 프로그램 이상의 모든 소프트웨어를 말합니다. 소위 합리적이고 효과적인 방법은 운영 체제가 멀티태스킹을 달성하기 위해 하드웨어 리소스를 조정하고 완전히 활용하는 방법을 나타냅니다. 복잡한 운영 체제는 모두 파일 시스템을 지원하므로 파일 정리 및 작업 표준화가 쉽습니다.

임베디드 운영체제의 또 다른 특징은 다양한 플랫폼에서 직접 사용할 수 없다는 점이다. 일반적으로 특수 플랫폼이 제대로 작동하려면 운영체제를 이식해야 한다. 프로세스 스케줄링, 파일 시스템 지원 및 시스템 이식은 임베디드 운영 체제의 실제 적용에서 가장 일반적인 문제입니다. 다음에서는 이러한 관점에서 uc/os와 uclinux를 분석하고 비교합니다.

프로세스 스케줄링

작업 스케줄링은 주로 컴퓨터 시스템의 리소스(예: 메모리, I/O 장치, CPU)에 대한 작업 경쟁을 조정하는 것입니다. 프로세스 스케줄링은 CPU 스케줄링이라고도 하며, 기본 작업은 특정 원칙에 따라 준비 상태의 프로세스에 CPU를 할당하는 것입니다. 임베디드 시스템의 메모리와 I/O 장치는 일반적으로 CPU와 동시에 특정 프로세스에 속하기 때문에 태스크 스케줄링과 프로세스 스케줄링의 개념은 유사하며 구별되지 않는 경우가 많습니다. 프로세스의 개념.

프로세스 스케줄링은 기본적으로 '박탈 스케줄링'과 '비박탈 스케줄링'의 두 가지 방법으로 나눌 수 있습니다. 소위 "비박탈 스케줄링"이란 프로세스가 실행되도록 예약되면 프로세스가 종료될 때까지 프로세스가 계속 실행되거나, 어떤 이유로 CPU가 포기되어 대기 상태에 들어간 후 CPU가 종료되는 것을 의미합니다. 다른 프로세스에 재할당됩니다.

소위 "박탈 스케줄링"은 우선 순위가 더 높은 프로세스가 준비 상태에 나타나거나 실행 중인 프로세스가 지정된 시간 조각을 모두 사용하면 현재 프로세스의 작업이 즉시 박탈됩니다(다시 시작 상태로 되돌림). 준비 상태), CPU를 다른 프로세스에 할당

실시간 운영 체제인 uc/os는 박탈 가능한 실시간 멀티태스킹 커널을 사용합니다. 선점형 실시간 커널은 언제든지 준비된 가장 높은 우선순위의 작업을 실행합니다. UC/OS는 우선순위 수준 0~63에 해당하는 최대 64개의 작업을 지원할 수 있습니다.

여기서 0은 가장 높은 우선순위입니다. 작업 스케줄링의 내용은 우선순위가 가장 높은 작업 찾기와 작업 전환의 두 부분으로 나눌 수 있습니다.

가장 우선순위가 높은 작업에 대한 검색은 준비된 작업 목록을 설정하여 수행됩니다. uc/os의 각 작업에는 독립적인 스택 공간과 작업 제어 블록 tcb(작업 제어 블록)라는 데이터 구조가 있으며, 여기서 첫 번째 멤버 변수는 저장된 작업 스택 포인터입니다. 작업 스케줄링 모듈은 먼저 ostcbhighrdy 변수를 사용하여 현재 최고 수준 준비 작업의 tcb 주소를 기록한 다음 os_task_sw() 함수를 호출하여 작업 전환을 수행합니다.

Uclinux의 프로세스 스케줄링은 Linux의 전통을 따릅니다. 시스템은 특정 간격으로 프로세스를 일시 중지하는 동시에 빠르고 주기적인 클럭 타이밍 인터럽트를 생성하고 스케줄링 기능을 통해 프로세스를 결정합니다. (타이머 처리 기능) 타임 슬라이스를 가질 시기. 그런 다음 관련 프로세스 전환이 수행되며, 이는 하위 프로세스를 생성하기 위해 포크 기능을 호출하는 상위 프로세스에 의해 달성됩니다.

uclinux 시스템 포크 호출이 완료된 후, 하위 프로세스가 종료를 호출하거나 exec를 호출하여 실행될 때까지 상위 프로세스 대신 하위 프로세스가 실행됩니다(상위 프로세스는 이미 휴면 상태임). 이때 실행 파일 로딩이 가능하며, 이 프로세스가 단지 상위 프로세스의 복사본일지라도 이 프로세스는 불가피합니다. 하위 프로세스가 종료 또는 exec를 실행할 때 하위 프로세스는 wakeup을 사용하여 상위 프로세스를 깨우고 상위 프로세스가 계속 실행될 수 있도록 합니다.

Uclinux에는 메모리를 관리하는 mmu가 없기 때문에 메모리에 직접 접근하며, 모든 프로그램에서 접근하는 주소는 실제 물리주소이다. 운영 체제의 메모리 공간은 보호되지 않으며 각 프로세스는 실제로 실행 공간을 공유합니다. 이를 위해서는 여러 프로세스를 사용할 때 데이터 보호가 필요하며, 사용자 프로그램이 사용하는 공간이 시스템 커널 공간을 차지하게 되므로 프로그래밍할 때 더 많은 주의가 필요합니다. 그렇지 않으면 쉽게 시스템 충돌이 발생할 수 있습니다.

위의 분석을 통해 uc/os 커널은 실시간 시스템의 요구 사항에 따라 설계 및 구현되었음을 알 수 있으며, 이는 비교적 간단하고 높은 실시간 요구 사항을 충족할 수 있습니다. 반면, Uclinux는 표준 Linux의 멀티태스킹 구현 구조를 그대로 계승하고 있으며, 임베디드 프로세서의 특성만을 기반으로 이를 개선합니다. 실시간 효과를 얻으려면 시스템이 실시간 커널의 제어 하에 실행되어야 합니다. rt-linux는 이 기능을 실현할 수 있는 실시간 커널입니다.

파일 시스템

소위 파일 시스템이란 파일 정보에 접근하고 관리하는 일을 담당하는 조직을 말합니다. 파일 읽기, 쓰기, 수정, 복사 및 파일 관리에 필요한 리소스(디렉토리 테이블, 저장 매체 등)를 관리하는 소프트웨어 부분입니다.

uc/os는 중소형 임베디드 시스템을 대상으로 합니다. 모든 기능(세마포어, 메시지 메일함, 메시지 큐 및 관련 기능)을 포함한다면 컴파일된 uc/os 커널은 6~10kb에 불과합니다. 따라서 시스템 자체는 파일 시스템을 지원하지 않습니다. 그러나 uc/os는 확장 성능이 뛰어나며 필요한 경우 파일 시스템의 내용을 직접 추가할 수 있습니다.

uclinux는 리눅스의 완벽한 파일 시스템 성능을 그대로 이어받았습니다. 일반 ext2 파일 시스템보다 적은 공간을 필요로 하는 romfs 파일 시스템을 사용합니다.

공간 절약은 두 가지 측면에서 비롯됩니다. 첫째, 커널은 ext2 파일 시스템보다 romfs 파일 시스템을 지원하는 데 더 적은 코드가 필요합니다. 둘째, romfs 파일 시스템은 상대적으로 간단하고 파일 시스템 슈퍼블록(수퍼블록)을 생성하는 데 더 적은 저장 공간이 필요합니다. . romfs 파일 시스템은 동적 삭제 및 저장을 지원하지 않습니다. 시스템이 동적으로 저장해야 하는 데이터는 가상 램 디스크를 사용하여 처리됩니다(램 디스크는 ext2 파일 시스템을 사용합니다).

UClinux는 또한 Linux 네트워크 운영 체제의 장점을 계승하여 네트워크 파일 시스템을 쉽게 지원할 수 있고 TCP/IP 프로토콜을 내장할 수 있어 Uclinux용 네트워크 액세스 장비 개발을 용이하게 합니다.

두 운영 체제의 파일 시스템 지원으로 볼 때 더 많은 파일 처리가 필요한 복잡한 임베디드 시스템에서는 uclinux가 좋은 선택임을 알 수 있습니다. uc/os는 주로 일부 제어 시스템에 적합합니다.

운영체제 이식

임베디드 운영체제 이식의 목적은 운영체제가 특정 마이크로프로세서나 마이크로컨트롤러에서 실행될 수 있도록 하는 것입니다. uc/os와 uclinux 모두 오픈소스 코드를 적용한 운영체제이며, 구조화된 설계로 프로세서 관련 부분의 분리가 용이해 새로운 프로세서에 이식이 가능하다.

다음은 두 시스템의 이식에 대해 각각 설명한다.

(1)UC/OS 이식

UC/OS를 이식하려면 대상 프로세서가 다음 요구 사항을 충족해야 합니다.

·프로세서의 C 컴파일러는 재진입 코드를 생성하고 C 언어를 사용하여 인터럽트를 켜고 끌 수 있습니다.

·프로세서는 인터럽트를 지원하고 예약된 인터럽트를 생성할 수 있습니다.

·프로세서는 충분한 RAM(수 k 바이트)을 지원합니다. ), 멀티태스킹 환경의 작업 스택으로;

·프로세서에는 스택 포인터와 기타 CPU 레지스터를 읽고 스택이나 메모리에 저장하는 명령이 있습니다.

프로세서와 C 컴파일러의 기술적인 내용을 이해한 후, uc/os 이식은 프로세서와 관련된 코드만 수정하면 됩니다.

구체적인 내용은 다음과 같습니다:

·스택 성장 방향을 식별하려면 os_cpu.h에 상수를 설정해야 합니다.

·여러 선언이 필요합니다. os_cpu.h에서 작성됨 인터럽트 전환 및 작업 전환을 위한 매크로;

·os_cpu.h는 특정 프로세서의 워드 길이에 따라 일련의 데이터 유형을 재정의해야 함;

·os_cpu_a.asm은 4개의 어셈블리 언어 함수를 다시 작성해야 합니다.

·os_cpu_c.c는 C 언어로 6개의 간단한 함수를 작성해야 합니다.

·메인 헤더 파일 포함을 수정합니다. h 위의 세 파일과 추가된 다른 자체 헤더 파일을 추가합니다.

(2) uclinux 이식

uclinux는 실제로 임베디드 시스템용 Linux를 개선한 것이므로 uc/os에 비해 구조가 상대적으로 복잡합니다. 더 복잡합니다. 일반적으로 uclinux를 이식하려면 uc/os가 충족해야 하는 위의 조건 외에도 대상 프로세서에 충분한 용량(수백 kbyte 이상)의 외부 ROM 및 RAM이 있어야 합니다.

UClinux 이식은 크게 세 가지 수준으로 나눌 수 있습니다:

구조 수준 이식 이식할 프로세서의 구조가 이미 지원되는 프로세서 구조와 다른 경우에는 다음을 수행해야 합니다. linux/arch 디렉토리에서 관련 프로세서 구조 파일을 수정합니다. 대부분의 Uclinux 커널 코드는 프로세서 및 해당 아키텍처와 독립적이지만 가장 낮은 수준의 코드도 각 시스템마다 다릅니다. 이는 주로 고유한 인터럽트 처리 컨텍스트, 메모리 맵 유지 관리, 작업 컨텍스트 및 초기화 프로세스에 반영됩니다. 이러한 루틴은 linux/arch/ 디렉터리에 있습니다. Linux는 다양한 아키텍처를 지원하므로 새로운 시스템의 경우 유사한 시스템 루틴을 모방하여 하위 수준 루틴을 작성할 수 있습니다.

·플랫폼 수준 이식, 이식하려는 프로세서가 이미 Uclinux에서 지원하는 시스템의 분기 프로세서인 경우 해당 아키텍처 디렉터리에 해당 디렉터리를 생성하고 해당 코드를 작성해야 합니다. 예를 들어, mc68ez328은 mmu-less m68k 코어를 기반으로 합니다. 이때 이식하려면 linux/arch/m68knommu/platform/mc68ez328 디렉터리를 만들고 추적 프로그램(사용자 프로그램에서 커널 기능으로의 인터페이스 등의 기능 구현), 인터럽트 제어 스케줄러, 그 아래 벡터 초기화 프로그램을 작성해야 합니다.

·보드 수준 이식, 사용 중인 프로세서가 uclinux에서 지원되는 경우 보드 수준 이식만 필요합니다. 보드 수준 이식을 위해서는 linux/arch/?platform/에 해당 보드 디렉터리를 생성한 다음 해당 시작 코드 crt0_rom.s 또는 crt0_ram.s 및 링크 설명 문서 rom.ld ​​또는 ram.ld를 생성해야 합니다. 보드 수준 이식에는 드라이버 작성 및 환경 변수 설정도 포함됩니다.

결론

uc/os와 uclinux를 비교하면 이 두 운영 체제는 응용 측면에서 장점과 단점이 있다는 것을 알 수 있습니다. uc/os는 공간을 적게 차지하고 실행 효율성이 높으며 실시간 성능이 뛰어나며 새 프로세서에 이식하기가 상대적으로 간단합니다. Uclinux는 상대적으로 넓은 공간을 차지하고, 평균적인 실시간 성능을 가지며, 새로운 프로세서에 이식하기가 상대적으로 복잡합니다. 그러나 Uclinux는 다양한 파일 시스템을 지원할 수 있고 TCP/IP 프로토콜이 내장되어 있어 Linux의 풍부한 리소스를 활용할 수 있습니다. 일부 복잡한 응용 프로그램의 경우 Uclinux는 상당한 이점을 가지고 있습니다. 예를 들어 Cisco의 2500/3000/4000 라우터는 uclinux 운영 체제를 기반으로 개발되었습니다. 즉, 운영 체제의 선택은 임베디드 시스템의 요구 사항에 따라 결정됩니다. 간단히 말해서, 소규모 제어 시스템은 uc/os의 작은 크기와 강력한 실시간 성능을 최대한 활용할 수 있습니다. PDA 및 인터넷 연결 터미널과 같은 보다 복잡한 시스템을 개발한다면 uclinux가 좋은 선택입니다.

또한 개발 도구가 편리하고 사용하기 쉽다면 유료 시스템을 사용하는 것이 더 즐겁습니다

上篇: 캐논 DSLR 450d 좋은가요 캐논 DSLR 450d 리뷰 및 견적이요? 下篇: 크리링과 18호에 관한 만화
관련 내용