LINUX.ORG.RU

Семафор это система доступа к критичным участкам кода, не допускающим чтобы с ним работали более одного (в общем случае N) процесса одновременно.

Если мне не изменяет память (на прошлом курсе учил) работает так: процесс дает заявку на использованиенекого рессурса, если там кто-то уже есть, но процесс отправляется в suspend и ждет. Когда процесс занимавший рессурс заканчивает работу, он дает сигнал семафору и тот достает процесс из списка ожидания.

P.S. Если че напутал сильно не ругайте...

svyatogor ★★★★★
()
Ответ на: комментарий от svyatogor

>Семафор это система доступа к критичным участкам кода, не допускающим чтобы с ним работали более одного (в общем случае N) процесса одновременно.
Я бы так сказал: это один из механизмов синхронизации потоков (и процессов).
А под Linux семафор является объектом ядра?
И нет ли у кого-ть книжек Робочевский "ОС UNIX" или Вахалия "UNIX изнутри"?
Спасибо.

anonymous
()

Семафор -- видимая отовсюду целая переменная с атомарными инкрементом и декрементом.

Если кто-то инкрементит ее, то она просто увеличивается.

Если ее декрементит кто-то, то: если она _после_ декремента не меньше нуля, то она просто уменьшается. А вот отрицательной она быть не может. Если какой-либо процесс захочет ее уменьшить так, что она окажется меньше 0, то процесс этот усыпляется до тех пор, пока не будут созданы подходящие условия (т.е. другой процесс не увеличит эту переменную).

Т.о., про семафоры можно думать как про счетчики ресурсов: допустим, мне надо попользовать 5 штук общедоступного ресурса. Я его "забираю", уменьшая на 5 соответствующий семафор, работаю с русурсами, а потом "возвращаю" ресурсы в общую кучу, увеличивая семафор на 5.

Если ресурса мне не хватит, меня усыпят. Как только нужное кол-во ресурсов появится, меня разбудят.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Вот с кем я буду перед экзаменом по ОС консультироваться :)

anonymous
()
Ответ на: комментарий от anonymous

>И нет ли у кого-ть книжек Робочевский "ОС UNIX"
У меня есть, но "бумажная". Если хочешь, вечером
отсканирую про семафоры тебе. (у меня 15:20)

pisun
()
Ответ на: комментарий от pisun

2pisun:
Да не, спасибо, но мне она нужна вся будет. Буду покупать. Ну а как сама книжка? Стоит её брать, или что другое лучше?

anonymous
()
Ответ на: комментарий от anonymous

>Да не, спасибо, но мне она нужна вся будет. Буду покупать.
>Ну а как сама книжка? Стоит её брать, или что другое лучше?
На мой взгляд хорошая книга. В начале описывается история,
стандарты, версии юниксов. Потом описываются принципы работы
с юниксами: комманды, шелл-программирование, пользовательская
среда. Потом значительную часть занимает глава "Среда
программирования Юних" (но вот чтоб освоить эту главу
нужны, на мой взгляд, нормальное знание Си). Дальше афтар
пишет про процессы и их взимодействие, щедро одаривая
кусками кода маленьких приложений. Не оставлены без внимания
файловые системы, не поймёт разве что тупой - очень доступно.
Отдельная глава посвещена программированию сети. Повторюсь,
имхо, книга - маст хэв. Бери - не пожалеешь.

З.Ы. некоторый материал сложноват, но это была моя первая книга
про юниксы, и она мне очень пригодилась.

pisun
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.