Translate

вторник, 9 апреля 2013 г.

Глава 2

Вопрос 10 Приведите пример условия гонок, которое возможно при покупке двумя пассажирами билета на один и тот же самолет.

Предположим, что два пассажира (П1 и П2) одновременно подошли к разным кассам чтобы купить билеты на один и тот же рейс и одно и то же место. Кассир К1 проверяет в базе данных, не продан ли билет, и одновременно с этим кассир К2 делает то же самое. Оба они убеждаются в том, что место свободно и продают билеты. Предположим, что кассир К1 сделал это быстрее и занес в базу данных информацию о том, что он продал билет пассажиру П1, после чего кассир К2 сделал то же самое. В итоге пассажир П1 никуда не улетит. Повторные проверки не решат проблему, т.к. никто не гарантирует, что другой пассажир не будет занесен в базу данных сразу после дополнительной проверки.

Глава 2

Вопрос 9. Что такое условия гонок?

Гонки возникают когда несколько процессов или потоков одновременно обращаются к общим ресурсам и этот доступ не ограничен.

Глава 2

Вопрос 8. Если в системе используются программные потоки, выделяется ли каждому из них собственный стек или стеки имеются лишь у процессов? Поясните ответ.

Стек необходимо выделять каждому программному потоку, т.к. каждый поток выполняет собственный код, соответственно вызывает собственные процедуры, а т.к. для корректного вызова процедур нужен собственный стек, то каждому потоку его нужно выделять индивидуально.

понедельник, 8 апреля 2013 г.

Глава 2

Вопрос 7. В чем заключается фундаментальное различие между процессом и программным потоком?

Процессы - это механизм группировки ресурсов, а программные потоки - элементы, исполняемые центральным процессором по определенному плану.

Глава 2

Вопрос 6. В тексте утверждалось, что модель, представленная на рисунке 2.4, а, подходит для файлового сервера с кэшем в памяти. Почему? Может ли процесс иметь собственный кэш?

Глава 2

Вопрос 4. На всех существующих компьютерах как минимум часть обработчиков прерываний написана на ассемблере. Почему?

Дело в том, что для того, чтобы обработать прерывание нужно оперировать с регистрами, а это невозможно написать на языке высокого уровня.

среда, 3 апреля 2013 г.

Глава 2

Вопрос 5. Измените рис. 2.2, добавив в него два состояния процесса - "новый" и "завершенный". Процесс находится в состоянии "новый" после создания, а в состоянии "завершенный" - после  окончания своей работы.

Ниже приведен рисунок, на котором показано, как, предположительно, будет выглядеть такая ситуация. Новый процесс переходит в состояние готовности и ждет, когда планировщик выберет его для запуска. Завершиться процесс может либо во время действия (нормальное завершение, или завершение вследствие ошибки) а так же он может быть уничтожен другим процессом, будучи в состоянии блокировки или готовности.

Глава 2

Вопрос 3.  Представьте, что вы разрабатываете усовершенствованную компьютерную архитектуру, в которой процессы переключаются аппаратно, а не с помощью прерываний. Какая информация потребуется процессору? Опишите возможную реализацию аппаратного переключения процессов.

Для переключения процессов процессору понадобится информация, хранимая в таблице процессов. В частности, ему нужно восстановить состояние процесса в точности в таком же виде, в котором он находился до переключения в состояние готовности (блокировки). Можно предложить следующие шаги (дальше подразумевается, что все операции совершают аппаратные средства):
  1. Из структуры, хранящей информацию о выполняемом в данный момент процессе копируется адрес, по которому находится запись  в таблице процессов о текущем процессе. Далее информация о выполняемом процессе (регистры, счетчики команд и стека, слово состояния программы) сохраняется в таблице процессов в ячейке с полученным ранее адресом.
  2. Теперь производятся обратные действия - компьютер запоминает адрес ячейки с новым запущенным процессом, затем копирует из нее данные в регистры процессора.
  3. Наконец управление передается процессу.