마에스트로 스크린샷
Rust는 충분한 인기를 얻었습니다. Linux는 물론 다른 운영 체제에서도 보조 언어로 통합되도록 선택된 언어 중 하나가 되었습니다. 예를 들어 Android의 경우 이미 Rust 코드의 일부를 갖고 있고 Windows도 마찬가지입니다. 등을 승인했습니다.
녹 강력한 언어임이 입증되었으며 그러한 신뢰를 얻었습니다. 일부 운영 체제는 이 프로그래밍 언어로 만들어졌으며 몇 가지만 언급하면 다음과 같습니다. 산화 환원, 우리는 또한 다음과 같이 처음부터 커널을 작성했습니다. 케를라 또는 중국이 최근 발사한 위성.
이렇게 언급하게 된 이유는 최근에 제 관심을 끌었던 뉴스를 접했기 때문입니다. Rust로 작성된 커널을 개발하는 프로젝트가 발표되었습니다. Linux와 부분적으로 호환됩니다.
이 프로젝트의 이름은 "선생님" 그리고 언급했듯이, Linux 커널에서 시스템 호출의 하위 집합을 구현하는 Rust로 작성된 Unix 계열 커널입니다. 표준적인 작업 환경을 조성하기에 충분합니다. 이처럼 "Maestro" 프로젝트는 새로운 것이 아닙니다. 개발자가 이 프로젝트가 2018년에 탄생했다고 언급했기 때문입니다. 그러나 당시에는 C로 작성되었고 Rust의 장점과 특성이 다르기 때문에 프로젝트를 XNUMX년부터 다시 작성했습니다. 영.
프로젝트 페이지에서 변경 이유는 다음과 같습니다.
그 순간 나는 Rust(이 언어로 된 나의 첫 번째 프로젝트)로 전환하기로 결정했는데, 이는 몇 가지 이점을 제공합니다:
- 이전 실수에서 얻은 교훈을 활용하여 프로젝트를 처음부터 다시 시작하세요.
- C로 Linux와 같은 커널을 작성하는 것보다 조금 더 혁신적이 되십시오. 결국, 당시에는 Linux를 사용하십시오.
- 일부 커널 프로그래밍의 어려움을 활용하려면 Rust 언어의 보안을 사용하세요. Rust 작성 시스템을 사용하면 메모리 안전에 대한 책임 중 일부를 프로그래머에서 컴파일러로 이전할 수 있습니다.
커널 개발에서는 다음과 같은 여러 가지 이유로 디버깅이 매우 어렵습니다.
- 문서를 찾기 어려운 경우가 많으며 BIOS 구현에 버그가 있을 수 있습니다(생각보다 자주).
- 부팅 시 커널은 메모리에 대한 전체 액세스 권한을 가지며 쓰지 말아야 할 곳에 쓸 수 있습니다(예: 자체 코드).
- 메모리 누수 문제를 해결하는 것은 쉽지 않습니다. Valgrind와 같은 도구는 사용할 수 없습니다.
- gdb는 QEMU 및 VMWare와 함께 사용할 수 있지만 다른 에뮬레이터나 가상 머신에서 실행될 때 커널은 다르게 동작할 수 있습니다. 또한 해당 에뮬레이터는 gdb(예: VirtualBox)를 지원하지 않을 수 있습니다.
- QEMU 또는 VMWare의 gdb 지원에서 일부 기능이 누락되었으며 gdb가 때때로 충돌할 수도 있습니다.
관련하여 프로젝트의 특성상 커널이 모놀리식이라는 점이 눈에 띕니다. 현재 86비트 모드의 x32 시스템에서만 지원됩니다. 커널 코드 기반은 약 49줄을 포함하며 실제 하드웨어와 QEMU 또는 VirtualBox와 같은 가상화된 환경 모두에서 실행 가능합니다.
현재 «Maestro» 개발 과정에서는 31%가 구현되었습니다. (135/437) Linux 시스템 호출. 이것은 Bash 및 Musl 표준 C 라이브러리 기반 콘솔 환경을 로드하기에 충분합니다. 또한 Maestro 기반 환경에서는 GNU coreutils 제품군의 일부 유틸리티와 모든 Unix 시스템의 기본 패키징을 실행할 수 있습니다. 현재 네트워킹 스택을 구현하는 작업이 진행 중이며, 네트워킹 스택을 개발하는 작업도 진행 중입니다.
중 Maestro의 사용 가능한 기능이 눈에 띕니다 다음과 같은::
- 텍스트 모드가 있고 ANSI 시퀀스를 부분적으로 지원하는 PS/2 키보드 및 터미널용 컨트롤러입니다.
- 가상 메모리를 지원하는 메모리 할당 시스템입니다.
- POSIX 신호를 지원하는 라운드 로빈 알고리즘 기반 작업 스케줄러입니다.
- PCI 장치의 정의.
- IDE/PATA 컨트롤러.
- Ext2 파일 시스템.
- /tmp 및 /proc 가상 파일 시스템을 지원합니다.
- FS, MBR 및 GPT 디스크 파티션을 마운트하는 기능.
- initramfs를 지원합니다.
- 타이머와 정확한 시간을 위한 RTC 컨트롤러.
- 커널 모듈 로딩을 지원합니다.
- ELF 형식의 실행 파일을 실행하는 기능.
에 프로젝트에 대해 좀 더 알아보고 싶습니다., 당신은 세부 사항을 확인할 수 있습니다 다음 링크에서. 프로젝트 코드에 관심이 있는 사람들은 그것이 다음과 같다는 것을 알아야 합니다. MIT 라이센스에 따라 배포됩니다.