Processz közti kommunikáció

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

FDDI (Fiber Distributed Data Interface, Száloptikai adatátviteli interface)
ADATBÁZISOK.
1 Számítógépek felépítése 9. előadás I/O rendszerek.
Hálózati és Internet ismeretek
A kommunikáció.
C++ programozási nyelv Gyakorlat hét
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
8. előadás (2005. április 19.) Pozicionálás fájlban (folyt.) I/O mechanizmus váltás Hibakezelő függvények Változók tárolási osztályai Parancssor-argumentumok.
LINUX/UNIX PARANCSOK.
13.a CAD-CAM informatikus
Bevezetés a Java programozásba
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Függvények, mutatók Csernoch Mária.
Mutatók, tömbök, függvények
Ember László Damn Small Linux Microsoft VPC környezetben.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 5. Nézettáblák létrehozása, módosítása és törlése.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
Kölcsönös kizárás - szemaforok
A folyamat kontextus, processz menedzsment, processz állapotok
Krizsán Zoltán iit 1.2.  Nem kell vizuális felületnek lennie.  Delegátumok segítségével valósíthatja meg a.NET. Krizsán Zoltán iit Delegátumok C#-ban2.
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Összekapcsolható funkciók Címek Időpontok Projektek Számlák Dokumentumok Cikkek Értékesítési lehetőségek Feladatok Telefonhívások.
Nézettáblák létrehozása, módosítása és törlése
WEB Technológiák ISAPI ME Általános Informatikai Tsz. dr. Kovács László.
OPERÁCIÓS RENDSZEREK OS fogalom, struktúrák
Operációs rendszerek Segédprogramok, szűrők. Vadász2 A mai program Hasznos, vegyes segédprogramok –test, expr, read; startup programok Rekurzió Alapfogalmak.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Kivételkezelés a C++ nyelvben Bevezetés
1 Operációs rendszerek Az NT folyamatok kezelése.
Operációs rendszerek Folyamatok.
1 Operációs rendszerek Signal kezelés. 2 SIGNAL kezelés Egyszerű folyamatok közötti kommunikációs (IPC – Inter Process Communication) megoldás. A signal.
1 Operációs rendszerek A UNIX védelmi rendszere. 2 Illetéktelen hozzáférés megakadályozása: az egyes felhasználók adataihoz, az operációs rendszer adataihoz,
Anyagadatbank c. tárgy gyakorlat Féléves tematika Adatbázis alapfogalmak, rendszerek Adatmodellek, adatbázis tervezés Adatbázis műveletek.
A Unix operációs rendszer Előadást tarja: Lázár András.
Hálózati architektúrák
SZÁMÍTÓGÉP ARCHITEKTÚRÁK - 4
Bemutatkozás Név: Vespi Gábor Kelt: december 27.
Operációs Rendszerek 1 Felhasználókezelés Windisch Gergely
Adatbázis-kezelés JAG,
Hálózati ismeretek ismétlés.
Adatbázis kezelés.
ORACLE ORDBMS adminisztrációs feladatok 3. rész dr. Kovács László 2004.
Egyenesvonalú (lineáris) adatszerkezetek
Objektum orientált programozás
Bifrost Anonim kommunikációs rendszer. Bevezetés Egyre több szolgáltatás jelenik meg az interneten, melyek megkövetelik az anonimitiást, pl.: Egészségügyi.
Webprogramozó tanfolyam
Párhuzamosság, kritikus szakasz, szemaforok Operációs rendszerek.
Webprogramozó tanfolyam
A Visual Basic nyelvi elemei
Illés Zoltán ELTE Informatikai Kar
Kapcsolatok ellenőrzése
Gyurkó György. Az állapotmodellezés célja Általánosságban ugyanaz, mint a többi dinamikus modellezési technikáé: Jobban megismerni a problémát. Finomítani.
UML modellezés 3. előadás
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
A fizikai réteg. Az OSI modell első, avagy legalsó rétege Feladata a bitek kommunikációs csatornára való juttatása Ez a réteg határozza meg az eszközökkel.
Piramis klaszter rendszer
Biztonság és védelem. AppArmor Alkalmazás biztonsági modul a Linux kernelhez Az Immunix fejlesztette ki A biztonsági szempontból sebezhető alkalmazásoknak.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
A CLIPS keretrendszer
Számítógépek felépítése 9. előadás I/O rendszerek
Előadás másolata:

Processz közti kommunikáció Operációs rendszerek Processz közti kommunikáció

A mai program Az IPC modell és jellemzői IPC mechanizmusok A Unix üzenetsor A Unix osztott memória Példaprogramok Vadász

Inter Process Communication A független processz modell a valóságban nem létezik Mindig van közöttük kapcsolat, legalább vetélkedés az erőforrásokért Használjuk ki a tudatos együttműködést: legyen IPC Eddig is tárgyaltunk IPC mechanizmusokat A szignálozás is IPC; szinkronizációs céllal, kis információmennyiség átvitellel A környezeti változókon kommunikálhatnak a szülő – gyermek viszonyban lévők (kis információmennyiség) Fájlokon keresztül is lehet (nagy mennyiség, de lassú) Hogy lehetne jó teljesítménnyel (gyorsan, sokat) információkat átadni? Vadász

Az általános modell A kommunikációhoz szükséges a send([kinek, ]uzenet); receive([kitol, ]uzenet); rendszerhívás pár. 4 kérdés feltehető Küldő processz megvárja-e, hogy a fogadó megkapja az üzenetet? Fogadó processz várjon-e kiadott receive() híváson? Küldő meghatározza-e kinek küld? Fogadó meghatározza-e kitől fogad? Ezek generikus rendszerhívások. Vadász

Szinkron – aszinkron kommunikáció Lehetséges válaszok (az első két kérdésre) Blokkolásos küldés Nem blokkolásos küldés (aszinkronitás) Blokkolós fogadáskor Nincs blokkolódás fogadáskor (aszinkronitás) Ha mind a küldés, mind a fogadás blokkolásos, akkor a kommunikáció szinkron. Ha valamelyik (vagy mindkettő) nem blokkolásos, akkor aszinkron. Vadász

Kifejezett/ki nem fejezett nevek Lehetséges válaszok (másik kérdés-kettősre) Kifejezett a kinek: célzott küldés (explicit naming) Elmarad a kinek: üzenetszórásos küldés (broadcasting, implicit naming) Kifejezett a kitől (explicit naming) Elmaradó kitől (implicit naming) Vadász

Használatos változatok A szinkron és kifejezett neveket használó (explicit naming) kommunikáció hasznos, szokásos. Szinkronizációra kiváló. A blokkolásos küldéses üzenetszórás gyakorlatilag nem használatos (nehéz implementáció) Blokkolós fogadás implicit (hiányzó) nevekkel hasznos. Nem blokkolós fogadás implicit nevezésekkel hasznos lenne, de nehezen menedzselhető. Jó megoldás vezet át az indirekt kommunikációs modellhez. Vadász

A számosság és az irány A kommunikációban résztvevők száma A kifejezett neveket használó kommunikáció két processz közötti. Az implicit nevek használat esetén lehet egy-a-többhöz, ill. több-az-egyhez kommunikáció A szimmetria, aszimmetria Egy kommunikációs mechanizmus általában egyirányú (aszimmetrikus), de lehet többirányú (szimmetrikus) is. Vadász

A pufferezés, üzenethossz, érték v. hivatkozás Egy kommunikációs kapcsolatnak lehet zéró, korlátozott vagy végtelen pufferelési kapacitása. Az üzenethosszra lehetnek korlátok. Az üzenetküldés lehet adatküldéses vagy hivatkozásküldéses jellegű. (A hivatkozásküldéses változat magával hozza a közvetett jelleget.) Vadász

Primitív mechanizmusok Egy fajta primitív IPC mechanizmus a csatorna (channel): az üzenet eltűnik a csatornából, ha „kivesszük” (fogadjuk) Lehet közvetlen vagy közvetett is Pufferes változata lehet FIFO vagy FILO jellegű Másik primitív a medence (pool): a kivett üzenet megmarad a medencében (többször is kivehető) Szokásosan közvetett jellegű Pufferes változata is lehet Szokásosan szimmetrikus Vadász

Mechanizmusok modelljei Puffer nélküli, aszimmetrikus csatorna Pufferes, FIFO, aszimmetrikus csatorna Pufferes, FILO, aszimmetrikus csatorna Puffer nélküli, szimmetrikus medence Vadász

Közvetlen és közvetett átvitel Van közvetlen átvitel (direkt kommunikáció), amihez a processzeknek ismerniük kell egymást (többnyire explicit, de lehet implicit ismeret is). Két processz között szokásos. Van közvetett átvitel (indirekt kommunikáció). Ekkor létezik egy közvetítő entitás (üzenetsor, postaláda stb.), amit a kommunikációban résztvevőknek ismerniük kell. A processz nevekre implicit ismeret, a közvetítő entitásra nézve explicit. Többnyire többirányú (szimmetrikus). Vadász

Indirekt kommunikáció Üzenetsor, mailbox stb. objektum alkotja a kapcsolatot. Ez önálló objektum, azonosítható. Ez lehet csatorna vagy medence is Ezt a közvetítő entitást kell ismerni (asszociálni). Szükséges (generikus) rendszerhívások: create(msg-queue); destroy(msg-queue); associate(msg-queue); send(msg-queue, message); receive (msg-queue, message); Vadász

A közvetítő kötődése (binding) Kötődhet processzhez, A “tulajdonos“ terminálódása esetén a közvetítő megszűnik! A többi processznek “használati“ viszonya van. Ez a viszony jelenthet többféle hozzáférést. A “kötődési“ viszony átruházható. A hozzáférési viszonyok beállíthatók. Kötődhet az OS-hez. Itt is van kreátor processz és vannak asszociáló processzek. A közvetítő entitás “túlélheti“ a processzeket. Lehet egy törlő (destroy) processz is. Különböző hozzáférések itt is! Különböztessük meg a kötődési tulajdonosságot (ez a létezhet-e kérdést dönti el) és a hozzáféréseket is szabályozó tulajdonosságot (ez az küldés- fogadási hozzáférhetőséget szabályozhatja). Kérdés: hol találkoztunk már ezzel a kötődési viszonnyal? Ami a létezési kérdéssel foglakozott? Nos, a processzeknél: minden processznek kell legyen szülője kérdésnél. Ha egy processz terminálódott, gyermekeit át kell adja a nagyszülőnek (kell kötődjön valakihez egy processz). Miért? A zombie processz fogalom a válasz: egy processz után, ha az terminálódik, kellhet takarítani, ezt az végeztethetik akihez kötődik … A postaláda kötődésnél van logika az OS-hez kötődésben (ne szűnjön meg a kreátora halálakor, biztonság). Van logika a processzhez kötődésben is: ne kelljen utólagosan „takarítani” . Vadász

Kötődés versus hozzáférés Különböztessük meg a Kötődési tulajdonosságot és a Hozzáféréseket megszabó tulajdonosságot. A kötődési tulajdonosság a „létezhet-e” kérdéskörrel foglalkozik A hozzáféréseket megszabó tulajdonosság itt a „küldhetek-e/fogadhatok-e üzeneteket” kérdéskörrel foglalkozik. Korábbi példa a tulajdonlási viszonyokra (egzisztenciával foglakozó) Vadász

IPC mechanizmusok, felsorolás Szignálozás. Aszinkron, két processz közt aszimmetrikus, közvetlen, puffer nélküli csatorna; gyors, kis információmennyiséget átvivő. A szokásos “environment“-en keresztüli kommunikáció. Aszinkron, két processz közti aszimmetrikus, puffer nélküli medence; gyors, kevés információ átvivő Fájlokon keresztüli kommunikáció. Aszinkron, sok processz közti, többnyire aszimmetrikus, közvetett, medence; lassú, nagy információmennyiséget átvivő. Lehet FIFO csatorna is (a neveztt pipe mechanizmus) A klasszikus üzenetsor (message queue) rendszer. Osztott memórián keresztüli kommunikáció. Szemaforok, mint kommunikációs mechanizmusok. A BSD socket kommunikáció. Remote Procedure Call. Vadász

További témáink A Unix üzenetsor (message queue), rendszerhívások, példaprogramok A Unix osztott memória kezelés rendszerhívásai, példaprogram a rendszerhívásokra Vadász

A Unix üzenetsor rendszere Gyors, közepes átvihető információmennyiség. Indirekt FIFO csatorna, OS kötődésű, többirányú, (elvileg) végtelen puffer kapacitású, változó üzenethosszú. A rendszerhívások: msgget() // készítés, azonosítás msgctl() // kontroll, jellemzők lekérdezése, // megszüntetés msgsnd() // üzenet betétel a sorba msgrcv() // üzenet kivétel a sorból Üzenetsor külső azonosítása: kulcs Üzenetsor belső azonosítása: egy változó Vadász

Az üzenetsor A processzektől függetlenül létezik, ha készült. Tulajdonossági és hozzáférési jellemzőiket a fájl tulajdonossági, hozzáférési kategóriák segítségével szabályozzák. Az ipcs paranccsal bizonyos jellemzőit lekérdhetjük. (Az ipcs az osztott memória és a szemafor objektumokról is tájékoztat). Esettanulmányok a …/Peldaprogramok/ipc/msg jegyzékben Vadász

ipcs parancs indvd 12> ipcs IPC status from /dev/kmem as of Wed Sep 7 18:11:04 1994 T ID KEY MODE OWNER GROUP Message Queues: q 50 0x0009fbf1 --rw-rw-rw- vadasz staff Shared Memory: m 0 0x000009a4 --rw-rw-rw- root sys Semaphores: indvd 13> Vadász

A rendszerhívások: msgget #include <sys/types.h> #include <sys/ipcs.h> #include <sys/msg.h> int msgget(key_t key, int msgflg); Ahol key (hexa) kulcs a külső azonosításhoz, msgflg készítéskor védelem, hozzáférés beállítás, azonosításkor létezés ellenőrzés, hozzáférés állítás, A visszaadott érték az üzenetsor belső leírója (azonosítója), vagy hibaérték. Vadász

A rendszerhívások: msgctl #include … int msgctl(int id, int cmd, struct msqid_ds *buf); Ahol id sor belső leírója; cmd IPC_STAT állapot lekérdő, IPC_SET állapot változtató, IPC_RMID sort törlő parancs (makró). buf a felhasználói címtartományhoz tartozó állapotleíró struktúra pointere. Ide másolódnak (innen egyes tagok másolódnak) állapot lekérdezéskor, változtatáskor. Törléskor NULL. A visszaadott érték 0 siker esetén, -1 hiba esetén (ekkor az errno nézhető). Vadász

msgctl argumentumok: a buf A struct msqid_ds néhány tagja: struct ipc_perm msg_perm; /* permission-ok */ struct msg *msg_first; /* első üzenet mutatója */ struct msg *msg_last; /* utolsó üzenet mutatója*/ ulong_t msg_qbytes; /* sor max. hossza*/ ulong_t msg_qnum; /* pillanatnyi üzenetszám */ ulong_t msg_cbytes; /* a sor hossza */ pid_t msg_lspid; /* utolsó küldő processz id */ pid_t msg_lrpid; /* utolsó vevő pid */ time_t msg_stime; /* utolsó adás ideje */ time_t msg_rtime; /* utolsó vétel ideje */ stb. ( Az msg_qbytes változtatható). Vadász

Részlet az ipc.h fájlból struct ipc_perm { uid_t uid; /* owner's user id */ gid_t gid; /* owner's group id */ uid_t cuid; /* creator's user id */ gid_t cgid; /* creator's group id */ mode_t mode; /* access modes */ ulong_t seq; /* slot usage sequence number */ key_t key; /* key */ long pad[4]; /* reserve area */ }; (A kiemeltek változtathatók az IPC_SET paranccsal.) /* Control Commands. */ #define IPC_RMID 10 /* remove identifier */ #define IPC_SET 11 /* set options */ #define IPC_STAT 12 /* get options */ Vadász

A rendszerhívások: msgsnd int msgsnd(int id, struct msgbuf *msgp, size_t size, int msgflg); Ahol id a belső leíró, msgp üzenetstruktúra mutató, size üzenet hossz, msgflg flag, aminek itt kicsi a jelentősége. A struct msgbuf { long mtype; /* üzenet típus, pozitív egész */ char *body; /* üzenet teste, lehet más típus is */ } A típus a fogadásnál a üzenet szelektálásra lesz jó. A hossz a test hossza kell legyen. Vadász

A rendszerhívások: msgrcv int msgrcv(int id, struct msgbuf *msgp, size_t size, long msgtyp, int msgflg); Ahol id a belső leíró, msgp üzenetstruktúra mutató, size üzenet hossz a csonkításhoz, msgtyp típus a szelektáláshoz, msgflg flag, ha IPC_NOWAIT, akkor nem vár. Ha msgtyp = 0, akkor az első bármilyen típusú üzenetet veszi. Ha msgtyp > 0, akkor az adott típusú első üzenetet veszi. Ha msgtyp < 0, akkor a legkisebb típusú első üzenetet, ami az |msgtyp|-nél kisebb vagy egyenlő. |msgtyp| abszolút érték Vadász

Példaprogramok Nézzük a „szokásos” helyet Három fájl … http://www.iit.uni-miskolc.hu/~vadasz/GEIAL202/Peldaprogramok/ipc/msg Három fájl … Vadász

Unix osztott memóriahasználat Gyors, közepes információtartalmat átvivő Indirekt zérópufferelt medence, többirányú OS kötődésű. Védelme a fájlvédelmi mechanizmusokkal egyező Az érintett rendszerhívások: shmget( ); // készítés, beazonosítás shmat( ); // a processz címtartományára csatolás shmdt( ); // lecsatolás shmctl( ); // kontroll, jellemzők lekérdezése, // beállítása, megszüntetés Vadász

Az elgondolás Készítünk (beazonosítunk) adott méretű memória szegmenst. Ezt leképezzük a processz címtartományára (megadjuk, milyen címeken és milyen típusként lássa a processz a szegmens rekeszeit). Rácsatolódunk. Használjuk az adott címekre való hivatkozásokkal a szegmens rekeszeit. Végül lekapcsoljuk a címtartományt, esetleg töröljük a szegmenst. A készítés során megadhatunk „hozzáférési” korlátokat: rwx jellemzőket. A „leképzés” (rákapcsolás, attach) hasonlít a dinamikus memória allokálásra. Az alloc hívásokkal „bővítjük” a címtartományt és a memóriát. A bővített memória valós memóriamenedzselésű rendszereken a heap-ből adódik, virtuális memória menedzselésű rendszerekben pedig virtuális memória „többlet” lesz az eredmény. Itt, az osztott memória mechanizmusnál a „többlet-memórai” az előre készített memória szegmens. Lássuk be: ugyanazon osztott memória objektum rekeszeit (elemeit) az egyik processz más címein láthatja, mint a másik! Horribile dictu: más-más típusú rekeszeket láthatnak az egyes processzek (persze, a felelősség a programozóké!). Vadász

A rendszerhívások: shmget #include <sys/types.h> #include <sys/ipcs.h> #include <sys/shm.h> int shmget(key_t key, int size, int msgflg); Ahol key (hexa) kulcs a külső azonosításhoz, size a szegmens mérete, msgflg készítéskor védelem, hozzáférés beállítás, azonosításkor létezés ellenőrzés, hozzáférés állítás. A visszaadott érték az osztott memória belső leírója (azonosítója), vagy hibaérték. Készít adott méretű szegmenst az adott hozzáfárásekkel, vagy létezőre rácsatlakozik. A size méretet a PAGE_SIZE méret egész számú többszörösére kerekítik. Vadász

A rendszerhívások: shmat void *shmat(int id, const void *addr, int flg); Ahol id a belső leíró, addr leképzési cím-specifikáció, flg védelem átállítás. Ha az addr NULL értékű, a rendszer alkalmas (még nem használt) címtartomány elemeire képez le. Ha az addr nem NULL, akkor (esetleg kerekítéssel) az adott címtől kezdődő tartományra képez le. A visszaadott érték siker esetén a szegmens leképzett címe. Hiba esetén -1 a visszatérési érték. A visszaadott címet adott típusú pointer veheti fel: ezzel a szegmens rekeszeit az adott típusú adatként láthatjuk. Vadász

A rendszerhívások: shmdt( ) int shmdt(const void *addr); Ahol addr a rákapcsolt szegmens címe. A visszaadott érték siker esetén a 0, hiba esetén -1. Kifejezett shmdt( ) hívás nélkül processz terminálódása esetén a lekapcsolódás rejtetten megtörténik. Vadász

A rendszerhívások: shmctl( ) int shmctl(int id, int cmd, struct shmid_ds *buf); Ahol id a belső leíró, cmd IPC_STAT az állapot lekérdő parancs, IPC_SET attribútum beállító parancs, IPC_RMID a szegmens törlés parancsa. buf a felhasználói címtartományhoz tartozó állapotleíró struktúra pointere. Ide másolódnak (innen egyes tagok másolódnak) állapot lekérdezéskor, beállításkor. Törléskor NULL. A visszaadott érték 0 siker esetén, -1 hiba esetén (ekkor az errno nézhető). Az IPC_SET paranccsal csakis a shm_perm struktúra uid, gid és mode tagjai állíthatók be! Vadász

A szegmens attribútumai struct shmid_ds { struct ipc_perm shm_perm; /* hozzáférések */ int shm_segsz; /* szegmens méret (bájt) */ time_t shm_atime; /* utolsó rákapcsolódási idő */ time_t shm_dtime; /* utolsó lekapcsolódási idő */ ushort shm_cpid; /* készitő pid-je */ ushort shm_lpid; /* utolsó használó pid-je */ short shm_nattch; /* pillanatnyilag rákapcsolódók száma*/ }; Kérdés: mely tagok kapnak értéket az shmat( ) és az shmdt( ) hívás során? Az IPC_SET paranccsal csakis a shm_perm struktúra uid, gid és mode tagjai állíthatók be! Vadász

Példaprogram Nézzük a „szokásos” helyet http://www.iit.uni-miskolc.hu/~vadasz/GEIAL202/Peldaprogramok/ipc/shm Vadász

POSIX leképzett fájl Lehetséges, hogy egy fájlt (vagy olyan objektumot, melynek leírója van) leképezzünk egy processz címtartományára #include <sys/mman.h> void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); Nézzenek utána! Leképzés megszüntetés: munmap( ) Ha addr == NULL, akkor a rendszerre bízom, mely címtartományra képezzenek le. len = milyen hosszon történjen a leképzés. prot lehet PROT_READ | PROT_WRITE | PROT_EXEC, vagy PROT_NONE (nincs ekkor hozzáférés) flags lehet MAP_SHARED (ekkor megosztott) vagy MAP_PRIVATE (ekkor privát) közül kötelezően az egyik. Ez ORed lehet MAP_FIXED-del (veszélyes, ekkor az addr pontos cím). fd a nyitott fájl leírója (descriptor). offset többnyire 0, a fájl kezdetétől az eltolás, ahol a címleképzés valóban kezdődik. Visszaadja a leképzés kezdő címét. Vadász

Processz közti kommunikáció Vége Operációs rendszerek Processz közti kommunikáció Vége