Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Сегментная и страничная организация памяти сегментная организация виртуальной памяти




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

Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, а s — смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.

Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.

 

29.Аппаратная поддержка многозадачности и прерываний Для персональных ЭВМ многозадачность не вводилась принципиально. Ведь

исходя из названия PC – “Personal Computer” предполагалось, что работать

будет один человек с одной текущей задачей. В качестве операционной системы

была принята переработанная система CP/M под названием MS-DOS. Она так же

не предусматривала многозадачности. Основная проблема разработки

многозадачной операционной системы это не реентерабильность ее функций. То

есть если один процесс запустил функцию чтения файла, то другой процесс не

сможет не только обращаться к файлам, но и вообще вызвать другие ее

функции. Для этого необходима поддержка на уровне процессора которая была

введена с разработкой линейки 286.

 

Многозадачность и многопоточность 1

 

Режимы многозадачности 2

Многозадачность в DOS 2

Невытесняющая многозадачность 3

Presentation Manager и последовательная очередь сообщений 6

Решения, использующие многопоточность 7

Многопоточная архитектура 9

Коллизии, возникающие при использовании потоков 10

Преимущества Windows 11

Новая усовершенствованная многопоточная программа 13

О использовании функции Sleep 13

Критический раздел 14

Объект Mutex 17

Уведомления о событиях 18

Локальная память потока 18

 

Многозадачность и многопоточность

 

 

Многозадачность (multitasking) – это способность операционной системы

выполнять несколько программ одновременно. В основе этого принципа лежит

использование операционной системой аппаратного таймера для выделения

отрезков времени (time slices) для каждого из одновременно выполняемых

процессов. Если эти отрезки времени достаточно малы, и машина не

перегружена слишком большим числом программ, то пользователю кажется, что

все эти программы выполняются параллельно.

 

Идея многозадачности не нова. Многозадачность реализуется на больших

компьютерах типа мэйнфрэйм (mainframe), к которым подключены десятки, а

иногда и сотни, терминалов. У каждого пользователя, сидящего за экраном

такого терминала, создается впечатление, что он имеет эксклюзивный доступ

ко всей машине. Кроме того, операционные системы мэйнфрэймов часто дают

возможность пользователям перевести задачу в фоновый режим, где они

выполняются в то время, как пользователь может работать с другой

программой.

 

Для того, чтобы многозадачность стала реальностью на персональных

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

приближаемся к эпохе использования многозадачности на ПК (PC). Как мы

увидим вскоре, некоторые расширенные 16-разрядные версии Windows

поддерживают многозадачность, а имеющиеся теперь в нашем распоряжении

Windows NT и Windows 95 – 32-разрядные версии Windows, поддерживают кроме

многозадачности еще и многопоточность (multithreading).

 

Многопоточность – это возможность программы самой быть многозадачной.

Программа может быть разделена на отдельные потоки выполнения (threads),

которые, как кажется, выполняются параллельно. На первый взгляд эта

концепция может показаться едва ли полезной, но оказывается, что программы

могут использовать многопоточность для выполнения протяженных во времени

операций в фоновом режиме, не вынуждая пользователя надолго отрываться от

машины.

 

Режимы многозадачности

 

 

На заре использования персональных компьютеров некоторые отстаивали

идею многозадачности для будущего, но многие ломали головы над вопросом:

какая польза от многозадачности на однопользовательской машине? В

действительности оказалось, что многозадачность – это именно то, что

необходимо пользователям, даже не подозревавшим об этом.

 

Многозадачность в DOS

 

 

Микропроцессор Intel 8088, использовавшийся в первых ПК, не был

специально разработан для реализации многозадачности. Частично проблема

(как было показано в предыдущей главе) заключалась в недостатках управления

памятью. В то время, как множество программ начинает и заканчивает свое

выполнение, многозадачная операционная система должна осуществлять

перемещение блоков памяти для объединения свободного пространства. На

процессоре 8088 это было невозможно реализовать в стиле, прозрачном для

приложений.

 

Сама DOS не могла здесь чем-либо существенно помочь. Будучи

разработанной таким образом, чтобы быть маленькой и не мешать приложениям,

DOS поддерживала, кроме загрузки программ и обеспечения им доступа к

файловой системе, еще не так много средств.

 

Тем не менее, творческие программисты, работавшие с DOS на заре ее

появления, нашли путь преодоления этих препятствий, преимущественно при

использовании резидентных (terminate-and-stay-resident, TSR) программ.

Некоторые TSR-программы, такие как спулер печати, использовали прерывание

аппаратного таймера для выполнения процесса в фоновом режиме. Другие,

подобно всплывающим (popup) утилитам, таким как SideKick, могли выполнять

одну из задач переключения – приостановку выполнения приложения на время

работы утилиты. DOS также была усовершенствована для обеспечения поддержки

резидентных программ.

 

Некоторые производители программного обеспечения пытались создать

многозадачные оболочки или оболочки, использующие переключение между

задачами, как надстройки над DOS (например, Quarterdeck's DeskView), но

только одна из этих оболочек получила широкое распространение на рынке.

Это, конечно. Windows.

 

Невытесняющая многозадачность

 

 

Когда Microsoft выпустила на рынок Windows 1.0 в 1985 году, это было

еще в большой степени искусственным решением, придуманным для преодоления

ограничений MS DOS. В то время Windows работала в реальном режиме (real

mode), но даже тогда она была способна перемещать блоки физической памяти

(одно из необходимых условий многозадачности) и делала это, хотя и не очень

прозрачно для приложений, но все-таки вполне удовлетворительно.

 

В графической оконной среде многозадачность приобретает гораздо

больший смысл, чем в однопользовательской операционной системе,

использующей командную строку. Например, в классической операционной

системе UNIX, работающей с командной строкой, существует возможность

запускать программы из командной строки так, чтобы они выполнялись в

фоновом режиме. Однако, любой вывод на экран из программы должен быть

переадресован в файл, иначе этот вывод смешается с текущим содержимым

экрана.

 

Оконная оболочка позволяет нескольким программам выполняться

совместно, разделяя один экран. Переключение вперед и назад становится

тривиальным, существует возможность быстро передавать данные из одной

программы в другую, например, разместить картинку, созданную в программе

рисования, в текстовом файле, образованном с помощью текстового процессора.

Передача данных поддерживалась в различных версиях Windows: сначала с

использованием папки обмена (clipboard), позднее – посредством механизма

динамического обмена данными (Dynamic Data Exchange, DDE), сейчас – через

внедрение и связывание объектов (Object Linking and Embedding, OLE).

 

И все же, реализованная в ранних версиях Windows многозадачность не

была традиционной вытесняющей, основанной на выделении отрезков времени,

как в многопользовательских операционных системах. Такие операционные

системы используют системный таймер для периодического прерывания

выполнения одной задачи и запуска другой. 16-разрядные версии Windows

поддерживали так называемую невытесняющую многозадачность (non-preemptive

multitasking). Такой тип многозадачности был возможен благодаря основанной

на сообщениях архитектуре Windows. В общем случае, Windows-программа

находилась в памяти и не выполнялась до тех пор, пока не получала

сообщение. Эти сообщения часто являлись прямым или косвенным результатом

ввода информации пользователем с клавиатуры или мыши. После обработки

сообщения программа возвращала управление обратно Windows.

 

16-разрядные версии Windows не имели возможности произвольно

переключать управление с одной Windows-программы на другую, основываясь на

квантах времени таймера. Переключение между задачами происходило в момент,

когда программа завершала обработку сообщения и возвращала управление

Windows. Такую невытесняющую многозадачность называют также кооперативной

многозадачностью (cooperative multitasking) потому, что она требует

некоторого согласования между приложениями. Одна Windows-программа могла

парализовать работу всей системы, если ей требовалось много времени для

обработки сообщения.

30.Программы отладчики Типы Windows-отладчиков

Если вы хоть немного программировали для Windows, то, вероятно, слышали о различных типах отладчиков, которые можно при этом использовать. В мире Windows доступны два типа отладчиков: отладчики режима пользователя (user-mode debuggers) и отладчики режима ядра (kernel-mode debuggers).

Большинству разработчиков больше знакомы отладчики пользовательского режима. Не удивительно, что отладчики этого режима предназначены для отладки приложений пользовательского режима (user-mode applications). Главный пример отладчика режима пользователя — отладчик Microsoft Visual C++. Отладчики режима ядра, как следует из их названия, — это такие отладчики, которые позволяют отлаживать ядро операционной системы. Они используются главным образом теми, кто пишет (и отлаживает, конечно) драйверы устройств.

 

Отладчики режима пользователя

Отладчики режима пользователя предназначены для отладки любого приложения, выполняющегося в режиме пользователя, включая любые GUI-программы, а также такие не совсем обычные приложения, как службы (services) Windows 2000. В общем случае, отладчики этого типа поддерживают графический интерфейс пользователя (GUI1). Главный признак таких отладчиков — они используют отладочный интерфейс прикладного программирования (отладочный API) Win32. Поскольку операционная система помечает подчиненный отладчик как "выполняющийся в специальном режиме", то, чтобы выяснить, выполняется ли ваш процесс под отладчиком, можно использовать API-функцию IsDebuggerPresent.

При поставке отладочного API Win32 подразумевается следующее соглашение: раз процесс выполняется под отладочным API (и делает его, таким образом, подчиненным процессом), основной отладчик не может отделиться от данного процесса. Эти симбиозные отношения означают, что если основной отладчик завершает работу, то завершается также и подчиненный отладчик. Основной отладчик ограничивается отладкой только подчиненного отладчика и любых порожденных им процессов (если основной отладчик поддерживает процессы-потомки)

31.Способы повышения производительности микропроцессоров и современные направления Современные процессоры AMD и Intel хоть и обеспечивают превосходное быстродействие, а также поддерживают огромное число современных технологий, все еще остаются сильно измененными разработками 10-летней давности. Но обе компании уже объявили о своих намерениях представить ЦП на основе принципиально новых архитектур. У AMD это Bulldozer, у Intel – Nehalem. В этом материале рассматриваются их основные возможности и нововведения, а также дальнейшие перспективы развития рынка микропроцессоров.

Хорошо было 10 лет назад. Компания Intel выпустила процессор Pentium II, в основе которого лежали все идеи, реализованные в Pentium и Pentium Pro, и это было единственное решение для компьютеров из middle-end и high-end сегментов. Для бюджетного сектора предназначались уже морально устаревшие Pentium, а также решения от других компаний, в частности от AMD. Вопроса "Что выбрать: Intel или AMD?" тогда не было. Все знали, что процессоры Intel лучшие и все их рекомендовали к приобретению.

Теперь вопрос выбора стоит немного более остро, хотя число производителей ЦП несколько поубавилось. С одной стороны Intel предлагает более скоростные чипы Core 2 Duo, а с другой каждое их обновление требует смены системной платы, да и их стоимость относительно решений AMD у них повыше. Последние, к слову, обещают быть совместимыми с Socket AM2 платами чуть ли не до 2009 года. Да и на следующей неделе будет представлена обновленная архитектура K8, в народе известная как K10 или K8L.

Тем не менее, все самые современные процессоры AMD и Intel имеют в своей основе наработки 8-10-летней давности. Чипы Core выросли из Pentium M, которые в свою очередь базируются на архитектуре P6, легшей в основу Pentium Pro и последующих разработок. AMD очень преуспела выпустив процессор Athlon, основанный на архитектуре K7. K8 хоть и имеет сильные отличия, однако это всего лишь сильно переработанный K7. Ну а K10 - это эволюционное развитие K8.

Однако и Intel и AMD обещают в ближайшие полтора-два года представить принципиально новые процессорные архитектуры. Междоусобная конкуренция заставила пойти обоих производителей ЦП на этот весьма дорогостоящий шаг. Intel стала говорить об этом еще два года назад, а AMD в этом году объявила о намерении представить новый процессор с высокой интеграцией компонентов. В этой статье мы собрали всю имеющуюся информацию о планах этих компаний касательно готовящегося обновления архитектур.

32Понятие о микропроцессорной системе (МПС).

Функциональная классификация микропроцессоров

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

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

 

Общая функциональная классификация микропроцессорных средств показана на рис. 1.1.

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

Микропроцессорный комплект (МПК) - набор СБИС и БИС с общими конструктивно-технологическими принципами и электрическими характеристиками (уровни сигналов, быстродействие), предназначенных для построения функционально полнофункциональной микропроцессорной системы (МПС) для задач вычислений или управления. В состав МПК входят собственно центральный процессор (ЦП), или микропроцессор, арифметический сопроцессор - средство эффективной реализации вычислительных действий под управлением ЦП, а также контроллеры периферийных функций с программной настройкой режимов: порты параллельной и последовательной связи, таймеры - средства реализации временных интервалов, контроллеры прерываний и прямого доступа к памяти.Микросхемы ПЗУ и ОЗУ не входят в состав МПК и образуют самостоятельные функциональные группы.

Рис. 1.1. Функциональная классификация микропроцессорных средств

 

33. Микропроцессоры, типы данных.




Поделиться с друзьями:


Дата добавления: 2015-04-23; Просмотров: 799; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.054 сек.