Главная » Просмотр файлов » Э. Таненбаум - Архитектура компьютера

Э. Таненбаум - Архитектура компьютера (1127755), страница 127

Файл №1127755 Э. Таненбаум - Архитектура компьютера (Э. Таненбаум - Архитектура компьютера) 127 страницаЭ. Таненбаум - Архитектура компьютера (1127755) страница 1272019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 127)

Согласно теории относительности Эйнштейна скорость передачи электрических сигналов не может превышать скорость света, которая равна примерно 1 фут/нс в вакууме, а в медном проводе или оптическом волокне — еще меньше. При разработке компьютеров важно учитывать этот предел. Например, если процессору нужны данные из основной памяти, которые находятся на расстоянии 1 фута от него, потребуется по крайней мере 1 нс, чтобы запрос дошел до памяти, и еще 1 нс, чтобы ответ вернулся к центральному процессору. Следовательно, чтобы компьютеры могли передавать сигналы быстрее, они (компьютеры) должны быть совершенно крошечными.

Альтернативный способ повышения быстродействия компьютера — создание машины с несколькими процессорами. Компьютер, содержащий 1000 процессоров с временем цикла 1 нс каждый, будет иметь такие же возможности, как процессор с временем цикла 0,001 нс, но первый реализовать гораздо проще и дешевле. В компьютере с несколькими процессорами каждый из взаимодействующих процессов можно приписать какому-то определенному процессору, чтобы выполнять несколько действий одновременно. Если же в компьютере имеется только один процессор, эффект параллельной работы можно смоделировать.

Для этого процессы могут выполняться по очереди, каждый по очень короткому промежутку времени. Иными словами, процессор будет совместно использоваться несколькими процессами. На рис. 6.21 показана разница между реальной параллельной работой, когда физически существуют несколько процессоров, и смоделированной параллельной работой, когда физически имеется всего один процессор.

Даже если параллелизм моделируется, удобно считать, что каждому пропессу приписан собственный виртуальный процессор. При смоделированной параллельной работе возникают те же проблемы, что и при реальной. Виртуальные команды для параллельной работы 509 Процесс 3 находится в состоянии ожидания Процесс 3 Процесс 2 Процесс 1 Время Время б Рио. 6.21. Параллельная работа на нескольких процессорах (а); моделирование параллельной работы трех процессов путем переключения единственного процессора с одного процесса на другой (б) Формирование процесса Готовая программа подготовлена к выполнению, она должна запускаться как часть какого-либо процесса.

Этот процесс, как и все другие процессы, характеризуется состоянием и адресным пространством, через которое можно получить доступ к программам и данным. Информация о состоянии включает как минимум счетчик команд, слово состояния программы, указатель стека и регистры общего назначения. Большинство современных операционных систем позволяют формировать и прерывать процессы динамически. Для формирования нового процесса требуется системный вызов.

Этот системный вызов может просто создать клон вызывающей программы или позволить исходному процессу задать начальное состояние нового процесса, включая его программу, данные и начальный адрес. В одних случаях исходный (родительский) процесс может сохранять частичный или даже полный контроль над порожденным (дочерним) процессом. Виртуальные команды позволяют родительскому процессу останавливать и снова запускать, проверять и завершать дочерние процессы. В других случаях исходный процесс никак не контролирует дочерний процесс: после того как новый процесс сформирован, исходный процесс не может его остановить, запустить заново, проверить или завершить. Таким образом, эти два процесса работают независимо друг от друга.

Состояние гонок Во многих случаях параллельные процессы должны взаимодействовать, тогда их нужно синхронизировать. В этом подразделе мы рассмотрим синхронизацию и некоторые связанные с этим проблемы. Способы разрешения этих проблем будут представлены в следующем разделе. 510 Глава 6.

Уровень операционной системы 1и 1и Ои! Оц1 1и 1и 1и Оц! Оц! 1и, оо! а Оц! Рио. 6.22. Кольцевой буфер В листинге 6.1 показано решение задачи с производителем и потребителем на языке 1ача. Здесь имеется три класса: в, ргобцсег и соизцвег. Класс в содержит некоторые константы, указатели буфера 1и и оц1 и сам буфер, который в нашем примере вмещает 100 простых чисел (от Ь_#_уегг03 до ЬФ1егг993). Для моделирования параллельных процессов в данном случае используются программньге потоки (ьпгеа!)з).

У нас есть классы ргобисег и сопзввег, которым приписываются значения переменных р и с соответственно. Каждый из этих классов образуется из базового класса ТЬгеаб. Метод гоп этого класса содержит Рассмотрим два независимых процесса, процесс 1 и процесс 2, которые взаимодействуют через общий буфер в основной памяти. Для простоты будем называть процесс 1 производителем (ргоопсег), а процесс 2 — потребителем (сопзшпег).

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

Когда потребитель удаляет число из буфера, он посылает сигнал производителю, чтобы тот возобновил работу. Если потребитель обнаруживает, что буфер пуст, он приостанавливает работу. Когда производитель помещает число в пустой буфер, он посылает соответствующий сигнал потребителю. В нашем примере для взаимодействия процессов мы задействуем кольцевой буфер. Указатели 1и и оцв используются следующим образом: !и указывает на следующее свободное слово (куда производитель сможет поместить очередное число), а оиС вЂ” на следующее число, которое должен извлечь потребитель. Если 1и = ои1, буфер пуст, как показано на рис. 6.22, а.

На рис. 6.22, б показана ситуация после того, как производитель сгенерировал несколько чисел. На рис. 6.22, в изображен буфер после того, как потребитель извлек из него несколько чисел для печати. На рис. 6.22, г — е представлены промежуточные этапы работы буфера. Буфер заполняется циклически. Если в буфер отправлено слишком много чисел, и он начинает заполняться по второму кругу (снизу), а под адресом ай есть только одно свободное слово (например, 1и = 52, а оцт = 53), буфер заполнится. Последнее слово не используется; в противном случае не было бы возможности сообщить, что именно значит равенство !и = оцС, полный буфер или пустой.

Виртуальные команды для параллельной работы 51 1 код программного потока. Когда вызывается метод зСагС для обьекта, производ- ного от класса Т)тгеаб, запускается новый поток. Листинг 6.Т. Параллельная работа в условиях гонок рцЫ тс с1азз в [ Ппа1 рцЫ1с вСаыс 1пС ВОР 512Е = 100; // буфер от 0 до 99 Ттпа! рцЫ тс зтаС1с 1опд МЯХ Рй!МЕ = 100000000000Ы П остановиться здесь рцЫ тс зсаттс тпС тп = О.

оцС = 0 П указатели на данные рцЫ 1с зсаС1с 1опд Ьцтгег[ ] = пеи 1опд[ВОР 512Е]; П числа хранятся здес~ рцЫ тс зтаС1с ргобасег р; П иня производителя рцЫ тс зсаС1с сопзавег с; П иня потребителя рцЫ тс зСаС1с чотб ва1п(5Сгтпд агдз[ ])( // основной класс р = пеы ргобасег ): // создание производителя с = пеы сопвцвег ): П создание потребителя р.зсагС(): П запуск производителя с.зтагС(); П запуск потребителя П Это утилита для циклического увеличения 1и и оцС рцЫ 1с зсаС1с тпС пехС(1пС Х) ( тт (Х < ВОР 512Е - 1) гетцгп(Х + 1); е1зе гетцгп(0).

с1азз ргобцсег ехтепбз Тпгеаб ( рцЫ тс чо10 гап() ( 1ап9 рг1ве 2; П класс производителя П код производителя // вреиенная перененная ргтчасе 1опд пехС рыжее(1опд ргтве)( ... ) П функция. вычисляющая П следующее число с)азз сопзавег ехСепбз Тпгеаа ( рцЫ 1с ча10 гцп() ( 1опд ев1гр = 2; П класс потребителя П код потребителя // врененная перененная Каждый программный поток похож на процесс. Единственным отличием является то, что все потоки в пределах одной Дача-программы находятся в едином адресном пространстве. Это позволяет им разделять один общий буфер.

Если в компьютере имеется два и более процессора, каждый поток может выполняться ым 1е (рг1ве < в.МАХ Рй!МЕ) ( рыве = пехС рг1ве(ргтве): 1С (в.пехС(в.тп) == в.оаС) задрепа(): в. Ьцттег[в, тп] = рг1ве: в.тп = в.пехС(в.тп); тт Ия.пехт(в.оцс) — в тп) в.с.геьаве() ) кп11е (евтгр < в.МЯХ Рй!МЕ) ( 11 (в.1п == в.оаС) задрепа(): евп'гр - в.бцт[ег[в.оаС]: в.оцС = в.пехС(в.оцС); 1[ Ив.ацС == в.пехС(в.пехС(в.1п))) в.р 5увтев.оцс.рп'пС1п(ев!гр): // оператор Р1 // оператор Р2 П оператор РЗ П оператор Р4 П оператор Р5 П оператор С1 П оператор С2 П оператор СЗ гезцве(): П оператор С4 П оператор С5 512 Глава 6.

Уровень операционной системы на собственном процессоре, поэтому в данном случае имеет место реальный параллелизм. Если компьютер содержит только один процессор, потоки разделяются во времени на одном процессоре. Мы будем продолжать называть производителя и потребителя процессами (поскольку нас в данный момент интересуют параллельные процессы), хотя ) ача поддерживает параллелизм только на уровне программных потоков, а не «настоящих» процессов. Функция пех1 позволяет увеличивать значения 1п и ои1, при этом не нужно каждый раз писать код, чтобы проверять условие окончания цикла. Если параметр в пех1 равен 98 или ниже, то возвращается следующее по порядку целое число.

Характеристики

Тип файла
DJVU-файл
Размер
13,7 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6473
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее