Kufunga oc inferno kwenye madirisha. Inferno (mfumo wa uendeshaji). Kuweka vigezo vya mazingira


utangulizi wa Inferno OS

Ni muda mrefu umepita tangu tulipokuambia kuhusu mifumo mipya ya uendeshaji. Lakini ulimwengu haujasimama, na soko la Mfumo wa Uendeshaji sio mdogo kwa Linux, Windows na *BSD, ambayo habari - katika CP na katika machapisho mengine ya karatasi na elektroniki - inaonekana kwa ukawaida unaowezekana.
Na kisha sababu nzuri tu ilionekana: ujumbe uliangaza kwenye milisho ya habari kuhusu kutolewa (na kupatikana kwa upakuaji wa bure) wa toleo la 4 la OS na kuzimu (katika muktadha huu kawaida husema "infernal", lakini kwa upande wetu. itakuwa tautology :) jina Inferno . Lakini kwa vile tuna uhakika hivyo angalau nusu ya wasomaji wetu hawajawahi kusikia juu ya mfumo huu wa uendeshaji, na kwa hivyo hatujui kufurahiya habari kama hizi au la, tuliamua kutoa nyenzo nzima ya "urefu kamili" kwa Inferno, kulingana na nakala ya watengenezaji wa hii. mfumo. Kwa njia, angalia orodha ya waandishi mwishoni mwa kifungu, tuna hakika utashangaa sana;)

utangulizi

Mfumo wa uendeshaji wa Inferno ulitengenezwa na Kituo cha Utafiti wa Kompyuta cha Bell Labs, kitengo cha utafiti na maendeleo cha Lucent Technologies. Baadaye, maendeleo yake yaliendelea na mgawanyiko mwingine wa Lucent, na leo haki za kipekee za mfumo huu ni za kampuni ya programu ya Kiingereza Vita Nuova.
Kusudi kuu la mfumo ni kuunda mifumo ya kompyuta iliyosambazwa isiyo na vifaa na kuitumia kwenye vifaa vilivyopachikwa.
Inferno imekusudiwa kutumika katika anuwai mazingira ya mtandao, kwa mfano, simu za mkononi, PDA za mkono, mifumo ya televisheni ya cable na satelaiti, vituo vya gharama nafuu vya mtandao na, bila shaka, mifumo ya jadi ya kompyuta.
Inferno inaweza kutumika wapi kwa mafanikio? Katika mitandao ya televisheni ya cable, utangazaji wa satelaiti moja kwa moja, mtandao na mitandao mingine yoyote ya data (na huduma nyingi, bila shaka).
Tofauti na mifumo ya simu na vituo vyao vya kawaida na ishara, mitandao ya kompyuta zinatengenezwa katika ulimwengu wa vituo mbalimbali, vifaa vya mtandao na itifaki. Imeundwa vizuri tu, kiuchumi mfumo wa uendeshaji inaweza kuleta pamoja maudhui tofauti na watoa huduma kwenye majukwaa tofauti ya usafiri na uwasilishaji. Kama unavyoweza kudhani, Inferno ni mfumo wa uendeshaji kama huo;)
Faida za Inferno zinatokana na kubebeka na kubadilika kwake katika maeneo yafuatayo:
- Msaada wa processor: Intel, Sparc, MIPS, ARM, HP PA, PowerPC zinatumika kwa sasa, usaidizi wa vichakataji vingine unatayarishwa.
- Msaada kwa mazingira anuwai: Inferno hufanya kazi kama mfumo tofauti kwenye vituo vidogo, pia hutumika kama mchakato wa mtumiaji kwenye Windows NT, Windows 95, Unix (Irix, Solaris, FreeBSD, Linux, AIX, HP/UX) na Mpango wa 9. Katika visa hivi vyote, programu za Inferno zina kiolesura sawa.
- muundo uliosambazwa: mazingira yanayofanana yamewekwa kwenye terminal ya mtumiaji na kwenye seva, kila mmoja anaweza kuagiza rasilimali (kwa mfano, vifaa vya I/O vinavyopatikana au mitandao) ya nyingine. Shukrani kwa uwezo wa mawasiliano wa mfumo, maombi yanaweza kugawanywa kwa urahisi (hata kwa nguvu) kati ya mteja na seva.
- mahitaji ya chini ya vifaa: programu za kusimama pekee zinaendeshwa kwenye kompyuta yenye kumbukumbu ya MB 1 na hazihitaji kidhibiti kumbukumbu.
- uwezo wa maombi: Programu za Inferno zimeandikwa kwa lugha iliyochapwa Limbo, na uwakilishi wa mfumo wa jozi unaotolewa na mkusanyaji unafanana kwa mifumo yote.
- urekebishaji wa nguvu: maombi yanaweza, kulingana na maunzi au rasilimali nyingine zilizopo, kutumia tofauti moduli za programu kufanya kazi maalum. Kwa mfano, kicheza video kinaweza kutumia moduli tofauti za avkodare.
Muundo wa Inferno unatokana na muundo unaokubali aina mbalimbali za matumizi ya kutumika. Watoa huduma wengi wanapenda kutoa vyombo vya habari na huduma zingine: huduma ya simu, huduma ya www, cable TV, biashara, huduma mbalimbali za habari. Pia kuna teknolojia nyingi za mawasiliano: za kawaida modem za simu, ISDN, ATM, Intaneti, televisheni ya analogi ya duniani au ya kebo, modemu za kebo, video ya dijiti na televisheni inayoingiliana.
Programu zinazokidhi mahitaji ya sasa na ya baadaye ya Lucent ni pamoja na udhibiti wa swichi na kipanga njia. Pia tunaona kwamba mtandao wa ndani na seva za Bell Labs zinalindwa na ngome kulingana na Inferno.
Inferno ina ufanisi mkubwa wa rasilimali, ikiruhusu kuauni programu changamano kwenye maunzi ya leo. Hasa, mfumo utaruhusu watengenezaji kuunda maombi ya maombi, inayoendesha kwenye vifaa tofauti. Chukua, kwa mfano, katalogi ya ununuzi inayoingiliana: uwezo wa kufanya kazi katika hali ya maandishi kupitia modem ya analog, kuonyesha picha (inawezekana hata kwa sauti) za bidhaa kupitia ISDN na kuonyesha klipu za video kupitia chaneli ya dijitali.
Kwa kweli, hakuna mtu anayekulazimisha kama msanidi programu kutumia huduma na kazi zote za Inferno, lakini unapaswa kukumbuka - usanifu wa mfumo umepunguzwa tu na mahitaji na ndoto za mteja zinazopatikana. njia za mtandao na teknolojia za seva, lakini sio programu.

Miingiliano ya Inferno

Jukumu Mifumo ya Inferno ni kuunda kadhaa violesura vya kawaida kwa maombi yako:
1. Programu hutumia nyenzo mbalimbali za mfumo wa ndani, kama vile mashine pepe, ambayo huendesha programu na moduli za maktaba kutekeleza vitendo mbalimbali, kutoka kwa rahisi kama vile upotoshaji wa kamba hadi ngumu zaidi (kufanya kazi na maandishi, picha, maktaba za kiwango cha juu au video. )
2. Programu zipo katika mazingira ya nje ambayo yana rasilimali kama vile faili zilizo na data zinazoweza kubadilishwa na kutajwa vitu ambavyo vinaweza kubadilishwa kama faili, lakini kwa umakini zaidi. Vifaa (kidhibiti cha mbali, avkodare ya MPEG au kiolesura cha mtandao) huwasilishwa kwa programu kama faili.
3. Kuna itifaki za kawaida za mawasiliano za mwingiliano wa programu ndani ya seva pangishi moja na kati ya wapangishi tofauti wanaoendesha Inferno. Kwa njia hii, programu za Inferno zinaweza kushirikiana vyema.
Wakati huo huo, Inferno hutumia miingiliano iliyotolewa na mazingira yaliyopo, kama vile maunzi au itifaki za mfumo wa uendeshaji na simu za mfumo.
Huduma ya kawaida inayotegemea Inferno inajumuisha vituo vingi vya bei nafuu vinavyotumia Inferno kama OS asilia na idadi ndogo ya mashine kubwa (seva) zinazoendesha Inferno kama mfumo wa wageni. Kwenye mashine kama hizo za seva, Inferno inaweza kutoa ufikiaji wa hifadhidata, mfumo wa manunuzi au rasilimali nyingine zinazotolewa na mfumo wa uendeshaji asilia. Programu za Inferno zinaweza kuendeshwa kwenye mfumo wa mteja, au seva, au zote mbili.

mazingira ya nje ya programu za Inferno

Madhumuni ya programu nyingi za Inferno ni kutoa habari au media kwa mtumiaji. Programu kama hizo lazima zigundue eneo la rasilimali kwenye mtandao na kuunda uwakilishi wa karibu wa data hii kwenye kifaa cha mtumiaji. Walakini, mtiririko wa habari nyingi sio wa njia moja: terminal ya mtumiaji (iwe kompyuta ya mtandao, TV, kompyuta ya kibinafsi au simu ya video) pia ni chanzo cha habari fulani na lazima itoe maelezo haya kwa programu. Inferno hufuata muundo mwingi wa Plan9 (mfumo wa uendeshaji unaohusiana pia uliotengenezwa na Bell Labs) kwa jinsi unavyowasilisha rasilimali kwa programu. Muundo huu unafuata kanuni tatu:
1. Rasilimali zote zimetajwa na zinapatikana kama faili kwenye mti wa mfumo wa kihierarkia wa faili;
2. Daraja tofauti za rasilimali zinazotolewa na huduma tofauti zinajumuishwa katika nafasi moja ya eneo iliyopewa jina;
3. Itifaki ya mawasiliano Styx hutumiwa kuunganisha ufikiaji wa rasilimali, za ndani au za mbali.
Kwa mazoezi, programu nyingi huona mkusanyiko wa faili zilizopangwa kwenye mti wa saraka. Faili zingine zina data ya kawaida, zingine ni rasilimali zinazotumika zaidi. Vifaa vinawakilishwa kama faili; viendeshi vya kifaa (kama vile modemu, avkodare ya MPEG, kiolesura cha mtandao, au skrini ya TV) vilivyoambatishwa kwenye mfumo vinawakilishwa kama saraka ndogo. Saraka hizi kwa kawaida huwa na faili mbili: data na ctl, ambazo kwa mtiririko huo hufafanua I/O na uendeshaji wa udhibiti wa kifaa. Huduma za mfumo zinapatikana pia kupitia faili zilizopewa jina. Kwa mfano, nameserver inaweza kupatikana kwa kutumia jina maalum, sema /net/dns; Baada ya kuandika jina la kikoa cha mwenyeji kwa faili hii, usomaji unaofuata hurejesha anwani ya IP inayolingana katika nukuu ya nambari.
Gundi inayoshikilia sehemu tofauti za nafasi ya majina pamoja ni itifaki ya Styx. Katika Inferno, viendeshi vyote vya kifaa na rasilimali nyingine za ndani zinalingana na toleo la utaratibu la Styx.
Kiini cha Inferno kina kinachojulikana kama "mount driver" ambacho hutafsiri utendakazi wa mfumo wa faili kuwa simu za utaratibu wa mbali za upitishaji kwenye mtandao. Katika mwisho mwingine wa muunganisho, seva inasoma ujumbe wa itifaki ya Styx na kupiga simu zinazofaa kwa kutumia rasilimali za ndani. Kwa njia hii, inakuwa inawezekana kuagiza sehemu ya nafasi iliyotajwa (yaani, rasilimali zilizopo) kutoka kwa mashine nyingine.
Ukipanua mfano ulio hapo juu, kuna uwezekano kwamba kifaa cha mwisho kinaweza kuhifadhi msimbo wa seva peke yake. Badala yake, kivinjari huingiza /net/dns rasilimali moja kwa moja kwenye nafasi yake ya jina kutoka kwa mashine ya seva kwenye mtandao.
Itifaki ya Styx ni safu ya juu na huru itifaki ya usafiri; inaendesha TCP, PPP, ATM au itifaki mbalimbali za modemu.

mazingira ya ndani ya programu za Inferno

Programu za Inferno zimeandikwa katika lugha mpya ya Limbo, ambayo iliundwa mahsusi kwa ajili ya kufanya kazi huko Inferno. Sintaksia yake imechochewa na C na Pascal, na inaauni aina za data za kawaida zinazojulikana kwa lugha hizi na aina kadhaa za data za kiwango cha juu, kama vile orodha, nakala, mifuatano, safu zinazobadilika na aina rahisi za data dhahania.
Kwa kuongezea, Limbo inasaidia miundo kadhaa changamano iliyopachikwa kwenye mashine pepe ya Inferno. Hasa, utaratibu wa mawasiliano, njia, ambayo hutumiwa kuwasiliana kazi mbalimbali Limbo kwenye mashine yako ya karibu au kwenye mtandao. Idhaa husambaza data kwa njia inayojitegemea kwa mashine, kwa hivyo miundo tata data, ikiwa ni pamoja na chaneli zenyewe, zinaweza kupitishwa kati ya kazi za Limbo au kuambatishwa kwa faili za nafasi ya majina kwa mwingiliano wa mashine hadi mashine katika kiwango cha lugha.
Kufanya kazi nyingi kunasaidiwa moja kwa moja na lugha ya Limbo: nyuzi zinazojitegemea zinaweza kuibuliwa na usemi wa alt hutumiwa kuratibu muunganisho wa kituo kati ya kazi (yaani, alt hutumiwa kuchagua mojawapo ya vituo kadhaa vilivyo tayari kuwasiliana). Kwa kupachika vituo na kazi katika lugha na mashine yake pepe, Inferno hutoa njia rahisi kutumia na salama ya kuingiliana.
Programu za Limbo zinajumuisha moduli, ambazo ni vyombo vilivyofungashwa vilivyo na kiolesura kilichofafanuliwa katika mfumo wa kazi/mbinu, aina za data dhahania, na vidhibiti vilivyofafanuliwa ndani ya moduli na vinavyoweza kufikiwa nje. Moduli zinapatikana kwa nguvu, yaani, ikiwa moduli moja inataka kutumia nyingine, basi mzigo unaitwa kwa nguvu na jina la moduli inayoitwa na pointer inarudishwa. moduli mpya. Wakati moduli mpya haitumiki tena, mazingira na msimbo wake utapakuliwa.
Kubadilika kwa muundo wa msimu ni kwa sababu ya saizi ndogo ya programu ya kawaida ya Inferno. Kwa mfano, katika katalogi ya ununuzi iliyoelezwa hapo juu, moduli kuu ya programu hukagua kwa nguvu upatikanaji wa rasilimali ya video, na ikiwa rasilimali haipatikani, avkodare ya video haijapakiwa.
Limbo huangalia kikamilifu usahihi wa aina za data wakati wa utungaji na utekelezaji, kwa mfano, viashiria (kwa njia, kali zaidi kuliko C) huangaliwa kabla ya matumizi. Ulinganifu wa aina ya moduli iliyopakiwa kwa nguvu huangaliwa wakati wa upakiaji. Programu za Limbo huendesha kwa utulivu kwenye mashine bila ulinzi wa kumbukumbu ya maunzi.
Zaidi ya hayo, vitu vyote vya data ya mfumo na vitu vya programu vinadhibitiwa na "mkusanya takataka" aliye na waya ngumu kwenye Limbo. Vitu vyote kama hivyo hufuatiliwa na mashine ya kawaida na kupakuliwa baada ya matumizi. Kwa mfano, ikiwa programu itaunda dirisha la michoro na kumaliza kazi yake, dirisha linafungwa kiotomatiki baada ya marejeleo yote ya kitu hicho kuondolewa.
Programu za Limbo zinajumuishwa kuwa bytecode ambayo ina maagizo ya mashine ya Dis virtual. Usanifu wa sehemu ya hesabu ya Dis ni mashine rahisi ya anwani 3, inayotolewa na shughuli kadhaa maalum za kufanya kazi na aina fulani za data za kiwango cha juu, kama vile safu na kamba. Ukusanyaji wa takataka unafanywa na ehjdytv hapa chini, na upangaji wa kazi vile vile umefichwa. Wakati msimbo wa byte unapopakiwa kwenye kumbukumbu, hupanuliwa kuwa umbizo bora zaidi kwa ajili ya utekelezaji. Kikusanyaji kilichopo hubadilisha mtiririko wa maagizo wa Dis kwenye nzi kuwa maagizo ya mashine vifaa. Ugeuzaji huu ni mzuri kwa sababu maagizo ya Dis yanalingana na seti za maagizo ya usanifu wa kisasa vizuri sana. Nambari inayotokana huendesha kwa kasi inayolingana na programu za C zilizokusanywa.
Chini ya Dis ni kernel ya Inferno, ambayo ina mkalimani na mkusanyaji wa wakati halisi, pamoja na kidhibiti kumbukumbu, kipanga ratiba, viendesha kifaa, rafu za itifaki, na kadhalika. Kernel pia ina uti wa mgongo wa mfumo wa faili (kidhibiti cha jina na msimbo ambao hutafsiri utendakazi wa mfumo wa faili kuwa simu za utaratibu wa mbali kupitia njia zilizopo za mawasiliano).
Hatimaye, mashine pepe ya Inferno hutekeleza moduli kadhaa za kawaida ndani. Moduli ya Sys, ambayo hutoa simu za mfumo na maktaba ndogo ya utaratibu (kuunda miunganisho ya mtandao, shughuli za kamba). Moduli ya Chora ni maktaba ya msingi ya michoro inayofanya kazi na picha mbaya, fonti na madirisha. Moduli ya Prefab imeundwa kwenye Chora ili kuauni miundo iliyo na picha na maandishi ndani ya dirisha. Vitu hivi vinaweza kuzungushwa, kuchaguliwa, kurekebishwa kwa kutumia njia za Prefab. Moduli ya Tk ni utekelezaji mpya wa maktaba ya michoro ya Tk na kiolesura cha Limbo. Moduli ya Hisabati ina taratibu za kupanga shughuli za hisabati.

Mazingira ya Inferno

Inferno huunda mazingira ya kawaida kwa programu. Programu sawa inaweza kuzinduliwa ndani aina mbalimbali mazingira, ikijumuisha yale yaliyosambazwa, na kuona rasilimali zinazofanana. Kulingana na mazingira ambayo Inferno yenyewe inaendesha, kuna matoleo kadhaa ya kernel, mkalimani wa Dis/Limbo, na seti za viendesha kifaa.
Inferno inapofanya kazi kama mfumo mmoja wa uendeshaji, kernel inajumuisha sehemu zote muhimu za kiwango cha chini (vishikilizi vya kukatiza, michoro na viendeshaji vingine) vinavyohitajika kutekeleza uondoaji wa kiwango cha juu wa programu.
Kama mfumo wa wageni, kama vile kwenye Unix au Windows, Inferno huendesha kama mkusanyiko wa michakato ya kawaida. Badala ya kutumia uwezo wake wa usimamizi wa maunzi, Inferno hutumia rasilimali zinazotolewa na mfumo wa uendeshaji unaoendesha. Kwa mfano, chini ya Unix, maktaba ya michoro inaweza kutekelezwa kwa kutumia XWindow, na usaidizi wa mtandao kwa kutumia maktaba ya soketi. Kwenye Windows, Inferno hutumia michoro asili na simu za Winsock.
Inferno imeandikwa juu lugha sanifu C na sehemu zake nyingi hazitegemei mifumo ya uendeshaji inayoweza kukaribisha Inferno.

usalama katika Inferno

Inferno huhakikisha mawasiliano salama, matumizi ya rasilimali na uadilifu wa mfumo.
Kupitia kila idhaa ya nje, data hupitishwa kwa njia iliyo wazi pamoja na muhtasari wa dijitali ili kuzuia uharibifu, au kusimbwa kwa njia fiche ili kuzuia uharibifu na udukuzi wa data. Vifunguo hubadilishwa kupitia utaratibu wa kawaida wa ufunguo wa umma. Baada ya kubadilishana ufunguo, usimbaji fiche na sahihi za dijitali hutumia utaratibu wa kawaida wa ulinganifu.
Inferno hutoa ulinzi dhidi ya programu zilizoandikwa vibaya (zinazo na hitilafu au "michezo" hasidi na huwezesha mawasiliano salama kati ya watoa huduma "waliotiliwa shaka" na wateja. Rasilimali zinazohitajika na programu hutolewa pekee, tu katika nafasi ya majina ya programu, na mifumo ya ulinzi ya kawaida inapatikana pia. Hii inatumika kwa data, njia za mawasiliano na faili halisi zinazoweza kutekelezwa na maktaba. Rasilimali za mfumo muhimu zinapatikana tu kupitia simu kwa moduli inayowapa; haswa, nyongeza ya faili na huduma mpya kwenye nafasi iliyotajwa inadhibitiwa na inawezekana tu baada ya uthibitishaji. Kwa mfano, ikiwa rasilimali ya mtandao itaondolewa kutoka kwa nafasi iliyopewa jina la programu, inakuwa vigumu kwake kuanzisha muunganisho wa mtandao.
Moduli za vitu zinaweza kutiwa saini ili kuthibitisha uhalisi na uhalali wao, na sahihi hizi zinaweza kuthibitishwa na mfumo wakati moduli kama hizo zinafikiwa.
Ingawa Inferno hutoa idadi kubwa ya mifumo ya uthibitishaji na usalama, iliyofafanuliwa hapa chini, programu chache tu zinahitaji utekelezaji wao, au angalau zinahitaji aina fulani ya programu kuzitumia.
Mara nyingi zaidi, ufikiaji wa rasilimali chache kupitia chaneli salama hupangwa mapema na mfumo ambao programu inaendesha. Kwa mfano, mfumo wa mteja unapotumia mfumo wa seva na ukaguzi wa ufikiaji na usimbaji fiche unapatikana, rasilimali za seva zitatolewa kama sehemu ya nafasi ya jina la programu. Kituo cha mawasiliano, ambayo hutoa itifaki ya Styx, inaweza kuwekwa kwa uthibitishaji au usimbaji fiche. Kwa njia hii, matumizi ya rasilimali zote zinalindwa moja kwa moja.

mifumo ya usalama

Uthibitishaji na sahihi dijitali huwakilishwa kwa usimbaji fiche kwa kutumia vitufe vya umma. Funguo za umma zimeidhinishwa na kutiwa saini na funguo za kibinafsi za shirika lililotoa cheti.
Inferno hutumia usimbaji fiche kwa:
- uthibitishaji wa mara kwa mara wa vyama;
- uthibitishaji wa ujumbe kati ya vyama;
- usimbuaji wa ujumbe.
Kanuni za usimbaji fiche zinazotolewa na Inferno ni pamoja na SHA, MD4, na heshi za MD5. sahihi za umma na uthibitishaji wa sahihi za Elgamal, usimbaji fiche wa RC4 na DES. Ubadilishanaji wa ufunguo wa kibinafsi wa umma unategemea mpango wa Diffie Hellman. Saini za ufunguo wa umma zinaweza kuwa na urefu wa hadi biti 4096, na chaguo-msingi la biti 512.
Hakuna shirika la jumla la kitaifa au kimataifa la kuhifadhi au kutoa umma au funguo za kibinafsi usimbaji fiche. Kwa hivyo, Inferno inajumuisha zana ya kutumia au kuunda shirika linaloaminika, lakini haitoi shirika kama hilo lenyewe kwa sababu ni kipengele cha usimamizi. Kwa hivyo, shirika linalotumia Inferno (au mfumo mwingine wa usalama na ubadilishanaji muhimu) lazima liunde mfumo mwenyewe kwa mahitaji yako na, haswa, kuamua ni nani wa kukabidhi cheti. Walakini, muundo wa Inferno ni rahisi na wa kawaida wa kutosha kushughulikia itifaki zinazotumiwa katika mazoezi.
Mamlaka ya cheti inayotia sahihi funguo za umma za watumiaji huamua ukubwa wa ufunguo na kanuni. Zana zinazotolewa na Inferno hutumia sahihi hizi kwa uthibitishaji. Kwa kusaini na uthibitishaji, programu za Limbo hutolewa na maktaba ya miingiliano.
Washiriki wanapobadilishana data, hutumia itifaki ya Kituo hadi Kituo ili kutambua wahusika na kutengeneza ufunguo wa siri. Itifaki ya Kituo hadi Kituo hutumia algoriti ya Diffie-Hellman kuunda ufunguo huo wa siri ulioshirikiwa. Itifaki inalindwa dhidi ya mashambulizi ya kucheza tena kwa kuchagua maadili mapya kwa kila mwingiliano. Itifaki ni salama dhidi ya mashambulizi ya mtu katikati kwa kubadilishana vyeti kati ya wahusika na kisha kusaini sehemu muhimu za itifaki. Ili kujifanya kuwa mhusika mwingine, mshambuliaji anahitaji kuiga sahihi ya chama hicho.

usalama wa mstari

Mawasiliano ya mtandao yanaweza kulindwa dhidi ya kurekebishwa au kubadilishwa na kusikilizwa. Ili kulinda dhidi ya urekebishaji, Inferno inaweza kutumia MD5 au SHA hash (inayoitwa digest) -

hash(siri, ujumbe, ujumbe wa ujumbe)

kwa kila ujumbe. Messageid ni nambari ya 32 inayoanzia 0 na kuongezeka kwa 1 kwa kila ujumbe unaofuata. Hiyo ni, ujumbe hauwezi kubadilishwa au kufutwa, utaratibu wa ujumbe katika mkondo hauwezi kubadilishwa, tu ikiwa ufunguo unapatikana au algorithm ya hashi imepasuka.
Ili kulinda dhidi ya watu wanaosikiliza, Inferno hutumia usimbaji fiche wa kipindi chote kwa kutumia RC4 au DES (DESCBC, DESECB).
Inferno hutumia umbizo la usimbaji sawa na Tabaka la Soketi Salama la Netscape. Usimbaji wa mtiririko wa ujumbe mwingi unawezekana ili kutoa viwango tofauti vya ulinzi.

nambari za nasibu

Nguvu ya algorithm ya cryptographic inategemea, hasa, juu nambari za nasibu, inayotumiwa kuteua vitufe, vigezo vya Diffie Hellman, vekta za uanzishaji, n.k. Inferno inafanikisha hili katika hatua mbili: mtiririko wa polepole (bps 100 hadi 200) unapatikana kwa kuchukua sampuli ya biti za chini za kaunta inayoendesha bila malipo kwa kila mzunguko wa saa. masaa. Saa lazima isioanishwe, au ilinganishwe vibaya na kihesabu. Jenereta hii ya nambari nasibu basi hutumika kubadilisha hali jenereta ya haraka nambari za pseudorandom. Jenereta zote mbili zimejaribiwa kwenye aina mbalimbali za usanifu kwa kutumia uunganisho wa kibinafsi, hatua za nasibu, na majaribio ya mara kwa mara.

Maelezo ya Inferno

Andika ukaguzi juu ya kifungu "Inferno (mfumo wa uendeshaji)"

Vidokezo

Angalia pia

Viungo

  • (Kiingereza)
  • na vyanzo rasmi (Kiingereza)
  • (Kirusi)
  • (Kirusi)
  • (Kirusi)
  • (Kirusi)
  • - nakala iliyo na orodha ya viungo kwa rasilimali zingine kwenye Inferno (Kirusi)
  • (Kiingereza)
  • (Kirusi)
  • (Kirusi)

Sehemu ya sifa ya Inferno (mfumo wa uendeshaji)

"Hii ni Metampic," alisema Sonya, ambaye alisoma vizuri kila wakati na kukumbuka kila kitu. - Wamisri waliamini kuwa roho zetu ziko ndani ya wanyama na zingerudi kwa wanyama.
"Hapana, unajua, siamini, kwamba tulikuwa wanyama," Natasha alisema kwa kunong'ona sawa, ingawa muziki ulikuwa umeisha, "lakini najua kwa hakika kwamba tulikuwa malaika hapa na pale mahali fulani, na ndiyo sababu. tunakumbuka kila kitu. ”…
-Naweza kujiunga nawe? - alisema Dimmler, ambaye alikaribia kimya kimya na akaketi karibu nao.
- Ikiwa tulikuwa malaika, basi kwa nini tulianguka chini? - alisema Nikolai. - Hapana, hii haiwezi kuwa!
"Si chini, ni nani aliyekuambia kuwa chini?... Kwa nini najua nilivyokuwa hapo awali," Natasha alipinga kwa imani. - Baada ya yote, roho haiwezi kufa ... kwa hivyo, ikiwa ninaishi milele, ndivyo nilivyoishi hapo awali, niliishi milele.
“Ndiyo, lakini ni vigumu kwetu kuwazia umilele,” akasema Dimmler, ambaye aliwaendea vijana hao kwa tabasamu la upole na la dharau, lakini sasa alizungumza kwa utulivu na kwa uzito kama walivyofanya.
- Kwa nini ni vigumu kufikiria umilele? - Natasha alisema. - Leo itakuwa, kesho itakuwa, itakuwa daima na jana ilikuwa na jana ...
- Natasha! sasa ni zamu yako. "Niimbie kitu," sauti ya mwanadada ilisikika. - Kwamba uliketi kama wapangaji.
- Mama! "Sitaki kufanya hivyo," Natasha alisema, lakini wakati huo huo alisimama.
Wote, hata Dimmler wa makamo, hakutaka kukatiza mazungumzo na kuondoka kwenye kona ya sofa, lakini Natasha akasimama, na Nikolai akaketi kwenye clavichord. Kama kawaida, simama katikati ya ukumbi na kuchagua eneo kuu Kwa resonance, Natasha alianza kuimba wimbo wa favorite wa mama yake.
Alisema kwamba hakutaka kuimba, lakini hakuwa ameimba kwa muda mrefu kabla, na kwa muda mrefu tangu, jinsi alivyoimba jioni hiyo. Hesabu Ilya Andreich, kutoka ofisi ambayo alikuwa akiongea na Mitinka, alimsikia akiimba, na kama mwanafunzi, kwa haraka kwenda kucheza, akimaliza somo, alichanganyikiwa kwa maneno yake, akitoa maagizo kwa meneja na mwishowe akanyamaza. , na Mitinka, pia akisikiliza, kimya na tabasamu, alisimama mbele ya kuhesabu. Nikolai hakuondoa macho yake kwa dada yake, akavuta pumzi naye. Sonya, akisikiliza, alifikiria juu ya tofauti kubwa kati yake na rafiki yake na jinsi isingewezekana kwake kuwa mrembo hata kwa mbali kama binamu yake. Mzee wa kuhesabu alikaa na tabasamu la huzuni la furaha na machozi machoni pake, mara kwa mara akitikisa kichwa chake. Alifikiria juu ya Natasha, na juu ya ujana wake, na juu ya jinsi kulikuwa na kitu kisicho cha asili na cha kutisha katika ndoa hii inayokuja ya Natasha na Prince Andrei.
Dimmler aliketi karibu na Countess na kufunga macho yake, kusikiliza.
"Hapana, Countess," alisema mwishowe, "hii ni talanta ya Uropa, hana la kujifunza, upole huu, huruma, nguvu ..."
- Ah! "Jinsi ninavyomuogopa, ninaogopa jinsi gani," malkia alisema, bila kukumbuka alikuwa akiongea na nani. Silika yake ya uzazi ilimwambia kuwa kuna kitu kingi sana kwa Natasha, na kwamba hii haitamfurahisha. Natasha alikuwa bado hajamaliza kuimba wakati Petya mwenye umri wa miaka kumi na nne mwenye shauku alikimbilia chumbani na habari kwamba mummers walikuwa wamefika.
Natasha alisimama ghafla.
- Mpumbavu! - alipiga kelele kwa kaka yake, akakimbilia kiti, akaanguka juu yake na kulia sana hivi kwamba hakuweza kuacha kwa muda mrefu.
"Hakuna chochote, Mama, hakuna kitu kama hiki: Petya alinitisha," alisema, akijaribu kutabasamu, lakini machozi yaliendelea kutiririka na kilio kilikuwa kikimsonga kooni.
Watumishi waliovalia mavazi ya juu, dubu, Waturuki, wenye nyumba za wageni, wanawake, wa kutisha na wa kuchekesha, wakileta ubaridi na furaha, mara ya kwanza wakiwa wamejikunyata kwa woga kwenye barabara ya ukumbi; kisha, wakijificha mmoja nyuma ya mwingine, walilazimishwa kuingia kwenye ukumbi; na mara ya kwanza kwa aibu, na kisha zaidi na zaidi kwa furaha na amicably, nyimbo, ngoma, kwaya na Krismasi michezo ilianza. The Countess, akitambua nyuso na kucheka wale waliovaa, aliingia sebuleni. Hesabu Ilya Andreich alikaa kwenye ukumbi na tabasamu la kupendeza, akiidhinisha wachezaji. Vijana walipotea mahali fulani.

Kwa karibu miaka thelathini sasa, Mpango wa 9 umekuwa ukisisimua akili za Unixoids. Mfumo wa uendeshaji, miongo kadhaa kabla ya wakati wake, haukuhitajika tu na ulitupwa kwenye kando ya ulimwengu wa IT. Inferno, mrithi wake, alionekana kuwa maarufu sana na hatimaye alikutana na kifo chake mikononi mwa mtu yeyote. kampuni maarufu Vita Nuova. Walakini, mifumo yote miwili inaendelea kusasishwa na watengenezaji binafsi hadi leo na hutumiwa hata kutatua shida kadhaa. Uma nyingi zilionekana, wengi wao walikufa, na wengine bado wako hai hadi leo. Labda ya kuvutia zaidi kati yao ni Node9, symbiosis ya jukwaa la Inferno na lugha ya Lua, yenye uwezo wa kushindana na Erlang kubwa na ya kutisha.

Badala ya kutambulisha

Nimekuwa nikifuatilia ukuzaji wa Inferno na Mpango wa 9 kwa muda mrefu, nikisoma orodha za barua, nikitathmini uma zinazojitokeza kwenye GitHub mara kwa mara, na mara nyingi ninaandika kitu rahisi mimi mwenyewe katika Limbo, lugha ya kawaida ya Inferno. Kwa hivyo, mradi wa Node9, kwa kuzingatia maoni ya Inferno na kutumia moja ya nipendayo na, kama inavyoonekana kwangu, lugha ya Lua iliyopunguzwa sana, mara moja ilivutia umakini wangu. Na kama aligeuka, si bure. Mradi huo uligeuka kuwa mbaya zaidi na ulikuzwa zaidi kuliko "aina" zingine zote za mfumo ambazo nilikuwa nimeona hapo awali. Node9 ni nini? Katika istilahi ya watengenezaji wenyewe, hii ni mfumo wa uendeshaji mwenyeji, na katika uundaji unaojulikana zaidi - mazingira, au bora zaidi, jukwaa la kukimbia. maombi yaliyosambazwa. Node9 inategemea mawazo na teknolojia ya Inferno na Mpango wa 9, ambayo inapaswa kujulikana kwa wasomaji wengi. Walakini, ufafanuzi fulani ni wa lazima.

Wakati mmoja, Mpango wa 9 ulitegemea wazo la utaratibu mmoja wa IPC ambao ungeruhusu michakato ya ndani na ya mbali kubadilishana data. Ilifikiriwa kuwa mfumo mzima utajengwa karibu na utaratibu huu, hivyo tayari katika hatua za mwanzo za maendeleo ya OS, itifaki ya 9P iliundwa (huko Inferno iliitwa jina la Styx), ambayo ilikuwa na jukumu la utekelezaji wake. Na vipengele vingine vyote vya mfumo, ikiwa ni pamoja na madereva, stack ya graphics na maombi ya kawaida, walitumia kuwasiliana na kila mmoja.

Kipengele muhimu cha 9P ni kwamba kimsingi ni itifaki ya kupata faili za mbali (na za kawaida). Kwa hiyo, katika Mpango wa 9, kwa kweli kila kitu kiliwakilishwa na faili za (synthetic), kutoka kwa pointer ya mouse hadi kwenye stack ya mtandao. Programu nyingi za kawaida pia zilitoa ufikiaji wa "faili zao" kwa madhumuni ya kubadilishana data na programu zingine. Hata kusanidi mfumo haukufanywa kupitia usanidi, lakini kwa kutumia maandishi ambayo yaliandika maadili fulani kwa faili. Na muhimu zaidi, mashine moja ya Mpango wa 9 inaweza kuweka yote au sehemu ya mfumo wa faili wa mashine nyingine kwenye mtandao na kutumia faili zake kuingiliana na programu za mbali, yaani, kwa asili, kufanya simu ya utaratibu wa mbali (RPC). Njia hii ilituruhusu kupata vitu vingi vya kupendeza kutoka kwa boksi, pamoja na eneo-kazi la mbali (onyesho, kibodi na kipanya pia ni faili), ufikiaji wa mbali kwa pembezoni, kuongeza rahisi na rahisi kwa mifumo ya kompyuta. Mfano wangu ninaopenda zaidi ni utekelezaji wa NAT. Katika Mpango wa 9 haihitajiki hata kidogo; inatosha kuweka saraka ya / wavu (ina faili za safu ya mtandao) ya mashine ya mbali juu ya ile ya ndani, na programu zote zilizozinduliwa baada ya hii zitatumia safu ya mtandao ya mashine hii.

Kwa nadharia, hila hii haipaswi kufanya kazi, kwa kuwa kufikia stack ya mtandao ya mashine ya mbali, unahitaji stack ya mtandao ya moja ya ndani. Lakini katika Mpango wa 9 inafanya kazi, shukrani kwa kinachojulikana nafasi za majina. Huu ni utaratibu mwingine muhimu wa Mpango wa 9 ambao unahakikisha kwamba mabadiliko yoyote kwenye mti wa faili unaoonekana kwa mchakato mmoja hautaathiri miti ya faili inayoonekana kwa michakato mingine. Tukirudi kwa mfano wa NAT, hii inamaanisha kuwa rundo la mtandao lililowekwa la mashine ya mbali litaonekana tu kwa mchakato ulioipachika na watoto wake, wakati michakato mingine yote itaendelea kufanya kazi na mrundikano wa mtandao wa ndani. Huu ni utaratibu wenye nguvu sana ambao hukuruhusu kuunda mazingira tofauti kwa michakato, na pia kudhibiti ufikiaji wao kwa rasilimali (kwa njia, sanduku za mchanga za OpenVZ, LXC na Docker kwenye Linux hutumia wazo sawa la nafasi za majina).

Jambo la mwisho ambalo ni muhimu kwetu katika muktadha wa utangulizi wetu kwa Node9 ni njia na mitiririko. Lugha ya Limbo, inayotumiwa na chaguo-msingi katika Inferno, ina mfumo rahisi sana wa kusoma maandishi mengi, ambao, kwa njia, baadaye ulihamia lugha ya Go. Kiini chake ni rahisi kwa hatua ya aibu: wakati wowote, kazi yoyote inaweza kutumwa kwa thread tofauti kwa kuiita kwa kutumia neno kuu la spawn. Kuna kitu kama hicho katika Lua safi na lugha zingine, lakini hiyo sio muhimu. Jambo muhimu ni kwamba wakati wa kupiga kazi hiyo, unaweza kutaja katika hoja zake kituo cha data (kuna aina hiyo ya data katika Limbo), kwa njia ambayo inaweza kuwasiliana na thread ya mtoto. Huu unaitwa modeli ya kuunganisha ya CSP, na inatumika katika Limbo na Go ili kusawazisha nyuzi na kubadilishana data kati yao. Lakini kinachovutia zaidi ni kwamba kituo kinaweza kugeuzwa kuwa faili! Na kwa kweli, faili hii (kwa usahihi zaidi, saraka iliyo nayo) inaweza kuwekwa kutoka kwa mashine ya mbali. Suruali inageuka ... kuwa programu iliyosambazwa.

Weka haya yote pamoja na tunayo jukwaa la ajabu la kuunda programu zilizosambazwa. Shida pekee ni kwamba Mpango wa 9 yenyewe ni mfumo wa pembezoni, na hakuna mtu atakayeutekeleza katika uzalishaji. Inferno, kwa upande mwingine, ina uwezo wa kufanya kazi juu ya mifumo mingine, pamoja na Linux, OS X na Windows, lakini hutumia lugha ya Limbo, ambayo, ingawa ina kizuizi kidogo cha kuingia, karibu haijulikani kwa kila mtu na haifanyi. kuwa na msingi mzuri wa maktaba zilizotengenezwa tayari. Hii ndio sababu Node9 ilitokea.

Nani anatumia Inferno na Plan 9 na jinsi gani

  • Coarid hutumia Mpango wa 9 na vijenzi vyake katika suluhu zake za NAS.
  • IBM ilitumia Plan 9 na baadhi ya vijenzi vya Inferno kwenye mojawapo ya mifumo yake kuu ya Blue Gene/L, iliyojengwa kwa vichakataji 64,000.
  • Plan 9 OS ilitumika kudhibiti mfumo wa taa wa uwanja kwenye Michezo ya Olimpiki ya Sydney mnamo 2000.
  • Kwa muda mrefu, mfumo wa uendeshaji wa Inferno ulitumika katika baadhi ya suluhu za maunzi za Lucent (baadaye Alcatel-Lucent), kama vile ngome na lango. Inajulikana kuwa Mfumo wa Uendeshaji wa Inferno umefichwa ndani ya Firewall inayosimamiwa ya Lucent, Lucent VPN Firewall Portfolio na Lucent Pathstar.
  • Baadhi ya miundo ya vifaa vya simu vya SIP, hasa Philips IS2630 na Alcatel Webtouch, vilitokana na mfumo wa uendeshaji wa Inferno.
  • Vituo kadhaa vya utafiti na vyuo vikuu huchagua Inferno kama jukwaa lao la gridi ya kompyuta: Kituo cha Data cha Cambridge Crystallography (CCDC), Idara ya Baiolojia ya Chuo Kikuu cha York, Maktaba za Chuo Kikuu cha Rutgers, Evotec OAI AG (Deutsche Boerse EVT; TecDAX 30), Chuo Kikuu cha Jimbo la Montclair.

Inferno, LuaJIT, libuv na yote, yote, yote

Kwa hivyo, Node9 ni muunganisho wa sehemu ya kiwango cha chini cha toleo lililopangishwa (linaloendesha juu ya Mfumo mwingine wa Uendeshaji) wa Inferno, mkusanyaji wa haraka wa JIT LuaJIT na maktaba ya usindikaji wa matukio ya libuv asynchronous, iliyotengenezwa awali kwa Node.js, na sasa inatumika na miradi mingine. Haya yote yanatoa nini kwa msanidi programu mwingine? Kweli, kwanza, hii ni, bila shaka, tata nzima ya teknolojia za Inferno / Mpango 9 wenye uwezo wa kuandika programu katika lugha ya kawaida na rahisi sana kujifunza Lua, iliyo na mkusanyaji bora wa JIT LuaJIT.

Pili, ni mfano rahisi wa nyuzi nyingi unaotekelezwa ndani ya jukwaa lenyewe. Katika Node9, michakato na nyuzi zote huendesha ndani ya mchakato mmoja wa msingi wa OS. Hii inamaanisha kuwa kubadili kati ya nyuzi hakuhitaji swichi ya muktadha, ambayo inaweza kusababisha faida kubwa za utendaji. Naam, pamoja na kila kitu, mfano wa CSP uliojadiliwa hapo awali kulingana na kazi, vituo na faili zinazohusiana na vituo. CSP ni bora zaidi kuliko utekelezaji wa jadi wa usomaji mwingi na, kwa kweli, hutatua karibu shida zote za programu zilizosawazishwa. Threads hapa hazishiriki nafasi sawa ya anwani (wigo wa thread = upeo wa kazi), hazipati data sawa, lakini badala yake hutumia ujumbe wa synchronous (hakuna tatizo la kufunga), ni rahisi sana kusawazisha.

Cha tatu, mfumo wa ufanisi uchakataji wa matukio yasiyolingana (I/O, TCP, UDP, TTY), bila kutumbukiza kitengeneza programu kwenye kuzimu ya kurudi nyuma, inayojulikana na msanidi wowote wa Node.js. Node9 inategemea libuv kwa utunzaji wake wote wa I/O. Kwa hiyo, hata simu za mfumo (ikiwa zinaweza kuitwa hivyo katika mazingira ya "OS inayoendesha juu ya OS") inatekelezwa hapa kupitia "kitanzi cha tukio". Inafanya kazi kama hii. Mpangaji wa Node9 huhamisha udhibiti kwa mtiririko kwa kila uzi unaoendesha hadi mmoja wao apige simu ya mfumo. Katika hatua hii, kazi inayofanana na hii imezinduliwa (katika kesi hii, kazi ya kusoma):

Kazi ya S.read(vp, s_read, fd, buf, nbytes) s_read.fd = fd s_read.buf = buf s_read.nbytes = nbytes n9.sysreq(vp, n9.Sys_read) coroutine.yield() rudisha s_read.ret end

Huweka foleni simu ya mfumo kwa libuv (kazi n9.sysreq()), kisha inasimamisha uzi wa sasa na kurudisha udhibiti. Baada ya hayo, mpangaji hupitisha udhibiti kwa uzi unaofuata, na wakati foleni ya nyuzi imekamilika, huanza kupita moja ya kitanzi cha tukio la libuv (kuangalia ikiwa data iliyoombwa imepokelewa, katika kesi hii kutoka kwa diski au kwenye mtandao, Node9. haina ubaguzi). Kisha kila kitu huanza tena. Ikiwa wakati wa kitanzi libuv itagundua kuwa data imepokelewa, udhibiti unarejeshwa kwenye uzi uliopiga simu kwenye mfumo. Msomaji mwenye kufikiria sana anaweza kusema kwamba haya yote yanakumbusha sana wazo la zile zinazoitwa nyuzi za kijani kibichi, zinazotekelezwa katika Smalltalk, Tcl, Erlang, na atakuwa sahihi kabisa. Kama mzazi wake Inferno, Node9 inategemea kabisa mtindo huu, lakini kwa kutumia uwezo wa libuv na lugha ya Lua badala ya Limbo. Utekelezaji wa jukwaa la programu kulingana na "mikondo ya kijani" umethibitisha mara kwa mara ufanisi wake, na ni karibu sawa na muundo wa msingi wa tukio unaotumiwa katika Node.js na nginx. Walakini, tofauti na ya mwisho, hukuruhusu "kuandika nambari tu" na usibadilishe mawazo yako kwa kupendelea programu inayolenga kurudi nyuma, ambayo imejaa makosa na machafuko makali ya nambari.

Kwa sababu Node9 imejengwa karibu na itifaki ya 9P, matumizi yake ni rahisi sana kuunganishwa na programu katika lugha nyingine yoyote ambayo kuna maktaba yenye utekelezaji wa 9P. Na kuna lugha nyingi kama hizo, hizi ni C safi, Go, Java na zingine nyingi. Na ndio, zote zitapatikana kwa mbali.

Tujaribu

Node9 kwa sasa iko kwenye beta ya awali. Inafanya kazi, programu hukuruhusu kuiendesha, kipanga ratiba huipanga, libuv huichakata, lakini kazi nyingi za Inferno bado hazijatekelezwa. Kwa mfano, bado haiwezekani kuunda seva ya faili (katika Mpango wa 9 / istilahi ya Inferno, hii ni programu ambayo inasafirisha nje miingiliano yake kupitia faili), haiwezekani kuweka muundo wa saraka ya mashine ya mbali, lakini inawezekana kuifungua kwa kuwekwa kwa mashine za Plan 9. Walakini, inaleta maana kufahamiana na jukwaa, angalau kutathmini uwezo wake katika hali ya sasa(programu ya wavuti inaweza kuandikwa sasa).

Kwa hivyo, Node9 inapatikana kwenye GitHub na kwa sasa inaweza kufanya kazi tu kwenye OS X na Linux, na baada ya tafsiri kamili mifumo ya libuv inadai kuunga mkono mifumo mingine mingi. Sakinisha git na utengeneze hazina:

$ git clone https://github.com/jvburnes/node9.git $ cd node9

Mfumo huu umeundwa kwa kutumia programu-jalizi, na ili kuunda LuaJIT utahitaji pia kutengeneza kiotomatiki. Zana zingine zote za ujenzi ni za kawaida, kwa hivyo kusanikisha kifurushi muhimu cha ujenzi katika Ubuntu na analogi zake katika usambazaji mwingine zitatosha. Baada ya hayo, endesha tu hati ya kusanyiko na usubiri:

$ ./rebuild.sh

Baada ya kukamilika kwa mkusanyiko, tunazindua mfumo (wapenzi wa tufaha nyeupe hubadilisha LD_LIBRARY_PATH na DYLD_LIBRARY_PATH):

$ export LD_LIBRARY_PATH=./lib $ bin/node9

Mwaliko unapaswa kuonekana kwenye skrini mstari wa amri. Hili ni ganda la ndani, lina uwezekano mwingi: cd ya kawaida, ls, paka na amri kadhaa ambazo utapata kwenye saraka ya fs/appl. Mfumo yenyewe utafungwa kwenye sanduku la mchanga, mzizi ambao utakuwa saraka ya fs ndani ya saraka na Node9 imewekwa. Kutangulia amri iliyo na nafasi kunaweza kuigeuza kuwa usemi wa Lua. Bado hakuna bomba za kawaida za UNIX na uelekezaji upya wa I/O, amri tatu tu, ngumu tu.


Ili kuendesha hati yako ya Lua, iweke tu katika fs/appl, na kisha iendeshe kama amri ya kawaida, ukiacha kiendelezi (.lua). API hapa ni tofauti na Lua ya kawaida. "Simu za mfumo" za kimsingi zimejumuishwa kwenye moduli ya sys. Ili kufahamiana nao, unaweza kusoma msimbo wa chanzo appl/syscall.lua. Hakuna moduli ya mwingiliano wa mtandao hata kidogo; badala yake, kama inavyotarajiwa, kuna faili, katika kesi hii saraka ya /net. Ili kujua jinsi ya kufanya kazi nayo, unaweza kusoma vyanzo kwenye saraka ya fs/appl. Pia ni pamoja na maktaba ya Penlight Lua yenye seti ya vitendaji vya kudhibiti aina tofauti za data. Vinginevyo, hakuna kitu cha ajabu. Mradi wa kawaida katika hatua yake ya baada ya maendeleo. Sura iko tayari, kilichobaki ni kumaliza na kuifunga kwenye mfuko mzuri.



hitimisho

Node9 ni mradi zaidi ya kuvutia. Watengenezaji wake waliamua kurekebisha kile ambacho Inferno imekuwa ikiwatisha watengenezaji programu. Nina shaka sana kuwa mfumo huu utawahi kuwa maarufu zaidi, ikiwa tu kwa sababu waandaaji wengi wa programu hawahusishi Lua na jambo zito (hata ikiwa ni). Lakini ina uwezo kabisa wa kuchukua niche yake, kwani kazi nyingi za kukuza jukwaa tayari zimekamilika.

Kama onyesho, Inferno pia ilifanya kazi kama programu-jalizi chini ya toleo la 4 la Internet Explorer.

Kila mfumo wa Inferno huwasilisha mazingira yanayofanana kwa programu, bila kujali OS au usanifu msingi, unaoruhusu msanidi programu kufanya kazi na mazingira yenye usawaziko katika mifumo mbalimbali tofauti.

Maombi ya Kubebeka
Programu za Inferno zimeandikwa kwa Limbo®, lugha ya kisasa, salama, ya moduli na inayofanana ya programu na sintaksia inayofanana na C. Ina nguvu zaidi kuliko C lakini ni rahisi sana kuelewa na kurekebisha kuliko C++ au Java. Ni rahisi kueleza upatanisho katika ulimwengu wa kimwili moja kwa moja katika sintaksia ya Limbo. Programu yoyote ya Inferno itaendeshwa sawa kwenye mifumo yote ya Inferno.

Msimbo wa Kubebeka
Nambari ya Limbo imejumuishwa katika usanifu huru kanuni kwa Mashine ya Dis® Virtual, yenye uwakilishi thabiti. Dis inaweza kufasiriwa moja kwa moja (kuokoa nafasi), au kukusanywa kwa kuruka kwa kichakataji kinacholengwa (kuokoa wakati). Chaguo linaweza kufanywa kwa wakati wa kukimbia, kwa kila moduli. Usanifu wa Dis uliundwa kwa uangalifu ili kufanya uundaji wa msimbo wa kuruka moja kwa moja. Maagizo yake ni rahisi kutekeleza.

Rasilimali za Uwazi
Inferno inatoa uwazi kamili wa rasilimali na data kwa kutumia mfumo rahisi lakini wenye nguvu wa "nafasi ya majina". Kwa nyenzo zinazowakilisha kama faili na kuwa na itifaki moja ya kawaida ya mawasiliano - 9P (Styx®) - rasilimali kama vile hifadhi za data, huduma na vifaa vya nje zinaweza kushirikiwa kwa urahisi kati ya mifumo ya Inferno. Kiolesura cha rasilimali kinaweza kuletwa kwa mfumo wa ndani na kutumiwa na programu bila wao kujua, au kuhitaji kujua, iwe ni ya ndani au ya mbali.

Usalama
Usalama wa hali ya juu ni sehemu muhimu ya mfumo wa Inferno. Kwa kutumia itifaki moja ya kawaida kwa mawasiliano yote ya mtandao, usalama unaweza kuzingatiwa kwenye hatua moja na kutolewa kwa kiwango cha mfumo. Inferno inatoa usaidizi kamili kwa miunganisho iliyoidhinishwa, iliyosimbwa kwa njia fiche kwa kutumia mpango wa utambulisho wa mtumiaji wa cheti na aina mbalimbali za algoriti zikiwemo:

  • IDEA, 56 bit DES, 40, 128 na 256 bit RC4 algoriti za usimbaji fiche
  • MD4, MD5 na SHA algoriti salama za hashi

Suluhisho Kamili
Inferno sio tu mfumo wa uendeshaji, pia ni mazingira kamili ya maendeleo, kutoa zana zote muhimu kwa ajili ya kuunda, kupima na kutatua programu zinazoendesha ndani yake.

  • Acme IDE: inajumuisha kihariri, ganda, zana za hali ya juu za kulinganisha na zaidi
  • Mkusanyaji Haraka: na syntax kamili na kusanya ukaguzi wa aina ya wakati
  • Kitatuzi cha Michoro: chenye ufuatiliaji kamili wa rafu kwa nyuzi zinazotekelezwa kwa sasa
  • Shell Yenye Nguvu: yenye uwezo wa hali ya juu wa uandishi
  • UNIX kama amri: ikijumuisha bind, grep, gzip, mount, ps, tar, yacc...
Ili kuona jinsi Vita Nuova na Inferno wanaweza kukupa suluhu, wasiliana nasi au chagua mojawapo ya viungo vilivyo hapa chini.

Taarifa katika chapisho lililotangulia imepitwa na wakati kwa takribani miaka 4, na niliulizwa kuisasisha. Pia waliuliza kutochanganya usakinishaji na kurekebisha kwenye chapisho moja, kwa hivyo kutakuwa na usakinishaji hapa tu, na mpangilio wa inferno umeelezewa katika chapisho tofauti. Sasisha: Maelezo ya usakinishaji wa Windows yalisasishwa Juni 2014.

Kwa hiyo, tutasakinisha Inferno OS iliyosambazwa. Tovuti rasmi ina maagizo ya ufungaji, lakini sio sahihi kabisa na pia ni ya zamani kidogo. Inferno inaweza kufanya kazi kwa njia mbili - asili(kwenye chuma tupu au kwenye qemu/nk. kama OS zote za kawaida) na mwenyeji(kama programu ya kawaida chini ya *NIX/Win). Maagizo ya kufunga Inferno ya asili yanaweza kupatikana kwenye wiki ya Kirusi. Mbali na hili, kuna chaguzi nyingine - kwa mfano, kufunga Inferno kwenye Android (Kiingereza). Binafsi, ninafanya akili kutumia Inferno asilia kompyuta za kawaida Sioni, kwa hivyo nitaelezea usakinishaji wa Inferno mwenyeji chini ya Gentoo, Ubuntu, FreeBSD, MacOSX na Windows.

Vipengele vya Ufungaji

Matoleo ya OS Inferno
Kwa nadharia, toleo rasmi la mwisho la "Toleo la Nne" lilitolewa karibu 2004. Toleo la sasa liko kwenye hazina ya Mercurial kwenye Msimbo wa Google, na hujiita "Toleo Jipya". Katika mazoezi, hakuna maana ya kutumia kitu chochote isipokuwa toleo la sasa kutoka kwenye hifadhi - ni imara kabisa, na daima imekuwa imara. Tutaiweka.
Mtindo wa ufungaji wa watumiaji mmoja au wengi
Inferno inaweza kusakinishwa katika mfumo mzima (kwa mfano katika /usr/inferno/) ili watumiaji wote waweze kuitumia. Inferno inasaidia kila kitu kinachohitajika kwa hili - kufanya kazi na haki za mtumiaji, saraka tofauti za nyumbani, nk. Kwa upande mwingine, unaweza kuweka inferno kwenye saraka yako ya nyumbani (kwa mfano, ~/inferno/), ambayo ni rahisi zaidi. Nilifanya nakala ya mwisho kuwa ngumu zaidi kwa kuelezea njia zote mbili kwa wakati mmoja, lakini sasa niliamua kuwa itakuwa rahisi kuelezea chaguo la usakinishaji la mtumiaji mmoja tu. Iwapo wasomaji wowote wa makala haya wana seva ambayo kuna zaidi ya mtumiaji mmoja wa Inferno, hakuna uwezekano wa kuhitaji maagizo yangu ya kusakinisha Inferno. ;-) Kwa hivyo tutaisakinisha katika ~/inferno/ kwenye mifumo ya *NIX, na katika C:\inferno\ kwenye Windows.
32/64 kidogo
OS Inferno 32-bit. Kwa hiyo, ili kusakinisha na kuendesha kwenye 64-bit OS, usaidizi wa programu 32-bit kwenye OS hizi unahitajika. Kwa bahati mbaya, sikuwahi kuendesha Inferno chini ya 64-bit FreeBSD-9.0.
Hardened/PaX/SeLinux/etc.
Inferno huendesha msimbo katika mashine pepe, pamoja na kwamba inasaidia JIT, kwa hivyo ina matatizo sawa na ulinzi mbalimbali kama Java, nk. Katika makala iliyotangulia nililipa kipaumbele zaidi kwa mada hii, ikiwa una maswali yoyote, angalia hapo.
Wakati na mahali
Inferno iliyosakinishwa inachukua takriban 200MB. Lakini kusanikisha wasanifu kunaweza kuhitaji hadi gigabytes 3-pamoja (kwa mfano, kwenye Xcode au Studio ya Visual) Inferno hujumuisha kwa dakika chache kwenye mfumo wa wastani.
Mahali
Wakati wa kusakinisha Inferno kwenye saraka yako ya nyumbani, unapaswa kukumbuka kuwa Inferno haipendi maalum. herufi katika majina ya faili/saraka, kwa hivyo ikiwa njia ya saraka ya nyumbani ina, kwa mfano, nafasi - shida ambazo sijazingatia zinaweza kutokea.

Ufungaji

Katika (Hardened) Gentoo Linux 32/64-bit kila kitu ni kidogo - kuna kifurushi ambacho husakinisha mfumo mzima wa inferno ndani /usr/inferno/ :
layman -a nguvu ibuka inferno
Na sasa tutashughulika na mifumo mingine ya uendeshaji.
Mercurial, compilers na kila kitu kila kitu
... Ubuntu 12.04 32-bit
sudo apt-get install -y mercurial sudo apt-get install -y libxext-dev
... Ubuntu 12.04 64-bit
sudo apt-get install -y mercurial sudo apt-get install -y libc6-dev-i386 sudo apt-get install -y libxext-dev:i386
... FreeBSD 8.0 32-bit
pkg_add -r mercurial
...Mac OS X 10.6.8 Snow Leopard 32-bit
Tayari nilikuwa na Xcode (3.2.2) na Mercurial (1.7.1) iliyosanikishwa.
...Mac OS X 10.7.4 Simba 64-bit
Sakinisha Xcode (4.3.2) kupitia Duka la Programu.
Zindua Xcode, nenda kwenye menyu ya Xcode - Mapendeleo - Upakuaji na ubonyeze Sakinisha kwa Zana za Mstari wa Amri.
Nenda kwa mercurial.berkwood.com na upakue/usakinishe toleo la sasa(Mercurial 2.2.2 kwa OS X 10.7).
... Windows (XP 32-bit, Saba 32-bit, Saba 64-bit)
Nenda kwa mercurial.selenic.com/downloads na upakue/usakinishe toleo la sasa (3.0.1).

Lakini pamoja na mkusanyaji kuna chaguzi. Chaguo dhahiri la kusakinisha Visual Studio Express itagharimu zaidi ya gigabaiti 3 kwa skrubu. Chaguo mbadala- kusakinisha WinSDK itagharimu takriban megabaiti 800. Nitaelezea chaguzi zote mbili, chagua mwenyewe.

Chaguo la kwanza. Nenda kwa www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express na pakua/sakinisha/sasisha (kulingana na desturi ya Kirusi - mara tatu :) vinginevyo si masasisho yote yatasakinishwa) “ Visual C++ 2010 Express "

Chaguo la pili. Kwanza, nenda kwenye go.microsoft.com/fwlink/?LinkId=187668 na upakue/usakinishe ".NET Framework 4" kamili. Kisha nenda kwa www.microsoft.com/en-us/download/details.aspx?id=8279 na upakue/usakinishe "Windows SDK 7.1". Wakati wa kusanikisha, inatosha kujiwekea kikomo kwa vidokezo hivi:
# Ukuzaji wa Msimbo wa Asili wa Windows: # Vijajuu na Maktaba za Windows: # [X] Vijajuu vya Windows # [X] x86 Maktaba # [X] Visual C++ Compilers # Vifurushi vinavyoweza kusambazwa tena: # [X] Microsoft Visual C++ 2010 (Mnamo mwaka wa 2014, SDK yangu ilikataa kusakinisha hadi nilipoondoa Visual C++ 2010 inayoweza kusambazwa tena - ziligeuka kuwa toleo jipya sana kwake.) Kisha sisi pia update. Kwa kweli, labda sio lazima kusasisha, imekuwa tabia tu.

Pakua na usasishe vyanzo vya inferno
Licha ya ukweli kwamba tovuti rasmi hutoa kumbukumbu tofauti kwa Windows, na vifungo tofauti vya Mac, hatuhitaji haya yote, na ni hatari (kumbukumbu ya Windows haijasasishwa kawaida kutoka kwa ghala - migogoro hutokea). Kwa hivyo chini ya OS zote tutasakinisha kutoka inferno-20100120.tgz. Hoja ya kutumia kumbukumbu hii badala ya kuweka kumbukumbu tu ni kwamba kumbukumbu inajumuisha faili kadhaa (haswa fonti) ambazo leseni inakataza kuchapisha kwenye Msimbo wa Google, kwa hivyo haziko kwenye hazina.
… *NIX
wget http://www.vitanuova.com/dist/4e/inferno-20100120.tgz tar xzf inferno-20100120.tgz cd inferno/ hg pull -uv
...Shinda
Pakua www.vitanuova.com/dist/4e/inferno.zip (inapendekezwa kwenye tovuti, lakini pia unaweza kuchukua .tgz - naweza kukusanya zote mbili bila matatizo yoyote).
Ifungue kwa C:\inferno\ . Sijui ni nini kinachohitajika ili kufungua .tgz chini ya Windows - nilikuwa na Far na 7Zip iliyosakinishwa, niliipakua kwa Mbali.
Zindua cmd.
cd \inferno hg pull -uv # tukipata mzozo kama vile: kuunganisha libinterp/keyring.h onyo: migogoro wakati wa kuunganisha. kuunganisha libinterp/keyring.h haijakamilika! (hariri migogoro, kisha utumie "hg resolution --mark") kuunganisha libinterp/runt.h onyo: migogoro wakati wa kuunganisha. kuunganisha libinterp/runt.h haijakamilika! (hariri mizozo, kisha utumie "hg resolution --mark") faili 3038 zilizosasishwa, faili 0 zimeunganishwa, faili 106 zimeondolewa, faili 2 ambazo hazijasuluhishwa tumia "hg resolution" kujaribu tena ujumuishaji wa faili ambao haujasuluhishwa # kisha urejeshe toleo la hivi karibuni: hg revert - r ncha libinterp\keyring.h hg revert -r ncha libinterp\runt.h Toka cmd .
Kuweka vigezo vya mazingira
Tofauti pekee inayohitajika ni PATH . EMU huweka vigezo chaguo-msingi vya kuzindua inferno, ni kwa urahisi tu. Kuhusu INFERNO_ROOT, Inferno hajui kuihusu hata kidogo; tunahitaji utaftaji huu kwa urahisi. Mbali na kuweka vigezo katika kipindi cha sasa, tutaziandika kwenye hati za kuanza.
... Ubuntu
export INFERNO_ROOT=$(pwd) export PATH=$INFERNO_ROOT/Linux/386/bin:$PATH export EMU=-r$INFERNO_ROOT echo "export INFERNO_ROOT=$INFERNO_ROOT" >> ~/.bashrc echo "export PATH=\$INFERNO_ /Linux/386/bin:\$PATH" >> ~/.bashrc echo "hamisha EMU=-r\$INFERNO_ROOT" >> ~/.bashrc
... FreeBSD
export INFERNO_ROOT=$(pwd) export PATH=$INFERNO_ROOT/FreeBSD/386/bin:$PATH export EMU=-r$INFERNO_ROOT echo "export INFERNO_ROOT=$INFERNO_ROOT" >> ~/.OT_profile echo "export PATH=\$INFERNO_ROOT" /FreeBSD/386/bin:\$PATH" >> ~/.bash_profile echo "hamisha EMU=-r\$INFERNO_ROOT" >> ~/.bash_profile
...Mac OS X
export INFERNO_ROOT=$(pwd) export PATH=$INFERNO_ROOT/MacOSX/386/bin:$PATH export EMU=-r$INFERNO_ROOT echo "export INFERNO_ROOT=$INFERNO_ROOT" >> ~/.OT_profile echo "export PATH=\$INFERNO_ROOT" /MacOSX/386/bin:\$PATH" >> ~/.bash_profile echo "hamisha EMU=-r\$INFERNO_ROOT" >> ~/.bash_profile
...Shinda
Nenda kwa: Jopo la Kudhibiti -> Mfumo -> Chaguzi za ziada mifumo (katika XP tu "Advanced") -> Vigezo vya Mazingira.
Ongeza hadi mwisho Njia: ;C:\inferno\Nt\386\bin
Unda kigezo kipya: INFERNO_ROOT: C:\inferno
Unda tofauti mpya: EMU: -rC:\inferno
Inasanidi vigezo vya ujenzi
Unaweza kuhariri faili ya mkconfig kwa mikono kwenye mifumo yote ya uendeshaji, lakini kwa unyenyekevu, inapowezekana, nitatoa amri zinazobadilisha usanidi kiatomati.
... Ubuntu
perl -i -pe "s/^ROOT=.*/ROOT=$ENV(INFERNO_ROOT)/m" mkconfig perl -i -pe "s/^SYSHOST=.*/SYSHOST=Linux/m" mkconfig perl -i - pe "s/^OBJTYPE=.*/OBJTYPE=386/m" mkconfig
Katika Linux, Inferno inaauni IPv6. Zaidi ya hayo, IPv6 inatumiwa na chaguo-msingi. Ikiwa inakufaa au la - amua mwenyewe. Binafsi ninaizima:
perl -i -pe "s/ipif6/ipif/g" emu/Linux/emu emu/Linux/emu-g
... FreeBSD
perl -i -pe "s/^ROOT=.*/ROOT=$ENV(INFERNO_ROOT)/m" mkconfig perl -i -pe "s/^SYSHOST=.*/SYSHOST=FreeBSD/m" mkconfig perl -i - pe "s/^OBJTYPE=.*/OBJTYPE=386/m" mkconfig
...Mac OS X
perl -i -pe "s/^ROOT=.*/ROOT=$ENV(INFERNO_ROOT)/m" mkconfig perl -i -pe "s/^SYSHOST=.*/SYSHOST=MacOSX/m" mkconfig perl -i - pe "s/^OBJTYPE=.*/OBJTYPE=386/m" mkconfig
...Shinda
Hariri mkconfig:
ROOT=c:/inferno SYSHOST=Nt OBJTYPE=386
Bunge
… *NIX
sh makemk.sh mk nuke mk install # ruka amri hii kwenye seva bila X na GUI mk CONF=emu-g install
...Shinda Saba 64-bit
Ikiwa umesakinisha WinSDK, basi unahitaji kufanya njia ya mkato mpya kwa "Windows SDK 7.1 Command Prompt", nenda kwa mali yake na ongeza parameta /x86 - ili iwe kama hii:
C:\Windows\System32\cmd.exe /E:ON /V:ON /T:0E /K "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86
Ikiwa umesakinisha Visual C ++ 2010, basi sijui jinsi ya kuendesha mkusanyaji wa 32-bit (lakini labda inaweza kufanywa kwa njia sawa).
Nini cha kufanya baadaye ni ilivyoelezwa katika aya inayofuata kwa matoleo yote ya Windows.
...Shinda
Zindua "Windows SDK 7.1 Command Prompt" (au "Visual Studio Command Prompt (2010)" - kulingana na kile ulichosakinisha).
cd\inferno mk nuke mk install

Uzinduzi

Kweli, hiyo ndiyo yote. Sasa unaweza kuendesha inferno na emu au emu-g amri (ya pili inatofautiana kwa kuwa haitumii hali ya picha, lakini itafanya kazi kwenye seva bila X na ni rahisi sana kwa kuzindua tofauti. huduma za mtandao) Mazingira ya picha yanaweza kuonekana kwa kuendesha amri ya wm/wm ndani ya emu:
$ emu ; wm/wm