Kerla жобасы Linux-үйлесімді ядроны Rust тілінде әзірлеуде

Kerla жобасы Rust тілінде жазылған операциялық жүйе ядросын жасауда. Жаңа ядро ​​​​бастапқыда ABI деңгейінде Linux ядросымен үйлесімділікті қамтамасыз етуге бағытталған, бұл Linux үшін құрастырылған өзгертілмеген орындалатын файлдарды Kerla негізіндегі ортада іске қосуға мүмкіндік береді. Код Apache 2.0 және MIT лицензиялары бойынша таратылады. Жобаны Си тілінде жазылған Resea микроядролық операциялық жүйесін жасаумен танымал жапондық әзірлеуші ​​Сеия Нута жасауда.

Қазіргі даму кезеңінде Kerla тек x86_64 жүйелерінде жұмыс істей алады және жазу, stat, mmap, құбыр және сұрау сияқты негізгі жүйелік қоңырауларды жүзеге асырады, сигналдарды, аты жоқ құбырларды және контекстік қосқыштарды қолдайды. Басқару процестері үшін fork, wait4 және execve сияқты қоңыраулар беріледі. tty және псевдотерминалдар (pty) үшін қолдау бар. Қазіргі уақытта қолдау көрсетілетін файлдық жүйелер - initramfs (түбірлік файлдық жүйені орнату үшін пайдаланылады), tmpfs және devfs. TCP және UDP розеткаларына қолдау көрсететін желілік стек smoltcp кітапханасы негізінде жүзеге асырылады.

Әзірлеуші ​​SSH арқылы қосылуға болатын virtio-net драйвері бар QEMU немесе Firecracker виртуалды машинасында жұмыс істейтін жүктеу ортасын дайындады. musl жүйелік кітапхана ретінде пайдаланылады, ал BusyBox пайдаланушы утилиталары ретінде пайдаланылады.

Kerla жобасы Linux-үйлесімді ядроны Rust тілінде әзірлеуде

Docker негізіндегі құрастыру жүйесі дайындалды, ол Kerla ядросы арқылы жеке жүктеу инитрафтарын жасауға мүмкіндік береді. Бөлек, балыққа ұқсас nsh бағдарламалық құралының қабығы және Wayland протоколына негізделген Kazari GUI стегі әзірленуде.

Kerla жобасы Linux-үйлесімді ядроны Rust тілінде әзірлеуде

Жобада Rust тілін пайдалану қауіпсіз бағдарламалау әдістерін қолдану арқылы кодтағы қателер санын азайтуға және жадпен жұмыс істеу кезінде проблемаларды анықтау тиімділігін арттыруға мүмкіндік береді. Rust компиляция уақытында анықтамалық тексеру, нысанды иелену және нысанның қызмет ету мерзімін бақылау (аумақтары) арқылы және орындалу уақытында жадқа кірудің дұрыстығын бағалау арқылы жад қауіпсіздігін қамтамасыз етеді. Сонымен қатар, Rust бүтін сандардың толып кетуінен қорғауды қамтамасыз етеді, айнымалы мәндерді пайдалану алдында инициализациялауды талап етеді, әдепкі бойынша өзгермейтін сілтемелер мен айнымалылар тұжырымдамасын бекітеді, логикалық қателерді азайту үшін күшті статикалық теруді ұсынады және кіріс мәндерін өңдеуді жеңілдетеді үлгі сәйкестігінің арқасында. .

ОЖ ядросы сияқты төмен деңгейлі құрамдастарды әзірлеу үшін Rust өңделмеген көрсеткіштерге, құрылымды бумаға, ассемблердің кірістірілген кірістірулеріне және ассемблер файлдарын ендіруге қолдау көрсетеді. Стандартты кітапханаға қосылмай жұмыс істеу үшін жолдармен, векторлармен және бит жалаушаларымен операцияларды орындауға арналған бөлек жәшік бумалары бар. Тағы бір артықшылығы - код сапасын бағалауға арналған кірістірілген құралдар (линтер, тот-анализатор) және тек нақты аппараттық құралда ғана емес, сонымен қатар QEMU-де де орындалатын бірлік сынақтарын жасау.

Ақпарат көзі: opennet.ru

пікір қалдыру