TL;DR
- Jinn OS는 Rust로 처음부터 구축한 x86_64 선점형 마이크로커널로, 최소한의 커널 기능과 사용자 공간 실행을 지향함.
- APIC 타이머 100Hz와 매 주기 작동하는 라운드로빈 스케줄러로 작업이 CPU를 독점하지 못하게 함.
- 숨겨진 할당과 런타임상의 예기치 않은 동작을 피하고, 자원 획득을 명시적으로 처리하는 설계임.
- 부팅, 인터럽트, 메모리, 키보드, 셸, IPC, 시스템 호출, VFS 등 핵심 기능이 구현돼 있으며 사용자 공간은 개발 중임.
- 네트워크 스택과 Ext2/FAT32 드라이버는 계획 단계이며, 브라질 기술 커뮤니티에서 개발자와 운영체제 애호가의 기여를 찾고 있음.
Jinn OS
- Jinn OS는 처음부터 구축한 최소형 선점형 x86_64 마이크로커널이며, Rust로 작성됨.
- 자원을 낭비하는 추상화와 타협을 배제하는 설계임.
철학
- Jinn OS의 설계는 세 가지 핵심 원칙을 기반으로 함.
- 낭비 없는 선점: 커널은 작업이 CPU를 독점하도록 허용하지 않으며, APIC 타이머는 100Hz로 작동하고 스케줄러는 매 주기 실행됨.
- 암묵성보다 명시성: 숨겨진 할당과 런타임상의 예기치 않은 동작이 없으며, 모든 자원 획득이 의도적이고 투명함.
- 최소 커널, 최대 역량: 커널은 스케줄링, 프로세스 간 통신(IPC), 메모리, 시스템 호출(syscall)만 처리하고 나머지는 사용자 공간(Ring 3)에서 실행됨.
기능
- 부트로더
Limine(BIOS + UEFI) — 완료 - 프레임버퍼 텍스트 렌더러(사용자 지정 글꼴) — 완료
- x86_64 IDT(48개 벡터) — 완료
- 로컬 APIC + 타이머(100Hz) — 완료
- 선점형 라운드로빈 스케줄러 — 완료
- 물리 프레임 할당자(비트맵) — 완료
- 4단계 페이징(PML4) — 완료
- 자체 커널 힙(Bump + Free List) — 완료
- PS/2 키보드 드라이버 — 완료
- 대화형 셸 — 완료
- IPC(락프리 메시지 큐) — 완료
- 시스템 호출 인터페이스(10개 호출) — 완료
- VFS + ramfs(
/dev/) — 완료 - 사용자 공간(Ring 3) — 진행 중
- 네트워크 스택 — 계획됨
- Ext2 / FAT32 드라이버 — 계획됨
아키텍처
- 사용자 공간(Ring 3): 애플리케이션 A, 애플리케이션 B, 셸이 실행됨.
- 시스템 호출 계층(
syscall.rs):exit,write,read,yield,getpid,ipc_send,spawn호출을 포함함. - IPC(
ipc.rs): 락프리 메시지 큐로 구성됨. - 스케줄러(
scheduler.rs): 선점형 라운드로빈 스케줄링과 우선순위를 관리함. - 메모리 관리자(
memory/): 물리 할당자, PML4 페이징, 사용자 지정 힙을 포함함. - VFS(
vfs/): ramfs와 devfs를 포함함. - 인터럽트 하위 시스템(
interrupts/): IDT, 로컬 APIC, PS/2 키보드, 비활성화된 PIC로 구성됨. - 하드웨어 추상화:
limine.rs,cpu.rs,vga.rs로 구성됨.
빌드 방법
사전 요구 사항
x86_64-unknown-none타깃을 사용하는 Rust nightly와-Zbuild-std를 지원하는 Cargo가 필요함.- Rust nightly 툴체인과 해당 타깃을 설치하고,
rust-src구성 요소를 추가해야 함.
빌드 및 ISO 생성
- Jinn OS는 외부 C/C++ 도구에 의존하지 않고 기본 PowerShell 스크립트를 사용함.
scripts/build.ps1로 빌드하고scripts/make_iso.ps1로 ISO를 생성함.- 생성된 ISO의 파일명은
jinn.iso이며, VirtualBox 또는 QEMU에서 부팅 가능함.
QEMU에서 실행
qemu-system-x86_64 -cdrom jinn.iso -m 128M -serial stdio명령으로 QEMU에서 실행함.
셸 명령
- 시스템이 시작되면 대화형 셸 프롬프트
jinn>에서 다음 명령을 사용할 수 있음. help: 사용 가능한 명령 목록 표시uname: 커널 이름과 버전 표시meminfo: 물리 메모리 및 힙 통계 표시clear: 화면 지우기
라이선스
- MIT 라이선스이며, 자세한 내용은
LICENSE파일에 있음.
연락 및 기여
- 이 프로젝트는 브라질 기술 커뮤니티의 참여를 중요하게 여기며, 운영체제 개발자와 애호가의 기여를 찾고 있음.
- 시작 방법은
CONTRIBUTING.md파일에서 확인할 수 있음.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요