Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1233

.pdf
Скачиваний:
0
Добавлен:
15.11.2022
Размер:
625.43 Кб
Скачать

Министерство образования Российской Федерации Воронежский государственный технический университет кафедра автоматизированных и вычислительных систем

М.А. Лейкин

КОНCПЕКТ ЛЕКЦИЙ

по дисциплине “Системное программное обеспечение” для студентов специальности 220100

“Вычислительные машины, комплексы, системы и сети”

дневной формы обучения

Воронеж - 2000

УДК 681.3.06

Лейкин М.А. Системное программное обеспечение: Конспект лекций. Воронеж: Изд-во ВГТУ, 2000. 87 с.

Вконспекте рассматриваются вопросы функционального применения

операционных систем на примере Windows NT,

OS/2, UNIX и других

широко распространенных ОС.

 

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

Помимо теоретических сведений о системном программном обеспечении и общих принципах управления ресурсами показана их реализация в наиболее популярной ОС для персональных вычислительных систем - операционной системе Windows NT/2000 - с помощью WIN32 API которая представляет собой часть операционной системы и ее изучение поможет лучше понять архитектуру самой ОС и основные принципы ее функционирования.

Научный редактор д-р техн. наук С. Л. Подвальный

Рецензенты: кафедра естественнонаучных дисциплин Воронежского экономико-правового института; д-р техн. наук О. Я. Кравец

Печатается по решению редакционно-издательского совета Воронежского государственного технического университета.

©Лейкин М. А., 2000

©Оформление издательство Воронежского

государственного технического университета, 2000

 

 

Дополнительная

ЛИТЕРАТУРА

1.

Крейслер С. Проектирование операционных систем для малых ЭВМ. -

 

 

М.: Мир, 1986. - 281 с.

 

Основная

2.

Фролов А.В., Фролов Г.В. Библиотека системного программиста.

 

 

Защищенный режим процессоров Intel 80286/80386/80486.-

1. Дейтел Г. Введение в операционные системы: в 2-х т. -

 

М.: Диалог МИФИ, 1991. - 358 с.

М.: Мир, 1987. - 359 с.

3.

Касаткин А.И., Вальвачев А.Н. Профессиональное программирование

2. Фролов А.В., Фролов Г.В. Библиотека системного программиста.

 

на языке Си. От Turbo C к Borland C++: Справочное пособие. -

Т. 26 - 27. Программирование для Windows NT.-

 

Минск: Высш. школа, 1992. - 323 с.

М.: Диалог МИФИ, 1996.

4.

Брябрин В.М. Программное обеспечение персональных ЭВМ. -

3. Касаткин А.И. Профессиональное программирование на языке Си.

 

М.: Наука,1988. - 272 с.

Управление ресурсами: Справочное пособие. -

5.

Грибанов В.П. Операционные системы. - М.: Фин. и стат., 1990. -

Минск: Высш. школа, 1992. - 432 с.

 

1990. - 239 с.

 

4. Касаткин А.И. Профессиональное программирование на языке Си.

6.

Илюшечкин В.М., Костин А.Е. Системное программное обеспечение. -

Системное программирование: Справочное пособие. -

 

М.: Высш. школа, 1991. - 128 с.

Минск: Высш. школа, 1992. - 299 с.

7.

Марков А.С.,Милов М.П.,Пеледов Г.В. Программное обеспечение ЭВМ. -

5. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и

 

М.:Высш.школа,1990. - 127 с.

компиляции: Пер. с англ. / В 2 томах. - М.: Мир, 1978.

8.

Джордейн Р. Справочник программиста персональных компьютеров

 

 

типа IBM PC, XT и AT Пер с англ. -

 

 

М.: Финансы и статистика, 1992. - 544 с.

 

9.

Абель П. Язык Ассемблера для IBM PC и программирования /

 

 

Пер. с англ. - М.:Высш. шк., 1992. - 447 с.

 

10. Хендрикс Д. Компилятор языка Си для микроЭВМ: Пер. с англ. -

 

 

М.: Радио и связь, 1989. - 240 с.

 

11. Касьянов В.Н., Поттосин И.В. Технология трансляции. -

 

 

Новосибирск: НГУ, 1979. - 92 с.

 

12. Касьянов В.Н., Поттосин И.В. Методы трансляции. -

 

 

Новосибирск: НГУ, 1978. - 111 с.

 

13. ОС OS/2. Техническое

описание и справочник программиста.

 

 

"ИВК-СОФТ", М., 1990

 

 

14. Кренц, Майзелл, Уильямз. ОС OS/2. Возможности, функции и при-

 

 

ложения. М.:, Мир, 1991

 

 

15. Duncan Roy. Design

goals and implementation of the new High

 

 

Performance File System. Microsoft Systems Journal. Sept 1989,

 

 

v4 n5 p1(13)

 

ВВЕДЕНИЕ

Ценой, которую мы платим за овладение любой профессией, является близкое знакомство с ее теневыми сторонами

Дж. Болдуин Сегодня операционные системы применяются на всех вычисли-

тельных машинах - от гигантских суперЭВМ до миниатюрных персо-

2

нальных компьютеров. Операционная система зачастую, даже в большей степени, определяет представление пользователя о компьютере, чем сама аппаратура этого компьютера. Пример: В ПК мы видим дисплей, клавиатуру, принтер и возможно накопитель на ГМД. Но основные ресурсы ПК - процессор, НМД, память - скрыты от нас и доступ к ним обеспечивается лишь с помощью ОС.

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

ФУНКЦИИ ОС

1.Определяет интерфейс пользователя.

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

3.Дает возможность работать с общими данными в режиме коллективного пользования.

4.Планирует доступ пользователей к общим ресурсам.

5.Обеспечивает эффективное выполнение операций ввода/вывода.

6.Осуществляет восстановления информации и вычисление процесса в случае ошибок.

Главное назначение ОС - управление ресурсами. Главные ресурсы - аппаратура.

РЕСУРСЫ ОС

В процессе работы ОС управляет следующими ресурсами:

1)процессорами

2)памятью

3)устройствами обмена

4)данными.

Данные - это не аппаратный ресурс вычислительной системы, но значения этого ресурса не меньше, чем аппаратного.

ОБЪЕКТЫ, ВЗАИМОДЕЙСТВУЮЩИЕ С ОС

1.Персонал.

2.Программы.

3.Аппаратные средства.

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

Группы можно разделить:

1) пользователи - категория людей, которая использует компьютер для решения задач из своей предметной области. Наименее подготовленная группа;

2)операторы;

3)прикладные программисты. Они должны иметь информацию о размерах ресурсов вычислительной системы, о конфигурации аппаратных и информационных ресурсов, об установленном программном обеспечении и т.д.;

4)системные программисты;

5)системный администратор - это человек, в обязанности которого входит обеспечение бесперебойной работы вычислительной системы, распределение ресурсов между пользователями, установка первоначальных приоритетов, решение вопросов программных данных, должен быть осведомлен о возможностях ОС в максимальной степени;

6)административный персонал (менеджеры, директора и т.д.).

Кроме людей

ОС взаимодействует с программными и аппаратными

средствами.

 

 

 

 

 

 

 

ИЕРАРХИЧЕСКАЯ СТРУКТУРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ КОМПЬЮТЕРА

 

 

+----------------

 

+

 

 

 

 

 

 

¦

ПО

¦

 

 

 

 

 

 

+----------------

 

+

 

 

 

 

 

+------------

+

¦

+-----------

+

 

 

 

 

¦ ПРИКЛАДНОЕ +

---+---

¦ КРОССОВОЕ ¦

 

 

 

 

+------------

+

¦

+-----------

+

 

 

 

 

+-----------

+

¦

+----------

+

 

 

 

 

¦ СИСТЕМНОЕ +

-------

¦ ТЕСТОВОЕ ¦

 

 

 

 

+-----------

+

 

+----------

+

 

 

 

 

 

¦

 

 

 

 

 

 

 

 

+---------------------------------------

 

 

 

 

+

 

 

+----

+

+------------------

 

+

+---------------

 

+

 

¦ ОС ¦

¦

СИСТЕМА

¦

¦

СЕТЕВОЕ

¦

 

+----

+

¦ ПРОГРАММИРОВАНИЯ ¦

+---------------

 

+

 

 

 

+------------------

 

+

 

 

 

 

Программное обеспечение (ПО) - это совокупность программ

и

правил

со всей относящейся к ним документацией,

позволяющая ис-

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

 

Прикладное ПО - совокупность программ,

предназначенных

для

решения конкретных задач пользователя.

 

 

 

 

Кроссовое ПО

-

это ПО, предназначенное для работы с соот-

ветствующим компьютером и его программами,

реализованное для

ВМ

других классов при разработке новых компьютеров.

Обычно реализу-

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

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

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

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

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

Сетевое ПО представляет собой комплекс программ, данных и протоколов, обеспечивающих передачу информации в среде удаленных

3

компьютеров.

РЕЖИМЫ ФУНКЦИОНИРОВАНИЯ КОМПЬЮТЕРА 1. Однопрограммный режим - все ресурсы предоставляются од-

ной программе.

МП +

---+

+---

+

 

+-------

 

+

+---+

+---+

 

 

¦ 1 ¦

¦ 1 ¦

 

¦ 1 ¦ 2 ¦

¦ 2 ¦

¦ 2 ¦

 

 

+

------------------------------------------------

 

 

 

 

 

 

 

 

 

 

¦

¦

¦

¦

 

¦

 

¦

¦ ¦

¦

t

 

¦

+---

+

 

 

 

 

 

+----

+

 

ПУ1 ¦

¦ 1 ¦ ¦

 

¦

 

¦

¦ ¦ 2 ¦

 

 

+

------------------------------------------------

 

 

 

 

 

 

 

 

 

 

¦

 

 

¦

 

¦

 

¦

¦

 

t

 

¦

 

 

+----

 

+

 

+----

+

 

 

 

¦

 

 

¦ 1

¦

 

¦ 2

¦

 

 

ПУ2

+

------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

2. Мультипрограммный режим - несколько независимых программ

выполняются одновременно. Приоритеты.

 

 

 

+

---------------------------

 

 

 

 

 

+

 

 

 

 

¦ 1 ¦ 2 ¦ 1 ¦ 2 ¦ 1 ¦

2 ¦

 

 

 

МП

+

------------------------------------------------

 

 

 

 

 

 

 

 

 

 

¦

¦

¦

 

 

¦

¦

 

 

 

t

 

¦

+---

+

 

 

+---

+

 

 

 

 

ПУ1

¦

¦ 1 ¦

 

 

¦ 2 ¦

 

 

 

 

 

+

------------------------------------------------

 

 

 

 

 

 

 

 

 

 

¦

 

 

 

 

 

 

 

 

 

t

 

¦

 

+--

+

+---

+

 

 

 

 

 

ПУ2

¦

 

¦2 ¦

¦ 1 ¦

 

 

 

 

 

 

+

------------------------------------------------

 

 

 

 

 

 

 

 

 

t

3.Мультизадачный режим - служит для обеспечения функционирования связанных зависимых задач. ОС должна обеспечить механизм связи задач - передачу данных, ожидание, параллельное выполнение и т.п.

КЛАССИФИКАЦИЯ ОС

Право - это не то, что кем-то вам дано, а то, что у вас никто не отнимет (Р. Кларк)

1.ОС пакетной обработки - взаимодействие между пользователем и заданием во время обработки невозможно или крайне ограничено.

2.ОС разделения времени - обеспечивает одновременное обслуживание многих пользователей в режиме диалога. Квантование времени МП.

3.ОС реального времени - гарантия выполнения запроса в течении заданного интервала времени. Запросы могут поступать от пользователя или от внешних устройств. Скорость вычислительных процессов должна быть согласована со скоростью процессов вне компьютера.

4.Диалоговые ОС - используется в ПК. Обеспечивают удобную

форму диалога. Возможность пакетной обработки.

ПОКОЛЕНИЯ ОС

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

Р. Лакки

40-е годы - ОС не было. Работа в машинных кодах.

50-е годы - 1-ое поколение (IBM-701), фирма General Motors.

Цель: сокращение времени запуска программ и их удаления. Это было начало систем пакетной обработки.

К концу 50-х годов фирмы-изготовители поставляли ОС со следующими характеристиками:

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

б) наличие стандартных программ ввода-вывода; в) возможность автоматического перехода от программы к прог-

рамме; г) средства восстановления после ошибок;

д) языки управления заданиями, представляющие пользователю возможность подробно описывать свои задания и ресурсы.

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

Начало 60-х гг. - 2 поколение ОС. Они создавались как системы коллективного пользования с мультипрограммным режимом работы и как первые системы мультипроцессорного типа. Основное внимание в системах такого типа уделяется повышенной производительности и сокращению простоев ЦП.

Были разработаны системы с разделением времени, в которых пользователи работают в диалоговом или интерактивном режиме (SABRE - бронирование и продажа авиационных билетов в США). Основная характеристика системы разделения времени - время ответа (от запроса до ответа).

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

Середина 60-х - Середина 70-х - 3 поколение появилось с представлением фирмой IBM в 1964 году семейства компьютеров System/360. ОС была многорежимной системой: пакетной, с разделением времени, мультипроцессорной. ОС стали прослойкой между пользователем и аппаратурой. Недостатки: высокая цена как следствие мно-

4

гофункциональности, сложность описания ресурсов. Основные варианты ОС:

DOS/360 - дисковая ОС с однопрограммным режимом;

OS/MFT - мультипрограммная ОС с фиксированным числом разделов (оперативная память разбивается на строго определенное число разделов, каждому разделу приписываются определенные потоки задач);

OS/MVT - мультипрограммная система с переменным числом разделов. Память непрерывна, разделение очереди по приоритетам;

CP-67/CMS - диалоговая мониторная система с виртуальной памятью и разделением времени.

В 1969 г. фирма Bell Lab анонсировала новую информационную среду для мини ЭВМ - Unix - система с разделением времени, встроенными средствами защиты ресурсов и возможностью работы с виртуальными ресурсами, предназначенную для исследования процессов разработки программного обеспечения Первоначально была написана на Ассемблере для компьютера PDP-7 фирмой DEC. В последствии переписана была на СИ, что позволило обеспечить высокую переносимость системы. Распространение системы в текстах обеспечило широкий успех, поскольку система могла быть адаптирована к условиям конкретной вычислительной среды.

Другим примером для миниЭВМ служит ОС VAX/VMS (компьютеры разработаны фирмой DEC). Особенностями данной системы являются оснащение мощными средствами защиты приложений (4 уровня), мультизадачность и применение концепции виртуальной памяти.

4 поколение: современные ОС. Основными чертами ОС можно счи-

тать:

-обеспечение доступа с территориально распределенными компьютерами - вычислительные сети;

-обеспечение работы ПК в режиме разделения времени в качестве терминала мощной вычислительной системы;

-шифрование данных для разграничения доступа (линейное и программное);

-улучшение интерфейса пользователя (меню вместо языка управления заданиями);

-распространение концепции виртуальных машин;

-разработка и поддержание баз данных;

-распределенная обработка данных.

 

 

 

 

 

СОСТАВ ОС

 

 

 

 

 

Чаще всего

ОС состоит из относительно компактного ядра (мо-

нитора) и набора системных программ и данных.

 

 

 

 

 

 

+---------

 

+

 

 

 

 

 

 

 

¦

ОС

¦

 

 

 

 

 

 

 

+---------

 

+

 

 

 

 

 

+-----------------------------------

 

 

 

 

+

 

 

 

+-----------

 

+

 

 

+----------------------

 

 

+

 

¦

Ядро

¦

 

 

¦ Системные программы ¦

 

+-----------

 

+

 

 

¦

и данные

¦

 

 

 

 

 

 

+----------------------

 

 

+

 

 

 

+-------------------------------------------------

 

 

 

 

 

 

+

+----------------

 

 

+

+-----------------

 

+

+---------------

 

+

¦

Программы

¦

¦

Утилиты

¦

¦

Библиотеки

¦

¦обслуживания ВНИ¦

+-----------------

 

+

¦

программ

¦

+----------------

 

 

+

 

 

 

+---------------

 

+

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

Типичными функциями ядра являются:

-организация взаимодействия пользователя с компьютером;

-управление распределением ресурсов;

-обеспечение требуемого режима функционирования ЭВМ;

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

-слежение за выполнением операций обмена данными;

-управление файлами.

Все ядро или некоторая его часть, называемая резидентным монитором, постоянно находится в ПЗУ от момента загрузки ОС до завершения ее работы. Другие, нерезидентные части загружаются в оперативную память из внешней памяти по мере необходимости. После выполнения оперативная память освобождается.

Схема работы простейшего монитора:

 

 

+--------------

 

 

+

 

 

 

¦

Загрузка

¦

 

 

 

¦

монитора

¦

 

 

 

+--------------

 

 

+

 

 

 

 

+----------------------------

 

 

 

 

+

 

-----------

 

 

 

 

¦

/

Вывод

 

/

 

 

¦

/признака

/

 

 

 

¦

/готовности/

 

 

 

¦

-----------

 

 

 

 

 

¦

-------------

 

 

 

 

 

¦

команда от /

Ожидание

\

 

 

¦

----------> \

команды

 

/

 

 

¦

пользователя -------------

 

 

 

 

 

¦

+--------------

 

 

+

 

 

¦

¦

Анализ

 

¦

 

 

¦

¦

команды

 

¦

 

 

¦

+--------------

 

 

+

 

 

¦

 

/ \

 

 

------------

 

¦

 

/

\

Да

/Сообщение

/

¦

/ Ошибка

\

---/

об

/-------

¦

\

 

/

/

ошибке

/

¦

 

\

/

------------

 

 

¦

 

\ /

 

 

 

 

¦

 

¦Нет

 

 

 

 

 

¦

 

 

 

 

 

+---------------

 

 

+

 

 

¦

¦

Загрузка

¦

 

 

¦

¦

программы

¦

 

 

¦

+---------------

 

 

+

 

 

¦

 

¦

 

 

 

 

¦

+---------------

 

 

+

 

 

¦

5

¦

Выполнение

¦

¦

¦

программ

¦

¦

+---------------

 

+

¦

 

¦

 

¦

 

+----------------------------

 

+

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

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

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

ОСНОВНАЯ ПАМЯТЬ

Я могу только предполагать, что документ с надписью "В архив не сдавать" хранится в архиве с папке с надписью "В архив не сдавать"

(Сенатор Ф. Черч) Память - важнейший ресурс вычислительной системы. В памяти располагается как сама операционная система, так и те задачи, ко-

торые должны быть выполнены. Различают:

1.Реальную память.

2.Виртуальную память. При этом основная память моделируется на НМД. Виртуальная память может во много раз превышать реальную.

Существует следующая иерархия видов памяти:

+-----------+ +---+ +--------+ +-------+

¦Регистровая+--¦Кэш+--¦Основная+--¦Внешняя¦

+-----------+ +---+ +--------+ +-------+

Регистровая память

Регистры используются для хранения исходных данных или операндов и результатов машинных команд. Регистры являются основным элементом процессора вычислительной системы, за счет этого достигается высокая производительность работы с регистрами.

Регистры процессора Intel

Всостав процессора Intel входят:

-регистры общего назначения;

-регистры-указатели;

-сегментные регистры;

-регистр флагов;

-отладочные регистры;

-управляющие регистры;

-рабочие регистры.

Регистры общего назначения в современных процессорах Intel 32-хразрядные и имеют имена EAX, EBX, ECX и EDX. Их младшие 16 разрядов именуются соответственно AX, BX, CX и DX.

Регистры-указатели:

- программный счетчик EIP служит для хранения адреса следующей

машинной команды. Полный логический адрес задается в сочетании с сегментным регистром CS;

-индексные регистры ESI, EDI используются в цепочечных примитивах, т.е. в командах, которые позволяют выполнить обработку последовательности или цепочки байт (например, команда копирования блока памяти). Особенность: их значение меняется автоматически, без участия программы. Адрес источника цепочки команд задается в виде: DS:ESI, а адрес результата: ES:EDI;

-указатель вершины стека ESP. Полный адрес вершины стека формируется с участием сегментного регистра SS (SS:ESP);

-указатель дна стека EBP.

Сегментные регистры служат для формирования логических адресов. Разрядность 2 байта (16 разрядов):

-сегмент кода CS;

-сегмент данных DS:

-дополнительные сегменты данных ES, FS, GS:

-сегмент стека SS.

Регистр флагов EFLAGS показывает состояния процессора после выполнения очередного машинного цикла. Через регистр флагов можно оказать воздействие на выполнение машинного цикла, т.е. установить флаги управлений. Имеет 32 разряда, биты этого регистра закреплены за отдельными флагами.

 

Младшее слово

 

 

+-----------------------------------------------

 

 

+

-

 

 

 

¦

¦NT¦IOPL ¦OF¦DF¦IF¦TF¦SF¦ZF¦

¦AF¦

¦PF¦ ¦CF¦

+-----------------------------------------------

 

 

+

 

F E D C B A 9 8 7 6 5 4 3 2 1 0

 

Старшее слово

 

 

+-----------------------------------------------

 

 

+

-

 

 

 

¦

¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

¦ ¦

¦AC¦VM¦RF¦

+-----------------------------------------------

 

 

+

1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10

Флаги управления:

-флаг трассировки TF. TF=1 - позволяет переключить процессор в пошаговый режим;

-флаг разрешения прерываний IF : 1 - разрешение прерывания, 0- запрет;

-флаг направления DF управляет направлением изменения индексных регистров в цепочке команд: 1- декремент, 0 - инкремент.

-уровень привилегий ввода/вывода IOPL позволяет отследить уровень защиты, установленный для операций ввода-вывода;

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

-флаг возобновления RF позволяет инициировать процедуру рестарта;

-флаг режима виртуального процессора 8086 VM. С помощью этого флага выполняется перевод процессора в данный виртуальный режим;

-флаг проверки выравнивания AC добавлен в процессорах начиная с

80486.

Флаги условий:

-флаг переноса Carry Flag CF устанавливается в 1, если при выполнении команды возникает перенос из старшего разряда результата;

6

-флаг четности (паритета) PF устанавливается в 1, когда младшие 8 бит результата содержат четное число единиц;

-флаг дополнительного переноса AF используется в операциях двоичнодесятичной арифметики и устанавливается в 1 при переносе из третьего разряда;

-флаг нуля ZF устанавливается в 1 при получении нулевого результата;

-флаг знака SF: 1 - результат отрицательный, 0 - результат положительный;

-флаг переполнения OF устанавливается в 1 при возникновении переполнения;

Остальные разряды регистра флагов зарезервированы.

Отладочные регистры DRi. Их число изменяется от 4 до 8 в зависимости от модификации процессора. Отладочные регистры используются утилитами тестирования аппаратуры и средствами отладки систем программирования.

Управляющие регистры CRi (i=1..3) используются системой управления памятью процессора, хранят структуры, которые позволяют переключать режим процессора, устанавливать вид грануляции памяти (оперирование отдельными байтами или страницами памяти), переключать механизм трансляции страниц. С помощью одного из управляющих регистров задается адрес каталога таблиц страниц процессора.

Рабочие регистры программно недоступны, используются процессором для организации выполнения потока команд. Например, в процессоре Pentium Pro - 40 рабочих регистров.

Кэш память

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

Применение этой памяти основано на свойстве локальности, присущем программным системам. Локальность бывает пространственная и временная.

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

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

ОРГАНИЗАЦИЯ ОСНОВНОЙ ПАМЯТИ

Под организацией основной памяти понимают способы размещения программ и данных в основной памяти. Различают связное и перемещаемое (несвязное) размещение программ и данных.

Связное размещение предполагает размещение команд и данных программы в непрерывном блоке памяти.

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

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

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

Режимы работы процессоров Intel

Процессор Intel поддерживает два режима работы: реальный

(Real Mode) и защищенный (Protected Mode).

Реальный режим (его еще называют режимом процессора 8086)- это однопрограммный режим. Все свободное адресное пространство основной памяти распределяется работающему приложению. Принятая схема адресации ограничивает максимальный размер памяти пределом (1М + 64К - 16). Использование адресов, превышающих этот предел, возможно только косвенными методами через специализированные драйверы управления основной памятью. Особенности реального режима:

-адрес памяти, формируемый МП является физическим адресом;

-все машинные команды системы команд разрешены для использования любой программой;

-объем адресуемой памяти не превышает 1М ( исключение для 286/386/486/... : линия А20 дает дополнительно (64К -16) байт сверх 1М).

В защищенном режиме активизируются средства организации виртуальной памяти (внутреннее устройство управления памятью MMU). Все инструкции разбиваются на привилегированные (только для ОС) и непривилегированные. Обеспечивается защита памяти, выделенной приложениям от несанкционированного доступа. Особенности защищенного режима:

-возможность непосредственной адресации памяти свыше 1 Мб;

-механизм виртуальной памяти (начиная с процессора 80386);

-аппаратная поддержка мультизадачности;

-использование виртуального режима процессора 8086.

ПРЕОБРАЗОВАНИЕ ЛОГИЧЕСКОГО АДРЕСА В ФИЗИЧЕСКИЙ В РЕАЛЬНОМ РЕЖИМЕ

Компоненты логического адреса располагаются в сегментном регистре и регистре-указателе (или РОН):

CS:IP

Seg:OffSet

Адрес реального режима Intel 8086 является 20-ти разрядным, что позволяет адресовать пространство в 1 Мб памяти. Чтобы из двух 16-ти разрядных компонент получить 20-ти разрядный адрес, используем алгоритм: сегмент сдвигаем влево на 1 шестнадцатеричную цифру (4 разряда) и складываем со смещением.

7

Пример:

40:1С

- логический адрес

0040

: 001С

- слова сегмента и смещения

--------------

 

00400

 

- сдвиг сегмента влево

+

 

 

001С

 

- сложение со смещением

-----

 

 

0041С

 

- физический адрес

Такая схема позволяет создавать хорошо перемещаемые программы. Недостатки:

1)позволяет адресовать память небольшого размера;

2)нет возможности организовать защиту отдельных сегментов памяти от несанкционированного доступа;

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

АДРЕСАЦИЯ ПАМЯТИ В ЗАЩИЩЕННОМ РЕЖИМЕ

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

Физический адрес получается из логического при одноступенчатой схеме за одно преобразование, а при двухступенчатой - за два.

Логический адрес состоит из двух компонент: селектора и сме-

щения.

Селектор содержит

индекс в таблице дескрипторов (описа-

тель) сегментов. Селектор имеет следующую структуру:

F

 

3 2 1 0

+---------------------------------------------------

 

+

¦

индекс в таблице

¦ ¦ ¦

+---------------------------------------------------

 

+

 

 

TI RPL

RPL - запрашиваемый уровень привилегий (2 бита);

TI - индикатор таблицы: 0- поиск дескриптора выполняется в глобальной дескрипторной таблице GDT, 1 - поиск осуществляется в локальной дескрипторной таблице LDT.

GDT содержит дескрипторы сегментов ОС, а также адреса локальных таблиц. В системе может быть только одна глобальная таб-

лица дескрипторов. Для

адресации

таблиц используются регистры

GDTR и LDTR.

 

 

 

Формат GDTR:

 

 

 

27h

10h

Fh

0

+-------------------------------------------------------

 

 

+

¦ базовый адрес GDT

 

¦ Предел (размер GDT-1)

¦

+-------------------------------------------------------

 

 

+

32 бита

 

20 бит

 

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

Схема одноступенчатого преобразования адреса:

+--------

+

 

 

+--------

+

¦GDTR

¦

 

 

¦ LDTR

¦

+--------

+

+---

дескриптор -+

+--------

+

 

^

 

¦

сегмента

¦

^

 

 

+--------------------

 

 

+ ¦ ( первый не

¦ +-------------------

 

 

+

¦

¦

¦

¦<+

используется)

+>¦

¦

¦

¦

+------

+--------

+----

¦

 

 

+------

+-------

+----

¦

¦

¦базовый ¦

+--------

o----

o

о-¦

¦базовый¦

¦

¦

¦ адрес

¦

¦

TI=0

¦

TI=1¦

¦ адрес ¦

¦

+------

+--------

+----

¦

 

¦

+------

+-------

+----

¦

¦

¦ БА

¦

¦

 

¦

¦

¦ БА

¦

¦

+------

+--------

+----

¦

 

¦

+------

+-------

+----

¦

¦

¦ БА

¦

¦

 

¦

¦

¦ БА

¦

¦

+------

+--------

+----

¦

БА

¦

+------

+-------

+----

¦

¦

¦ ...

¦

¦

 

¦

¦

¦ ...

¦

¦

+------

+--------

+----

¦

 

¦

+------

+-------

+----

¦

+--------------------

 

 

+

 

¦

+-------------------

 

 

+

 

 

+--------

+

 

V

 

+----------------

 

+

 

 

¦смещение+

---------

>+---------

 

>¦Физический адрес¦

 

 

+--------

+

 

 

 

+----------------

 

+

Записи с нулевым индексом в таблицах не используются.

 

Структура дескриптора сегмента:

 

+---------------------------------------------------------------

+

¦ старший байт ¦G¦X¦D¦AVL¦пре¦P¦DPL¦S¦тип¦A¦3 младших байта¦пре¦

¦базового адреса¦ ¦ ¦ ¦

¦дел¦ ¦

¦ ¦ ¦ ¦базового адреса¦дел¦

+---------------------------------------------------------------

 

 

 

 

+

8

1 1 1 1

4 +-------------

+

24

16

 

 

 

доступ (8)

 

 

Поле предела служит для контроля и защиты адресов данного сегмента. Протяженность поля - 20 разрядов (16+4).

G - бит гранулярности, который позволяет по-разному интерпретировать поле предела. G=1 - предел указывает максимальное число страниц в сегменте (1 страница - 4К); G=0 - размер сегмента указан в байтах.

Х указывает разрядность команды: 1- 32-хразрядные, 0- 16-тираз- рядные.

AVL - бит, используемый ОС.

Доступ - структура, которая описывает тип сегмента. Различают сегменты кода, данных и системный.

+---------------

+

 

¦P¦DPL¦1¦1¦C¦R¦A¦

сегмент кода

+---------------

+

 

7 6 5 4 3 2 1 0

 

 

+---------------

+

 

¦P¦DPL¦1¦0¦D¦W¦A¦

сегмент данных

+---------------

+

 

+---------------

+

 

¦P¦DPL¦0¦ TYPE

¦

системный сегмент

+---------------

+

 

P, A - предназначены для организации виртуальной памяти; А - бит

8

обращения к сегменту, устанавливается в 1 для тех сегментов, к которым было обращение. сбрасывается в 0 процессором; Р - бит присутствия сегментов в памяти;

DPL - двухбитовое поле - номер кольца защиты сегмента (допустимый уровень привилегий), максимальная привилегия 0, минимальная - 3; С - бит подчинения. С=0 - сегмент может быть вызван только программой с не менее высоким приоритетом, чем у самого сегмента, С=1

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

R - бит разрешения чтения.

D - направление расширения сегмента. D=1 - сегмент расширяется вниз от старших адресов к младшим (стек), D=0 - наоборот;

W - возможность записи в сегмент. W=1 - запись разрешена, W=0 - разрешено только чтение. С помощью этого бита можно установить дополнительный уровень защиты сегмента.

TYPE - тип того или иного сегмента. Код, который задан в этом поле, определяет назначение сегмента. Различают следующие виды:

-TSS - сегмент состояния задачи

-LDT - сегмент локальной дескрипторной таблицы

-вентиль вызова

-вентиль прерывания

-вентиль исключения.

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

УПРАВЛЕНИЕ ПАМЯТЬЮ

Управление основной памятью сводится в основном к распределению памяти. Возможно два типа распределения: статическое и динамическое.

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

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

МОДЕЛИ ПАМЯТИ

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

Секция кода состоит из одного или более сегментов кода с именами _TEXT (один сегмент кода) или name_TEXT (много сегментов;

name - имя функции).

Секция данных имеет общее групповое имя DGROUP. По этому имени возможно обращение ко всей секции. Секция состоит из одного или более сегментов данных. Различают сегменты:

_DATA или name_DATA. Сегмент инициированных и внешних статических данных;

_BSS - сегмент неинициированных внешних и статических данных. Данные, хранящиеся в сегментах _DATA и _BSS, реализуют стати-

ческий принцип распределения памяти.

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

Для динамического распределения памяти выделяется пул (heap). Различают ближний пул - near heap и дальний пул - far heap. Ближний пул расположен в одном сегменте с секцией данных и для адресации в пределах этого пула достаточно только смещения. Дальний пул располагается в отдельном сегменте и для его указания требуется задание полного адреса: seg:off.

Существует семь моделей памяти, шесть из которых сегментированы и используются при разработке 16-ти разрядных приложений

(TINY, SMALL, MEDIUM, COMPACT, LARGE и HUGE); одна модель (FLAT)

несегментированная, на ее основе разрабатываются 32-х разрядные приложения.

TINY состоит из одного сегмента размером до 64К без отдельных разделов для стека и пула.

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

MEDIUM состоит из одного или более сегментов кода и одного сегмента данных. Возможно выделение памяти в дальнем и ближнем пулах.

COMPACT состоит из одного сегмента кода и одного сегмента данных, сегмента стека и дальнего пула.

LARGE включает один или более сегментов кода, один сегмент данных, сегмент стека и дальний пул.

HUGE может иметь один или более сегментов данных и кода, стек и дальний пул. Адреса в секции кода нормализованы так, что величина смещения не превышает 0x000F.

FLAT - 32-х разрядная модель, в состав которой может входить произвольное число сегментов данных, адресуемых в едином пространстве. Модель позволяет адресовать до 2 Гбайт адресного пространства.

ДИНАМИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ

Для сегментированных моделей предусмотрено динамическое выделение памяти из ближнего (near) или дальнего (far) пулов. Функции для динамического распределения или перераспределения памяти определены в стандарте ANSI и включены практически во все библиотеки систем программирования на С. Прототипы функций для распределения памяти описаны в заголовочном файле <alloc.h> (еще и в

<malloc.h>, <memory.h> и т.п.).

Чтобы выделить блок памяти, используют функцию: void*malloc(int size);

9

Параметром этой функции является запрашиваемое количество байт основной памяти. Эта функция возвращает адрес на начало выделенной динамической области. Например: int*p = (int*) malloc (1024); - область в 1К для хранения целых данных floap*p = (float*) malloc (1024); - область в 1К для хранения данных вещественного типа.

void*calloc(int items, int size_item);- позволяет выделить задан-

ное количество объектов указанного типа. Передаются количество объектов и протяженность одного объекта. При выделении памяти все пространство обнуляется. Например:

int*p = (int*) calloc(256, sizeof(int));- выделение памяти под

256 объектов длиной sizeof(int).

void*realloc (void* addr, int size); - перераспределение памяти.

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

Все эти функции в случае аварийного завершения возвращают нулевой указатель, т.е. NULL.

Для освобождения памяти используется функция void free (void* adr);

которой передается адрес освобождаемой области.

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

ДИНАМИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ В ОС WINDOWS

При программировании под MS Windows 3.х можно создать динамически распределенные области в локальном и глобальном пулах. Локальный пул выделяется каждому процессу, действующему в системе, а глобальный пул является общим для всех процессов. Выделение памяти из локального пула - LocalAlloc, выделение памяти из глобального пула - GlobalAlloc. Данные функции возвращают идентификатор выделенной области, т.е. некоторый номер, под которым эта область зарегистрирована в ОС. Чтобы получить зарегистрированную область в пользование, выполняют функцию GlobalLock, которая возвращает указатель. Снимается фиксация с помощью функции GlobalUnLock. GlobalFree - освободить ранее зарезервированную память.

ДИНАМИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ

ВWINDOWS 95 и WINDOWS NT

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

ипри необходимости приложение может создавать произвольное количество динамических пулов.

Ранее рассмотренные функции типа malloc, GlobalAlloc и т.п. позволяют выделять память из стандартного пула.

Впрограммном интерфейсе Win32 API имеется несколько функций для работы с пулами. Всем функциям, используемым для распределения памяти передается идентификатор пула, который имеет тип HANDLE. Для получения идентификатора стандартного пула существует функция: GetProcessHeap (void); которая возвращает данный идентификатор.

Для создания динамического пула применяется функция: HANDLE HeapСreate (DWORD flOptions,

DWORD dwInitialSize, DWORD dwMaximumSize);

Тип DWORD соответствует unsigned long.

Первый параметр - флаги. Допустимы следующие сочетания: HEAP_GENERATE_EXEPTIONS - генерировать исключение при аварийном завершении; HEAP_NO_SERIALIZE - не выполнять блокировку одновременного обращения к пулу нескольких задач одного процесса. Сочетание этих флагов может быть обеспечено операцией логического сложения (дизъюнкцией).

Второй параметр - начальная длина пула; Третий параметр - максимальная протяженность пула (если неизвест-

на, то = 0).

Функция разрушения динамического пула:

BOOL HeapDestroy (HANDLE hHeap);

Ей передается идентификатор пула, а возвращается логическое значение.

Получение блока памяти в пуле:

LPVOID HeapAlloc (HANDLE hHeap, DWORD dwFlags, DWORD dwBytes);

1 параметр - идентификатор пула;

2 параметр - рассмотренные ранее флаги и HEAP_ZERO_MEMORY, который позволяет обнулить выделенное пространство; 3 параметр - протяженность блока памяти.

Функция возвращает указатель на выделенную область памяти (LPVOID - дальний указатель на тип void: void far*).

Изменение протяженности ранее выделенного пространства:

LPVOID HeapRealloc (HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, DWORD dwBytes);

2 параметр - флаги. Используются все предыдущие + HEAP_REALLOC_IN_PLACE_ONLY (не изменять начальный адрес области); 3 параметр - адрес исходного блока; 4 параметр - новая протяженность.

Если нет ошибок, возвращается указатель на область нового размера.

Чтобы определить размер пула используется следующая функция:

DWORD HeapSize (HANDLE hHeap, DWORD dwFlags, LPVOID lpMem);

значения параметров флагов могут быть "0" или HEAP_NO_SERIALIZE.

Освобождение выделенного блока:

BOOL HeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem);

значение флагов те же.

ФУНКЦИИ ОС ПО УПРАВЛЕНИЮ ОСНОВНОЙ ПАМЯТЬЮ

Функции ОС по управлению основной памятью:

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]