Atminties susiejimo failai naudoja virtualią atmintį, kad susietų failus su proceso adresų sritimi, o po to procesas manipuliuoja failu kaip ir adresu proceso erdvėje, pvz., naudojant memcpy ir kitas atminties operacijų funkcijas C kalba. Šis metodas gali būti gerai naudojamas tais atvejais, kai failą ar didelį failą reikia dažnai apdoroti, o IO apdorojimo efektyvumas yra didesnis nei įprasto IO Bendra atmintis yra ypatingas atminties susietų failų atvejis, kuris susieja atminties dalį, o ne failą diske. Bendros atminties objektas yra procesas, o operacinė sistema pagal numatytuosius nustatymus kiekvienam procesui skiria atminties vietą, o kiekvienam procesui leidžiama pasiekti tik operacinės sistemos jam skirtą atminties dalį, bet ne kitiems procesams. Ir kartais reikia pasiekti tą pačią atminties dalį tarp skirtingų procesų, ką turėtumėte daryti? Operacinė sistema suteikia API, kad sukurtų prieigą prie bendros atminties, o procesai, kuriems reikia bendrinti atmintį, gali pasiekti atmintį, kurią bendrina keli procesai per šį apibrėžtų API rinkinį, ir kiekvienas procesas pasiekia šią atmintį taip, lyg jis pasiektų failą standžiajame diske. .Net 4.0 pristato System.IO. "MemoryMappedFiles" vardų sritis – klasė, apimanti su "Windows" bendrinama atmintimi susijusias API, todėl .Net programuotojams lengviau naudoti atminties susiejimo failus. Naudokite bendrą atmintį C#. Šis "App1" kodas leidžia vartotojui įvesti teksto eilutę į bendrą atmintį; "App2" nuolat atnaujina konsolę ir išveda naujausią bendros atminties turinį; "App3" įgyvendina tas pačias funkcijas kaip ir "App2", tačiau skaitymo būdas skiriasi.
Duomenims nuskaityti buvo naudojami du metodai. Kadangi anksčiau ryšys tarp procesų buvo naudojamas retai, šis metodas yra tik preliminarus supratimas. Programa yra pernelyg elementari, ir yra daug dalykų, kurie nėra vertinami. Pavyzdžiui, kaip sukurti bendrą atmintį, kaip ją atkurti ir ištrinti ir pan.
|