Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.363


Таненбаум Э.- Архитектура компьютера. стр.363

System.out.println(emirp); // оператор C5

}

}

}

Операции с семафорами неделимы. Если операция с семафором уже началась, то никакой другой процесс не может использовать этот семафор до тех пор,

пока первый процесс не завершит операцию или пока он не будет приостановлен. Более того, при наличии семафоров сигналы запуска не пропадают. А вот операторы if в листинге 6.1 делимы. Между проверкой условия и выполнением нужного действия другой процесс может послать сигнал запуска.

В сущности, проблема синхронизации была решена путем введения неделимых системных вызовов up и down. Чтобы эти операции были неделимыми, операционная система должна запретить двум и более процессам использовать один и тот же семафор одновременно. То есть если делается системный вызов up или down, никакой пользовательский код не может быть запущен, пока вызов не завершится. Как правило, в однопроцессорных системах для этого во время выполнения операций с семафорами вводится запрет на прерывания. В мультипроцессорных системах этот прием не проходит.

Технология семафоров работает для произвольного количества процессов. Несколько процессов могут приостановиться, пытаясь выполнить системный вызов down для одного и того же семафора. Когда какой-нибудь другой процесс выполнит системный вызов up для этого же семафора, один из приостановленных процессов может завершить вызов down и продолжить работу. В этом случае семафор сохранит значение 0, и другие процессы останутся приостановленными.

Поясним ситуацию на другом примере. Представьте себе 20 волейбольных команд, играющих 10 партий (процессов). Каждая игра проходит на отдельном поле. Имеется большая корзина (семафор) для волейбольных мячей. К сожалению, мячей только 7. В каждый момент в корзине находится от 0 до 7 мячей (семафор принимает значение от 0 до 7). Помещение мяча в корзину — это операция up, поскольку она увеличивает значение семафора. Извлечение мяча из корзины — это операция down, поскольку она уменьшает значение семафора.

В самом начале один игрок от каждого поля посылается к корзине за мячом. Семерым из них удается получить мяч (завершить операцию down); оставшиеся трое вынуждены ждать. Их игры временно приостановлены. В конце концов, одна из партий заканчивается, и мяч возвращается в корзину (выполняется операция up). Эта операция позволяет одному из трех оставшихся игроков получить мяч (закончить незавершенную операцию down) и продолжить игру. Оставшиеся две партии остаются приостановленными до тех пор, пока еще два мяча не возвратятся в корзину. Когда эти два мяча попадут в корзину (то есть выполнятся еще две операции up), можно будет продолжить последние две партии.

Примеры операционных систем

В этом разделе мы продолжим обсуждать процессоры Pentium 4 и UltraSPARC III и рассмотрим операционные системы, которые используются в этих процессорах. Для Pentium 4 мы возьмем Windows ХР; для UltraSPARC III — UNIX. А начнем мы наш разговор с UNIX, поскольку эта система гораздо проще Windows ХР. Кроме того, операционная система UNIX была разработана раньше и значительно повлияла на Windows ХР, поэтому такой порядок изложения вполне логичен.


⇐ Предыдущая страница| |Следующая страница ⇒

.