Ua wehe ʻo Microsoft i ka CHERIoT, kahi ʻōnaehana Lako e hoʻomaikaʻi i ka palekana C Code

Ua ʻike ʻo Microsoft i nā hanana e pili ana i ka CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things) papahana, i manaʻo ʻia e pale i nā pilikia palekana i ka code i loaʻa ma C a me C++. Hāʻawi ʻo CHERIoT i kahi hopena e hiki ai iā ʻoe ke pale i nā codebase C/C++ me ka ʻole o ka pono e hana hou iā lākou. Hoʻokō ʻia ka pale ma o ka hoʻohana ʻana i kahi compiler i hoʻololi ʻia e hoʻohana ana i kahi hoʻonohonoho kūikawā o nā ʻōlelo aʻoaʻo kaʻina hana (ISA), i hāʻawi ʻia e ka kaʻina hana a ma ka pae ʻenehana nānā ʻana i ka hoʻomanaʻo ʻana, nānā i ka pololei o ka hana me nā kuhikuhi a me ka hōʻoia ʻana i ka kaʻawale ʻana o nā poloka code.

Ua hana ʻia ka pāhana me ka maka i ka ʻike ʻana o ke ʻano haʻahaʻa haʻahaʻa o ka ʻōlelo C i kumu o nā hewa i ka wā e hana ai me ka hoʻomanaʻo, e alakaʻi ana i nā pilikia e like me ke kahe ʻana o ka buffer, ke komo ʻana i ka hoʻomanaʻo i hoʻokuʻu ʻia, nā kuhikuhi kuhikuhi, a i ʻole nā ​​manuahi pālua. . Hōʻike ka hoʻomaʻamaʻa ʻana ʻo nā hui nui e like me Google a me Microsoft, ka mea i loaʻa i kahi kulekele loiloi hoʻololi koʻikoʻi a hoʻohana i nā ʻano hana hoʻomohala hou a me nā mea hana loiloi static, ʻaʻole hiki ke hōʻoia i ka nele o nā hewa i ka wā e hana ana me ka hoʻomanaʻo (no ka laʻana, ma kahi o 70% o nā nāwaliwali i Microsoft. a me Google ma muli o ka mālama ʻana i ka hoʻomanaʻo palekana).

Hiki ke hoʻoholo ʻia ka pilikia ma ka hoʻohana ʻana i nā ʻōlelo papahana e hōʻoiaʻiʻo i ka hana palekana me ka hoʻomanaʻo, a i ʻole nā ​​​​paʻa me nā loiloi hou, no ka laʻana, ma ka hoʻohana ʻana ma kahi o nā kuhikuhi maʻamau e like me MiraclePtr (raw_ptr), e hana ana i nā loiloi hou no ke komo ʻana i nā wahi hoʻomanaʻo manuahi. Akā, ʻoi aku ka maikaʻi o ia ʻano hana no ka code hou, a ʻo ka hana hou ʻana i nā papahana C/C ++ i kēia manawa he pilikia nui, ʻoiai inā ua hoʻolālā ʻia lākou e holo i loko o nā wahi i hoʻopaʻa ʻia i nā kumuwaiwai, e like me nā ʻōnaehana i hoʻopili ʻia a me nā polokalamu Internet of Things.

Hoʻolālā ʻia nā ʻāpana hāmeʻa CHERIoT ma ke ʻano he microcontroller e pili ana i ka hoʻolālā RISC-V, e hoʻokō ana i ka CHERI (Capability Hardware Extension to RISC-V) i pale ʻia, e hāʻawi ana i kahi hiʻohiʻona o ka hiki ke hoʻomanaʻo ʻia e pili ana i ka "hiki" (heluhelu a kākau kēlā me kēia. ʻae ʻia ka hana i ka hoʻomanaʻo). Ma muli o ke aʻo ʻana i hoʻonohonoho ʻia (ISA) i hāʻawi ʻia ma CHERIoT, ua kūkulu ʻia kahi ʻōnaehana polokalamu e hōʻoiaʻiʻo i ka palekana o ka hana ʻana me ka hoʻomanaʻo ma ke kiʻekiʻe o kēlā me kēia mea, hāʻawi i ka pale mai ke komo ʻana i ka hoʻomanaʻo i hoʻokuʻu ʻia, a hoʻokō i kahi ʻōnaehana kaʻawale hoʻomanaʻo māmā. . Hōʻike pololei ʻia ke kumu hoʻohālike o ka polokalamu palekana i ka ʻōlelo C/C++, kahi e hiki ai ke hoʻohana ʻia no ka pale ʻana i nā noi i loaʻa (pono ka hoʻopili hou ʻana a me ka holo ʻana ma luna o nā lako e kākoʻo ana iā ISA CHERIoT).

ʻO ka hopena i manaʻo ʻia e ʻae iā ʻoe e ālai i nā hewa e hele ai kahi mea ma waho o nā palena o ka hoʻomanaʻo, ʻaʻole ʻae i ka hoʻololi ʻana i ka pointer (pono e hana ʻia nā kuhikuhi āpau mai nā kuhikuhi i loaʻa), a nānā i ke komo ʻana i ka hoʻomanaʻo ma hope o ka hoʻokuʻu ʻana (kekahi komo i ka hoʻomanaʻo me ka hoʻohana hewa ʻole. mea kuhikuhi a i ʻole kahi kuhikuhi e kuhikuhi ana i kahi mea i hoʻokuʻu ʻia i ka hopena o ka hoʻolei ʻia ʻana). No ka laʻana, ʻo ka hoʻohana ʻana iā CHERIoT hiki iā ʻoe ke hoʻokō i ka nānā ʻana i nā palena ʻokoʻa, ka hoʻomanaʻo ʻana i ke ola holoʻokoʻa, a me ka hoʻokō pono ʻana o ka pointer i nā ʻāpana e mālama i ka ʻikepili hilinaʻi ʻole me ka ʻole e koi i nā hoʻololi code.

Aia ka papahana i kahi kikoʻī o ka hoʻolālā hoʻonohonoho hoʻonohonoho CHERIoT lōʻihi, kahi hoʻokō kuhikuhi o kahi 32-bit RISC-V CPU me ke kākoʻo no ka CHERIoT ISA, a me kahi mea hana LLVM i hoʻololi ʻia. Hoʻokaʻawale ʻia nā kiʻi prototype CPU a me nā wehewehe ʻana i nā poloka ma Verilog ma lalo o ka laikini Apache 2.0. Ua hoʻohana ʻia ka Ibex core mai ka papahana lowRISC i kumu no ka CPU. Ua wehewehe ʻia ke kumu hoʻohālike code CHERIoT ISA ma ka ʻōlelo Sail a ua laikini ʻia ma lalo o ka laikini BSD.

Hoʻohui ʻia, ua manaʻo ʻia kahi prototype o ka ʻōnaehana hana manawa maoli ʻo CHERIoT RTOS, e hāʻawi ana i ka hiki ke hoʻokaʻawale i nā keʻena a hiki i nā ʻōnaehana i hoʻopili ʻia me 256 MB o RAM. Ua kākau ʻia ka code CHERIoT RTOS ma C++ a māhele ʻia ma lalo o ka laikini MIT. ʻO nā ʻāpana kumu o ka OS, e like me ka bootloader, scheduler a me ka ʻōnaehana hoʻomanaʻo hoʻomanaʻo, ua hoʻolālā ʻia ma ke ʻano o nā compartments.

ʻO kahi keʻena ma CHERIoT RTOS kahi hui kaʻawale o nā code a me nā ʻano hoʻololi honua e like me ka waihona like, akā ʻaʻole like me ka hope, hiki iā ia ke hoʻololi i kona mokuʻāina (mutable) a holo i kahi pōʻaiapili palekana. ʻAʻohe code mai waho e hiki ke hoʻololi i ka mana i ke code i loko o kahi keʻena a komo i nā mea, koe wale nō ma ke komo ʻana i nā wahi kikoʻī i wehewehe ʻia a me ka hoʻohana ʻana i nā kuhikuhi i nā mea i hāʻawi ʻia i ke kāhea ʻana i kahi ʻāpana ʻē aʻe. Hoʻopaʻa ʻia ka pono a me ka hūnā no nā code a me nā mea honua i loko o kahi keʻena.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka