O perating s ystems t hree e asy p ieces



Download 3,96 Mb.
Pdf ko'rish
bet217/384
Sana01.01.2022
Hajmi3,96 Mb.
#286329
1   ...   213   214   215   216   217   218   219   220   ...   384
Bog'liq
Operating system three easy pease

References

[B97] “Programming with POSIX Threads”

David R. Butenhof

Addison-Wesley, May 1997

Another one of these books on threads.

[B+96] “PThreads Programming:

A POSIX Standard for Better Multiprocessing”

Dick Buttlar, Jacqueline Farrell, Bradford Nichols

O’Reilly, September 1996

A reasonable book from the excellent, practical publishing house O’Reilly. Our bookshelves certainly

contain a great deal of books from this company, including some excellent offerings on Perl, Python, and

Javascript (particularly Crockford’s “Javascript: The Good Parts”.)

[K+96] “Programming With Threads”

Steve Kleiman, Devang Shah, Bart Smaalders

Prentice Hall, January 1996

Probably one of the better books in this space. Get it at your local library.

[X+10] “Ad Hoc Synchronization Considered Harmful”

Weiwei Xiong, Soyeon Park, Jiaqi Zhang, Yuanyuan Zhou, Zhiqiang Ma

OSDI 2010, Vancouver, Canada

This paper shows how seemingly simple synchronization code can lead to a surprising number of bugs.

Use condition variables and do the signaling correctly!

c

 2014, A



RPACI

-D

USSEAU



T

HREE


E

ASY


P

IECES




28

Locks


From the introduction to concurrency, we saw one of the fundamental

problems in concurrent programming: we would like to execute a series

of instructions atomically, but due to the presence of interrupts on a single

processor (or multiple threads executing on multiple processors concur-

rently), we couldn’t. In this chapter, we thus attack this problem directly,

with the introduction of something referred to as a lock. Programmers

annotate source code with locks, putting them around critical sections,

and thus ensure that any such critical section executes as if it were a sin-

gle atomic instruction.

28.1 Locks: The Basic Idea

As an example, assume our critical section looks like this, the canonical

update of a shared variable:

balance = balance + 1;

Of course, other critical sections are possible, such as adding an ele-

ment to a linked list or other more complex updates to shared structures,

but we’ll just keep to this simple example for now. To use a lock, we add

some code around the critical section like this:

1

lock_t mutex; // some globally-allocated lock ’mutex’



2

...


3

lock(&mutex);

4

balance = balance + 1;



5

unlock(&mutex);

A lock is just a variable, and thus to use one, you must declare a lock

variable

of some kind (such as mutex above). This lock variable (or just

“lock” for short) holds the state of the lock at any instant in time. It is ei-

ther available (or unlocked or free) and thus no thread holds the lock, or




Download 3,96 Mb.

Do'stlaringiz bilan baham:
1   ...   213   214   215   216   217   218   219   220   ...   384




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish