Operatsioonisüsteemid: Sünkroniseerimine

Seotud dokumendid
Operatsioonisüsteemide ehitus

OPERATSIOONISÜSTEEMIDE EHITUS Ülevaade Protsessi mõiste Protsesside planeerimine Operatsioonid protsessidega Protsessihaldus Protsesside koostöö Prots

MTAT Operatsioonisüsteemid - protsessid

I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Kons

untitled

Microsoft Word - essee_CVE ___KASVANDIK_MARKKO.docx

(loeng3-ohtlikud_koodiloigud)

Excel Valemite koostamine (HARJUTUS 3) Selles peatükis vaatame millistest osadest koosnevad valemid ning kuidas panna need Excelis kirja nii, et

PHP

AWK Aho Weinberger Kernighan struktuurse teksti töötlemise keel rikkalikult tekstitöötlusvahendeid omal alal suhteliselt lihtne ja kiiresti realiseeri

lvk04lah.dvi

PÄRNU TÄISKASVANUTE GÜMNAASIUM ESITLUSE KOOSTAMISE JUHEND Pärnu 2019

Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimu

SQL

Linux süsteemi administreerimine

Microsoft Word - ref - Romet Piho - Tutorial D.doc

Microsoft Word - Referaat.docx

Loeng03

loeng7.key

Scala ülevaade 1 Meetodid, muutujad ja väärtused. Süntaks 2 Lihtsad tüübid ja väärtused. 3 OOP, case-klassid ja mustrisobitus. 4 Puhta Scala väärtusta

Image segmentation

Funktsionaalne Programmeerimine

Tartu Ülikool Loodus- ja täppisteaduste valdkond Arvutiteaduse instituut Sandra Puusepp CVE Referaat Tartu 2018

Programmeerimiskeel APL Raivo Laanemets 17. mai a.

Matemaatiline analüüs IV 1 3. Mitme muutuja funktsioonide diferentseerimine 1. Mitme muutuja funktsiooni osatuletised Üleminekul ühe muutuja funktsioo

HAJUSSÜSTEEMID HAJUSSÜSTEEMID Kaugprotseduurid IDL kompileerimine ONCIDLnäide CORBAIDLnäide MIDLnäide DCERPCmuidomadusi XML-RPC JSON-RPC REST document

DIGITAALTEHNIKA DIGITAALTEHNIKA Arvusüsteemid Kümnendsüsteem Kahendsüsteem Kaheksandsüsteem Kuueteistkü

SAF 7 demo paigaldus. 1.Eeldused SAF 7 demo vajab 32- või 64-bitist Windows 7, Window 8, Windows 10, Windows Server 2008 R2, Windows Server 2012, Wind

IMO 2000 Eesti võistkonna valikvõistlus Tartus, aprillil a. Ülesannete lahendused Esimene päev 1. Olgu vaadeldavad arvud a 1, a 2, a 3,

Andmed arvuti mälus Bitid ja baidid

Word Pro - diskmatTUND.lwp

loeng2

Neurovõrgud. Praktikum aprill a. 1 Stohhastilised võrgud Selles praktikumis vaatleme põhilisi stohhastilisi võrke ning nende rakendust k

ITI Loogika arvutiteaduses

DNS teenus teoorias ja praktikas Autor Siim Adamson ITK Autor: Siim Adamson ITK

P2P süsteemid

Mida räägivad logid programmeerimisülesande lahendamise kohta? Heidi Meier

Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi

Operatsioonisüsteemide ehitus

PRESENTATION HEADER IN GREY CAPITALS Subheader in orange Presented by Date Columbus is a part of the registered trademark Columbus IT

1. AKE Ajalise keerukuse empiiriline hindamine

Sissejuhatus GRADE metoodikasse

DE_loeng5

E-õppe ajalugu

Pangalingi spetsifikatsioon Pocopay pangalingilt makse algatamiseks tuleb kasutada teenust Kaupmees teeb päringu Pocopayle aadressile

Operatsioonisüsteemi ülesanded

Tartu Ülikool Matemaatika-informaatikateaduskond Matemaatilise statistika instituut Võrgupeo külastaja uurimine Andmeanalüüs I projekt Koostajad: Urma

1 / loeng Tekstitöötlus Sisend/väljund Teksti lugemine Sõnad

Microsoft PowerPoint - loeng2.pptx

BIM360 ja RealityCapture

Funktsionaalne Programmeerimine

Hoia oma arvuti turvaline ja kiire 1.Leia start nupust alustades Juhtpaneel 2.Juhtpaneeli aadressiribalt leia Kõik juhtpaneeli üksused 3.Avanenud tööa

Word Pro - digiTUNDkaug.lwp

Relatsiooniline andmebaaside teooria II. 6. Loeng

Automaatjuhtimise alused Automaatjuhtimissüsteemi kirjeldamine Loeng 2

Peafail3_2.dvi

TARTU ÜLIKOOL LOODUS- JA TÄPPISTEADUSTE VALDKOND ARVUTITEADUSE INSTITUUT Lauri Kongas Turvaauk CVE Referaat aines Andmeturve MTAT Õpp

vv05lah.dvi

Polünoomi juured Juure definitsioon ja Bézout teoreem Vaadelgem polünoomi kus K on mingi korpus. f = a 0 x n + a 1 x n a n 1 x

MTAT Operatsioonisüsteemid - Turvalisus

Antennide vastastikune takistus

Operatsioonisüsteemid 1. loeng

PowerPointi esitlus

MTAT Operatsioonisüsteemid - Turvalisus

SQL

IFI6083_Algoritmid_ja_andmestruktuurid_IF_3

Andmebaasid, MTAT Andmebaasikeeled 11.loeng

Matemaatiline analüüs III 1 4. Diferentseeruvad funktsioonid 1. Diferentseeruvus antud punktis. Olgu funktsiooni f : D R määramispiirkond D R selles p

Pealkiri

Outlookist dokumendi registreerimine Plugina seadistamine Dokumendi registreerimine Outlookist Vastusdokumendi registreerimine Outlookist Outlooki plu

Microsoft Word - Errata_Andmebaaside_projekteerimine_2013_06

(Microsoft PowerPoint - seminar_6_n\365uded-ainemudel tagasiside.ppt [Compatibility Mode])

Mining Meaningful Patterns

Pealkiri

Algoritmid ja andmestruktuurid


Tarkvaraline raadio Software defined radio (SDR) Jaanus Kalde 2017

Microsoft Word - TallinnLV_lihtsustatud_manual_asutuse_juhataja_ doc

TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Infotehnoloogia eriala Roman Jagomägis Programmeerimiskeel privaatsust säilit

Microsoft Word - TM70_SP-MG_kasutusjuhend.docx

Microsoft Word - Keypad-controller-manual-new_1.docx

Microsoft Word - EHR.docx

EDL Liiga reeglid 1. ÜLDSÄTTED 1.1. EDL Liiga toimub individuaalse arvestuse alusel, kus mängijad on jagatud hooaja EDL Liiga tulemuste põhj

HAJUSSÜSTEEMID HAJUSSÜSTEEMID SOAP ja veebiteenused Web Services Web Services SOAP WSDL Ühilduvus UDDI Kihiline arhitektuur masinsuhtluse jaoks erinev

MOOCi „Programmeerimise alused“ ülesannete lahenduste analüüs

Andmeturve

Andmeturve

HAJUSSÜSTEEMID HAJUSSÜSTEEMID Veebiteenused ja SOAP Web Services Web Services SOAP WSDL Ühilduvus UDDI Kihiline arhitektuur masinsuhtluse jaoks erinev

Skriptimiskeeli, mida ei käsitletud Perl Python Visual Basic Script Edition (VBScript) MS DOS/cmd skriptid Windows PowerShell midagi eksootilisemat: G

Elisa Ring Elisa Ringi mobiilirakendus Versioon

Monitooring

GRUPI-SMS Veebirakenduse kasutamise juhend Rakendus Elisa grupi-smsi rakendus Väljaandja Elisa Eesti AS Juhendi koostamise kuupäev Versioon

6 tsooniga keskus WFHC MASTER RF 868MHz & 4 või 6 tsooniga alaseade SLAVE RF KASUTUSJUHEND 6 tsooniga WFHC RF keskus & 4 või 6 tsooniga alaseade SLAVE

E-arvete juhend

Present enesejuhtimine lühi

PowerPoint Presentation

raamat5_2013.pdf

IDA-TALLINNA KESKHAIGLA Statsionaarsete patsientide rahulolu uuring

Väljavõte:

Operatsioonisüsteemid: Sünkroniseerimine Meelis Roos Pelle Jakovits* Arvutiteaduse Instituut Tartu Ülikool 1

Sünkroniseerimine Taust Kriitilise sektsiooni probleem Sünkroniseerimisriistvara Semaforid Klassikalised sünkroniseerimisprobleemid Kriitilised regioonid Monitorid Näited: Solaris, Windows, Linux 2

Taust Paralleelne juurdepääs jagatud mälule võib andmeid sodida Andmete konsistentsena hoidmiseks on vaja mehhanismi, et koostööd tegevaid protsesse õiges järjekorras täita Jagatud mälu puhver n 1 kirjega oli lihtne, n kirjega veidi keerulisem Näiteks lisame juurde loenduri (näitab, mitu elementi puhvris on, algul 0) 3

Näide: seesama piiratud puhver #define BUFFER_SIZE 10 typedef struct {... } item; item buffer[buffer_size]; int in = 0; int out = 0; int counter = 0; 4

Näide: piiratud puhver tootja protsess item nextproduced; while (1) { while (counter == BUFFER_SIZE) ; /* do nothing */ buffer[in] = nextproduced; in = (in + 1) % BUFFER_SIZE; counter++; } 5

Näide: piiratud puhver tarbija protsess item nextconsumed; while (1) { while (counter == 0) ; /* do nothing */ nextconsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; counter--; } 6

Atomaarsed operatsioonid counter++ ja counter-- tuleb täita atomaarselt Atomaarne operatsioon on operatsioon, mis tehakse ära korraga ilma katkestamata Laused counter++ ja counter-- võidakse kumbki realiseerida kolme masinkäsuna: register1 = counter register2 = counter register1 = register1 + 1 register2 = register2-1 counter = register1 counter = register2 Sellised käsujadad erinevates protsessides võivad üksteisega vahelduda kasvõi 1 käsu kaupa Mis on tulemus, kui counter = 5, üks protsess teeb counter++ ja teine samal ajal counter-- kas 4, 5 või 6? 7

Võidujooks ja kriitiline sektsioon Võidujooks (race condition) situatsioon, kus andmete kasutamisel mitme protsessi poolt korraga sõltub tulemus ajalistest teguritest Võidujooksude vastu aitab protsesside sünkroniseerimine Olgu meil n protsessi võistlemas samade jagatud andmete pärast Iga protsessi koodisegmendist mingi jupp on kriitiline see jupp, kus tegeldakse jagatud andmetega Probleem: kindlustada, et kui üks protsess täidab oma kriitilist sektsiooni, siis teised protsessid ei saa oma kriitilisi sektsioone täita 8

Kriitilise sektsiooni probleemi lahendus 1. Vastastikune välistamine kui protsess P täidab oma kriitilist sektsiooni, siis ükski teine protsess ei tohi oma kriitilist sektsiooni täita 2. Progress kui ükski protsess ei täida oma kriitilist sektsiooni ja leidub mingi protsess, mis soovib siseneda kriitilisse sektsiooni, siis kriitilisse sektsiooni siseneva protsessi valikut ei saa lõpmatuseni edasi lükata. 3. Piiratud ootamine peab leiduma ülempiir sellel kordade arvul, mitu korda muud protsessid sisenevad kriitilisse sektsiooni sel ajal, kui protsess on avaldanud soovi kriitilisse sektsiooni siseneda ning seda soovi pole veel täidetud. Eeldame, et iga protsess edeneb nullist suurema kiirusega Protsesside omavahelise suhtelise kiiruse kohta mingeid eeldusi ei tee 9

Lahenduse kandidaate Eeldame ainult 2 protsessi P 0 ja P 1 Protsessi P i üldine skeem (teine protsess on P j ) do { sisenemise sektsioon kriitiline sektsioon väljumise sektsioon ülejäänud sektsioon } while (1); 10

Kandidaat-algoritm 1 Jagatud muutujad: int turn = 0 (näitab, mitmes protsess võib kriitilisse sektsiooni minna) Protsess P i : do { while (turn!= i) ; critical section turn = j; reminder section } while (1); Rahuldab vastastikuse välistamise tingimust, aga mitte progressi tingimust 11

Kandidaat-algoritm 2 Jagatud muutujad: boolean flag[2]; Algselt flag [0] = flag [1] = false flag [i] = true P i on valmis sisenema kriitilisse sektsiooni Protsess P i : do { flag[i] = true; while (flag[j]) ; critical section flag[i] = false; reminder section } while (1); Rahuldab vastastikuse välistamise tingimust, aga mitte progressi tingimust 12

Kandidaat-algoritm 3 Jagatud muutujad: mõlema eelmise algoritmi omad Protsess P i : do { flag [i] = true; turn = j; while (flag [j] and turn = j) ; critical section flag [i] = false; reminder section } while (1); Rahuldab kõiki meie tingimusi 13

Pagari algoritm Kriitiline sektsioon n protsessi jaoks Enne kriitilisse sektsiooni sisenemist saab iga protsess numbri Vähima numbri saanu siseneb kriitilisse sektsiooni Võib juhtuda, et protsessid Pi ja Pj saavad sama numbri Sel juhul teenindatakse protsessi, mille nimi (i või j) on väiksem See skeem garanteerib alati monotoonselt mittekahaneva järjestuse: näiteks 1,2,3,3,3,3,4,5... Jagatud muutujad: boolean choosing[n]; (initsialiseeritakse choosing[k]=false) int number[n]; (initsialiseeritakse number[k]=0) 14

Pagari algoritm protsessile P i do { choosing[i] = true; number[i] = max(number[0], number[1],..., number [n-1])+1; choosing[i] = false; for (j = 0; j < n; j++) { while (choosing[j]) ; while ((number[j]!= 0) && ((number[j],j) < (number[i],i))); } critical section number[i] = 0; remainder section } while (1); 15

Sünkroniseerimisriistvara Atomaarne kontroll + omistamine: boolean TestAndSet(boolean &new) { boolean rv = new; new = true; return rv; } Atomaarne vahetamine: void Swap(boolean &a, boolean &b) { boolean temp = a; a = b; b = temp; } 16

Atomaarse operatsiooni kasutamine Jagatud muutujad: boolean lock = false; Protsess P i : do { while (TestAndSet(lock)) ; critical section lock = false; reminder section } while (1); 17

Semaforid Sünkroniseerimisvahend, mis ei vaja kogu ooteajaks hõivatud ootamist (busy wait) Semafor S täisarvuline muutuja Ainsaks kasutusviisiks on kaks atomaarset operatsiooni: Semafori võtmine (vajadusel ootamisega): wait(s) { while (S<=0) do ; S--; } Semafori lahti laskmine: signal (S) { S++; } 18

Kriitiline sektsioon mitme protsessiga Jagatud muutujad: semaphore mutex = 1 Protsess P i : do { wait(mutex); critical section signal(mutex); remainder section } while (1); 19

Semafor kui üldine sünkroniseermisvahend Tahame, et operatsioon B protsessis P j täidetaks alles pärast operatsiooni A täitmist protsessis P i Kasutame semafori (flag), initsialiseerime ta 0-ks Pseudokood: 20

Semafori realiseerimine (1) Defineerime semafori kui struktuuri typedef struct { int value; struct process *L; } semaphore; Kasutame kahte lihtsat operatsiooni: block() blokeerib seda kasutava protsessi wakeup(p) jätkab blokeeritud protsessi P 21

Semafori realiseerimine (2) Defineerime semafori operatsioonid nüüd nii: Vajame endiselt atomaarsust Atomaarsuses saavutame lühikese hõivatud ootamisega Ise hõivatud ootamist ei kasuta 22

Tupikud ja näljutamine Tupik kaks või enam protsessi ootavad lõpmatult sündmust, mida saaks põhjustada ainult mingi teine ootav protsess Olgu S ja Q kaks semafori (algväärtusega 1) wait(s) wait(q) wait(q) wait(s)...... signal(s) signal(q) signal(q) signal(s) Näljutamine lõpmatu blokeerimine, kus mingi protsess jääb igaveseks semafori järjekorda (näiteks LIFO järjekord ja suur koormus) 23

Semaforide tüübid Loendav semafor täisarv võib suvalisi väärtusi võtta Binaarne semafor täisarv võib olla ainult 0 või 1 (kohati lihtsamini realiseeritav) mutex binaarne semafor vastastikuseks välistamiseks Loendavat semafori saab realiseerida binaarsete semaforide abil: Andmestruktuurid: binary-semaphore S1 = 1, S2 = 0; int C; C algväärtuseks olgu S algväärtus 24

Loendav semafor binaarsetest semaforidest wait(s): wait(s1); C--; if (C < 0) { signal(s1); wait(s2); } signal(s1); signal(s): wait(s1); C++; if (C <= 0) signal(s2); else signal(s1); 25

Klassikalised sünkroniseerimisprobleemid Piiratud puhver Fikseeritud pikkusega massiiv elementidest, tootja ja tarbija Lugejad ja kirjutajad Üks (atomaarselt mitte kasutatav) andmestruktuur Lugejad ja kirjutajad Mitu lugejat saab korraga olla, kirjutaja tahab üksi olla Einestavad filosoofid Palju ressursse, palju kasutajaid, iga kasutaja kasutab mitut ressurssi 26

Piiratud puhver semaforidega (1) Jagatud muutujad: semaphore full=0, empty=n, mutex=1; Tootja: do {... produce an item in nextp... wait(empty); wait(mutex);... add nextp to buffer... signal(mutex); signal(full); } while (1); 27

Piiratud puhver semaforidega (2) Tarbija protsess: do { wait(full) wait(mutex);... take an item from buffer to nextc... signal(mutex); signal(empty);... consume the item in nextc... } while (1); 28

Lugejad-kirjutajad (1) Jagatud muutujad: semaphore mutex=1, wrt=1; int readcount=0; Kirjutaja: wait(wrt);... writing is performed... signal(wrt); 29

Lugejad-kirjutajad (2) Lugeja: wait(mutex); readcount++; if (readcount == 1) wait(wrt); signal(mutex);... reading is performed... wait(mutex); readcount--; if (readcount == 0) signal(wrt); signal(mutex); 30

Einestavad filosoofid 5 filosoofi ümber laua Iga filosoof mõtleb ja sööb vaheldumisi Riisi söömiseks on vaja pulki kummaltki poolt 31

Filosoofide algoritm Jagatud andmed: semaphore chopstick[5]; (algselt 1) Filosoofi P i algoritm: do { wait(chopstick[i]) wait(chopstick[(i+1) % 5])... eat... signal(chopstick[i]); signal(chopstick[(i+1) % 5]);... think... } while (1); 32

Kriitilised regioonid Semaforide kasutamine on keerukas mis saab, kui programmeerija kasutab wait+signal asemel signal+wait, wait+wait, signal+signal kogemata või unustab ühe üldse ära? Kriitiline regioon kõrgema taseme sünkroniseerimiskonstruktsioon (peaks olema lollikindlam) Jagatud muutuja defineerimine: v: shared T Muutujat v kasutatakse ainult konstruktsioonis: region v when B do S (kus B on tõeväärtusavaldis) S täitmise ajal ei saa teised protsessid kasutada muutujat v Täitmine blokeerub lisaks ka seni, kuni avaldis B täidetuks saab Näide: Java synchronized() 33

Näide: puhver kriitiliste regioonidega (1) Jagatud andmed: struct buffer { int pool[n]; int count, in, out; } Tootja: region buffer when (count < n) { pool[in] = nextp; in = (in + 1) % n; count++; } 34

Näide: puhver kriitiliste regioonidega (2) Tarbija: region buffer when (count > 0) { nextc = pool[out]; out = (out + 1) % n; count--; } Kriitiliste regioonide teostus: näiteks mutex + semaforid tingimuse ootamiseks ja B taasväärtustamiseks 35

Monitorid Kah kõrgema taseme sünkroniseerimiskonstruktsioon Laseb jagada operatsioone erinevate protsesside vahel monitor monitor-name { shared variable declarations procedure body P1 (...) {... } procedure body Pn (...) {... } { initialization code } } 36

Tingimusmuutujad Et protsess saaks oodata monitoris, on vaja kasutada tingimusmuutujaid: condition x, y; Tingimusmuutuja lihtsustab mingi tingimuse tõeseks saamise kontrollimist Tingimusmuutuja ainsateks operatsioonideks on wait() ja signal(): x.wait() tähendab, et protsess blokeerub, kuni mõni teine protsess kutsub välja x.signal() x.signal() tähendab, et äratatakse täpselt üks x taga ootel olev protsess. Kui selliseid pole, siis ei tehta midagi (võrdle semaforiga!) Monitoris tekib ootel protsesside järjekord. Järjekorras saab kasutada prioriteete wait(c) 37

Ilma lukkudeta läbi ajamine Protsessid ootavad lukkude taga, lukud ise kulutavad ka aega tahaks ilma hakkama saada Locking cliff (Larry McVoy) lukkudega on üle pingutatud, kui süsteemis on lihtsam lisada uus lukk kui välja mõelda, kas mõni olemasolev lukk piisav on Atomaarsed muutujad Atomaarsed operatsioonid Atomaarne vahetamine ning võrdlemine koos vahetamisega, näiteks CMPXCHG8B, CAS Igale protsessorile oma koopia andmetest (per-cpu data) Lukustamist mitte vajavad algoritmid Näide: RCU Read-Copy-Update) Mälubarjäärid (mb(), rmb(), wmb()) 38

RCU Mitme protsessori vahel jagatud andmete lugemiseks ilma lukkudeta Andmete muutmisel tekitatakse uus kirje ja pannakse globaalne viit sellele viitama Vanad kirjed, millele enam ei viidata, jäävad mõneks ajaks alles ja nendel kasutatakse spetsiifilist prügikoristuse viisi Linuxis on selleks prügikoristuse kohaks schedule() RCU andmed tuleb lahti lasta kontekstivahetuse ajaks, siis koristatakse need automaatselt 39

Näide: Solaris Realiseerib mitmeid erinevaid tüüpe lukke, et toetada paljusid protsesse, paljusid lõimi (ka reaalajalõimi) ja paljusid protsessoreid. Kasutab adaptiivseid mutexeid (busy wait mitme protsessori korral, blokeerumine ühe protsessori korral) lühikeste koodilõikude üksteise eest kaitsmiseks Kasutab tingimusmuutujaid ja lugemis-kirjutamislukke pikemate koodilõikude jaoks 40

Näide: Solarise turnstile id Kasutab lukkude (adaptiivse mutexi ja rwlock i) juures lõimede nimekirju (turnstiles), et meeles pidada luku järel ootavaid lõimi (+prior. pärimine) Turnstile id pole seotud iga objektiga, vaid ainult nendega, kus on ootajaid Igal lõimel on oma turnstile. Kui ta on luku juures esimene blokeeruja, annab ta oma turnstile i lukule ja kui vabaneb, saab tagasi. Kui keegi teine tema vabanemisel järjekorda jääks, siis antakse talle asemele kasutamata vaba turnstile. 41

Näide: Windows Kasutab katkestuste maske üheprotsessorisüsteemidel ja spin-lukke (ingl. spinlock) mitmeprotsessorisüsteemidel Luku hoidjat välja ei tõrjuta Dispetšerobjektid tuumaväliste lõimede sünkroniseerimiseks (käituvad nagu mutexid või semaforid) Dispetšerobjektid võimaldavad kasutada ka sündmusi (event) lõimedele soovitud tingimustest teatamiseks (sarnane tingimusmuutujatele) Dispetšerobjektid on kas signaliseeritud (vabad) või signaliseerimata (kasutamisel lõim blokeeruks) olekus Dispetšerobjektil blokeeruv lõim läheb objekti ootejärjekorda Objekti oleku muutusel signaliseerituks äratatakse järjekorrast üks (näiteks mutexil) või mitu (näiteks sündmusel) lõime 42

Näide: Linux Kaks põhilist tüüpi lukke: spin-lukud ja semaforid Spin-lukud kompileeritakse üheprotsessorilise tuuma puhul kui NO-OP Semaforidel on järjekord blokeerunud protsessidest Semafore kasutatakse tavaliselt mutexina Lisaks oli vanasti kasutusel BKL (Big Kernel Lock) rekursiivne, tänapäeval eemaldatud RCU on kasutusel dentry cache, IPv4 ruutinguvahemälu, moodulite nimekirja, failideskriptorite nimekirja, protsessorite kuumvahetuse juures ja mujal 43