Kerla նախագիծը մշակում է Linux-ի հետ համատեղելի միջուկ Rust լեզվով

Kerla նախագիծը մշակում է Rust լեզվով գրված օպերացիոն համակարգի միջուկ: Նոր միջուկն ի սկզբանե կենտրոնացած է Linux միջուկի հետ համատեղելիության ապահովման վրա ABI մակարդակով, ինչը թույլ կտա Linux-ի համար կազմված չփոփոխված գործարկվող ֆայլերը գործարկել Kerla-ի վրա հիմնված միջավայրում: Կոդը տարածվում է Apache 2.0 և MIT լիցենզիաների ներքո: Նախագիծը մշակում է ճապոնացի ծրագրավորող Սեյա Նուտան, որը հայտնի է Resea միկրոմիջուկային օպերացիոն համակարգի ստեղծմամբ՝ գրված C լեզվով:

Իր զարգացման ներկա փուլում Kerla-ն կարող է աշխատել միայն x86_64 համակարգերի վրա և իրականացնում է հիմնական համակարգի զանգեր, ինչպիսիք են գրել, վիճակագրություն, mmap, խողովակ և հարցում, աջակցում է ազդանշաններին, անանուն խողովակներին և համատեքստային անջատիչներին: Գործընթացները վերահսկելու համար տրամադրվում են այնպիսի զանգեր, ինչպիսիք են fork, wait4 և execve: Աջակցություն կա tty և կեղծ տերմինալների համար (pty): Ներկայումս աջակցվող ֆայլային համակարգերն են initramfs (օգտագործվում է արմատային ֆայլային համակարգը տեղադրելու համար), tmpfs և devfs: Տրվում է TCP և UDP վարդակների աջակցությամբ ցանցային փաթեթ, որն իրականացվում է smoltcp գրադարանի հիման վրա:

Մշակողը պատրաստել է boot միջավայր, որն աշխատում է QEMU-ում կամ Firecracker վիրտուալ մեքենայում virtio-net դրայվերով, որին արդեն կարող եք միանալ SSH-ի միջոցով։ musl-ն օգտագործվում է որպես համակարգի գրադարան, իսկ BusyBox-ը՝ որպես օգտագործողի կոմունալ ծառայություններ:

Kerla նախագիծը մշակում է Linux-ի հետ համատեղելի միջուկ Rust լեզվով

Պատրաստվել է Docker-ի վրա հիմնված build համակարգ, որը թույլ է տալիս ստեղծել ձեր սեփական boot initramfs-ը Kerla միջուկով: Առանձին-առանձին մշակվում են nsh ծրագրաշարը, որը նման է fish-ին և Kazari GUI ստեկը, որը հիմնված է Wayland արձանագրության վրա:

Kerla նախագիծը մշակում է Linux-ի հետ համատեղելի միջուկ Rust լեզվով

Նախագծում Rust լեզվի օգտագործումը թույլ է տալիս նվազեցնել կոդի սխալների քանակը՝ օգտագործելով անվտանգ ծրագրավորման տեխնիկա և բարձրացնելով հիշողության հետ աշխատելիս խնդիրների բացահայտման արդյունավետությունը: Rust-ն ամրացնում է հիշողության անվտանգությունը կոմպիլյացիայի ժամանակ՝ հղումների ստուգման, օբյեկտների սեփականության և օբյեկտի ողջ կյանքի հետագծման (շրջանակների) և գործարկման ժամանակ հիշողության հասանելիության ճշգրտության գնահատման միջոցով: Բացի այդ, Rust-ն ապահովում է պաշտպանություն ամբողջ թվերի արտահոսքից, պահանջում է փոփոխական արժեքների սկզբնավորումից առաջ օգտագործելը, լռելյայնորեն պարտադրում է անփոփոխ հղումների և փոփոխականների հայեցակարգը, առաջարկում է ուժեղ ստատիկ մուտքագրում՝ տրամաբանական սխալները նվազագույնի հասցնելու համար և հեշտացնում է մուտքային արժեքների կառավարումը։ օրինակների համապատասխանության շնորհիվ..

Ցածր մակարդակի բաղադրիչների մշակման համար, ինչպիսին է ՕՀ-ի միջուկը, Rust-ը ապահովում է հում ցուցիչների, կառուցվածքի փաթեթավորման, անսամբլերի ներդիրների ներդիրների և մոնտաժող ֆայլերի ներդրման աջակցություն: Առանց ստանդարտ գրադարանի հետ կապվելու աշխատելու համար կան առանձին տուփեր՝ տողերով, վեկտորներով և բիթային դրոշներով գործողություններ կատարելու համար: Մեկ այլ առավելություն է կոդի որակը գնահատելու ներկառուցված գործիքները (linter, rust-analyzer) և միավորի թեստեր ստեղծելու համար, որոնք կարող են գործարկվել ոչ միայն իրական ապարատային, այլ նաև QEMU-ում:

Source: opennet.ru

Добавить комментарий