Mi a folyamatszinkronizálás?
A folyamatszinkronizálás feladata a folyamatok végrehajtásának összehangolása oly módon, hogy két folyamat ne férhessen hozzá ugyanazon megosztott adatokhoz és erőforrásokhoz.
Kifejezetten szükség van erre egy többfolyamatos rendszerben, ha több folyamat fut együtt, és egynél több folyamat próbál ugyanahhoz a megosztott erőforráshoz vagy adatokhoz egyszerre hozzáférni.
Ez a megosztott adatok következetlenségéhez vezethet. Tehát az egyik folyamat által végrehajtott változás nem feltétlenül tükröződik akkor, amikor más folyamatok is hozzáférnek ugyanahhoz a megosztott adathoz. Az ilyen típusú inkonzisztenciák elkerülése érdekében a folyamatokat szinkronizálni kell egymással.
Ebben az operációs rendszer bemutatóban megtudhatja:
- Mi a folyamatszinkronizálás?
- Hogyan működik a folyamatszinkronizálás?
- A program szakaszai
- Mi a kritikus szakasz problémája?
- A kritikus szakasz szabályai
- Megoldások a kritikus szakaszhoz
Hogyan működik a folyamatszinkronizálás?
Például: A folyamat megváltoztatja az adatokat egy memóriahelyen, miközben egy másik B folyamat megpróbálja ugyanarról a memóriahelyről olvasni az adatokat . Nagy a valószínűsége annak, hogy a második folyamat által olvasott adatok hibásak lesznek.
A program szakaszai
Itt van a kritikus szakasz négy lényeges eleme:
- Belépési szakasz: A folyamat része, amely eldönti egy adott folyamat beírását.
- Kritikus szakasz: Ez a rész egy folyamat lehetővé teszi a megosztott változó beírását és módosítását.
- Kilépés szakasz: Kilépés szakasz lehetővé teszi a Belépés szakaszban várakozó másik folyamat belépését a kritikus szakaszokba. Azt is ellenőrzi, hogy a végrehajtását befejező folyamatot el kell-e távolítani ebben a szakaszban.
- Maradék szakasz: A kód minden más része, amely nem szerepel a Kritikus, a Belépés és a Kilépés szakaszban, a maradék szakasz néven ismert.
Mi a kritikus szakasz problémája?
A kritikus szakasz a kód egy olyan része, amelyhez egy jeltovábbítással lehet hozzáférni egy adott időpontban. A szakasz megosztott adatforrásokból áll, amelyekhez más folyamatokhoz kellett hozzáférni.
- A kritikus szakaszba való bejegyzést a wait () függvény kezeli, és P () formában jelenik meg.
- A kritikus szakaszból való kilépést a jel () függvény vezérli, amelyet V () néven képviselünk.
A kritikus részben csak egyetlen folyamat hajtható végre. A kritikus szakaszuk végrehajtására váró többi folyamatnak meg kell várnia, amíg az aktuális folyamat befejezi a végrehajtását.
A kritikus szakasz szabályai
A kritikus szakasznak be kell tartania mindhárom szabályt:
- Kölcsönös kizárás: A kölcsönös kizárás egy speciális típusú bináris szemafor, amelyet a megosztott erőforráshoz való hozzáférés ellenőrzésére használnak. Ez magában foglal egy elsőbbségi öröklődési mechanizmust a kiterjesztett prioritási inverziós problémák elkerülése érdekében. A kritikus szakaszban egyszerre legfeljebb egy folyamat hajtható végre.
- Haladás: Ezt a megoldást akkor alkalmazzák, amikor senki nem szerepel a kritikus szakaszban, és valaki be akar lépni. Ezeknek a folyamatoknak, amelyek nem szerepelnek az emlékeztető szakaszban, el kell dönteniük, hogy kinek kell belépniük, véges idő alatt.
- Kötelezett várakozás: Amikor egy folyamat kérelmet nyújt be a kritikus szakaszba való bejutáshoz, akkor van egy bizonyos korlát, hogy hány folyamat kerülhet be a kritikus szakaszukba. Tehát, amikor elérte a határt, a rendszernek lehetővé kell tennie a folyamat kérését, hogy bekerüljön a kritikus szakaszába.
Megoldások a kritikus szakaszhoz
A folyamatszinkronizálásban a kritikus szakasz játssza a fő szerepet, így a problémát meg kell oldani.
Íme néhány széles körben alkalmazott módszer a kritikus szakasz problémájának megoldására.
Peterson megoldás
Peterson megoldása széles körben alkalmazott megoldás a kritikus szakaszok problémáira. Ezt az algoritmust Peterson informatikus fejlesztette ki, ezért nevezik Peterson megoldásaként.
Ebben a megoldásban, amikor egy folyamat kritikus állapotban fut, akkor a másik folyamat csak a kód többi részét hajtja végre, és ennek az ellenkezője történhet. Ez a módszer segít abban is, hogy a kritikus szakaszban egy adott időpontban csak egyetlen folyamat fusson.
Példa
PROCESS PiFLAG[i] = truewhile( (turn != i) AND (CS is !free) ){ wait;}CRITICAL SECTION FLAG[i] = falseturn = j; //choose another process to go to CS
- Tegyük fel, hogy N folyamat van (P1, P2,… PN), és minden folyamathoz egy bizonyos ponton be kell lépni a kritikus szakaszba
- Az N méretű FLAG [] tömb fennmarad, amely alapértelmezés szerint hamis. Tehát, amikor egy folyamatnak be kell lépnie a kritikus szakaszba, igaznak kell állítania a zászlót. Például, ha Pi be akar lépni, akkor a FLAG [i] = IGAZ értéket állítja be.
- Egy másik TURN nevű változó jelzi a folyamat számát, amely jelenleg a CS-be történő belépéshez vár.
- Az a folyamat, amely a kilépéskor belép a kritikus szakaszba, megváltoztatja a TURN számot a kész folyamatok listájáról.
- Példa: a fordulat 2, akkor a P2 belép a Kritikus szakaszba, és kilépve a = 3 fordulatból, ezért P3 kitör a várakozási körből.
Szinkronizáló hardver
Néha a Kritikus szakasz problémáit hardver is megoldja. Egyes operációs rendszerek olyan zárolási funkciót kínálnak, ahol egy folyamat a Kritikus szakaszba belépve megszerzi a zárat, és elhagyja azt.
Tehát, amikor egy másik folyamat megpróbál belépni a kritikus szakaszba, akkor nem tud belépni, mivel zárolva van. Csak akkor teheti meg, ha szabad, ha megszerzi magát a zárat.
Mutex zárak
A szinkronizáló hardver nem egyszerű módszer mindenki számára, ezért bevezetésre került a Mutex Locks néven ismert szigorú szoftveres módszer is.
Ebben a megközelítésben a kód beviteli szakaszában LOCK-ot kapunk a kritikus szakaszon belül használt kritikus erőforrások felett. A kijárati szakaszban a zár feloldásra kerül.
Szemafor megoldás
A szemafor egyszerűen olyan változó, amely nem negatív és megosztott a szálak között. Ez egy másik algoritmus vagy megoldás a kritikus szakasz problémájára. Ez egy jelzőmechanizmus és egy szemaforon várakozó szál, amelyet egy másik szál jelezhet.
Két atomműveletet használ: 1) várakozást és 2) jelet a folyamat szinkronizálásához.
Példa
WAIT ( S ):while ( S <= 0 );S = S - 1;SIGNAL ( S ):S = S + 1;
Összegzés:
- A folyamatszinkronizálás a folyamatok végrehajtásának összehangolásának feladata, hogy két folyamat ne férhessen hozzá ugyanazon megosztott adatokhoz és erőforrásokhoz.
- A kritikus szakasz négy eleme: 1) Belépési szakasz 2) Kritikus szakasz 3) Kilépés a 4 részből) Emlékeztető rész
- A kritikus szakasz a kód egy olyan része, amelyhez egy jeltovábbítással lehet hozzáférni egy adott időpontban.
- Három kötelező szabály, amelyet a kritikus szakaszon keresztül kell betartani: 1) Kölcsönös kizárás 2) Folyamatmegoldás 3) Kötelezett várakozás
- A kölcsönös kizárás egy speciális típusú bináris szemafor, amelyet a megosztott erőforráshoz való hozzáférés ellenőrzésére használnak.
- A folyamatmegoldást akkor alkalmazzák, amikor senki sem szerepel a kritikus szakaszban, és valaki be akar lépni.
- A kötött várakozási megoldásban, miután egy folyamat kérelmet nyújt be a kritikus szakaszába való belépéshez, van egy korlát, hogy hány más folyamat kerülhet be a kritikus szakaszukba.
- Peterson megoldása széles körben alkalmazott megoldás a kritikus szakaszok problémáira.
- A Kritikus szakasz problémáit a hardver szinkronizálása is megoldja
- A szinkronizációs hardver nem mindenki számára egyszerű módszer, így a Mutex Locks néven ismert szigorú szoftveres módszert is bevezették.
- A szemafor egy másik algoritmus vagy megoldás a kritikus szakasz problémájára.