Mimiker의 주요 목표는 최소 UNIX와 같은 운영 체제, 즉 커널 및 사용자 공간 프로그램 세트를 제공하는 것입니다.
커널 디자인은 Linux, Plan9 및 기타 OS에서 가져온 일부 아이디어로 FreeBsd & NetBSD 시스템에서 큰 영감을 받았습니다. 우리는 오픈 소스 운영 체제의 소스 코드를 읽는 데 많은 시간을 소비합니다. 우리는 최상의 디자인 결정, 아이디어, 알고리즘, API, 관행 등을 신중하게 선택하고 최소한의 최소값으로 증류하고이를 상환하거나 Mimiker 코드베이스에 적응합니다. 우리는 그들의 실수를 반복하지 않고 레거시 및 비 완벽한 솔루션에서 멀어지기를 희망합니다.
Mimiker Project는 코드의 미니멀리즘, 단순성 및 가독성을 소중히 여기는 마음을 사로 잡는 사람들을 모으고 있습니다. 우리는 가능한 최저 복잡성을 위해 노력합니다. 우리는 크게 유용하지 않거나 희귀 한 가장자리 케이스를 처리하는 코드를 버리는 것을 좋아합니다. 우리는 디버그 가능성의 가치를 알고 있으며 개선하는 데 도움이되는 도구를 작성하는 데 시간을 보내는 것을 망설이지 않습니다.
사용자 공간 프로그램은 Mimiker Project의 일부이지만 NetBsd 또는 Suckless Project에서 간단히 포팅되었습니다. 우리는 커널 개발에 중점을 둡니다. 왜냐하면 우리는 그것이 더 흥미로워지기 때문입니다. 우리는 장치 드라이버에 너무 많은 시간을 투자하고 싶지 않으므로 대상 플랫폼 목록을 작게 유지합니다.
프로젝트에 참여하고 싶다면 Wiki를 읽으려면 더 자세히 알아보십시오!
Mimiker는 실시간 운영 체제입니다. 커널은 선점적이고 우리의 뮤 테스는 우선 순위 상속을 지원합니다. 소프트 인터럽트를 사용하여 실행하는 대신 스레드를 방해하도록 위임하여 인터럽트 컨텍스트에서 수행 한 작업을 최소화합니다.
Mimiker는 QEMU 및 Renode Control에서 MIPS (32 비트), AARCH64 및 RISC-V (32 비트 및 64 비트) 아키텍처에서 실행됩니다.
Mimiker에는 파이썬으로 작성된 gdb 스크립트, 커널 주소 소독제, 잠금 의존성 유효성 검사기, 커널 동시성 소독제 등의 멋진 디버깅 도구 세트가 있습니다. 우리는 심지어 gprof 사용하여 커널 프로파일 링을 지원합니다! 우리는 Clang을 사용하여 코드 기반을 컴파일하므로 정교한 동적 및 정적 분석 알고리즘을 사용하여 코드 신뢰도를 돕습니다.
일반적인 동기화 프리미티브 세트, 즉 스핀 잠금, 뮤트 및 조건부 변수가 제공됩니다. 우리는 비슷한 일을하는 여러 가지 프리미티브가 없지만 FreeBSD 또는 Linux 커널에 일반적입니다.
Mimiker의 커널 메모리는 유선 (예 : 스위치 불가능)이므로 FreeBSD와 달리 커널 메모리에 액세스 할 때 올바른 잠금을 선택하는 것에 대해 걱정할 필요가 없습니다. 잡지 및 VMEM 용지를 기반으로 한 물리적 메모리, 가상 주소 공간 할당 및 슬래브 할당자를위한 버디 메모리 할당자가 있습니다. 우리의 메모리 할당자는 간단하면서도 효율적입니다.
Mimiker의 드라이버 인프라는 FreeBSD의 Newbus와 유사한 방식으로 하드웨어 레지스터의 개념을 따로 따릅니다. 운전자를 휴대용으로 만들기 위해 특별한주의를 기울입니다. PCI 및 USB 버스에 장치를 자동화하는 열거 자 루틴이 있습니다. 시작 단계에서는 플랫 장치 트리를 사용하여 커널 구성을 구동합니다.
가상 파일 시스템 및 사용자 가상 주소 공간 관리는 FreeBSD 아이디어를 기반으로합니다. FreeBSD 또는 Linux 커널 에서처럼 성숙해지기 위해서는 확실한 양의 작업이 필요합니다.
NetBSD의 Korn Shell, Atto Emacs 편집자, LUA 통역사 등을 포함한 다양한 오픈 소스 도구를 실행할 수있는 80 개가 넘는 SyScalls가 있습니다. 우리는 심지어 게임도 있습니다.
Mimiker 지원 :
우리는 다음을 지원하고 싶습니다 :
해야 할 일이 많이 있습니다. 로드맵을 참조하십시오!