31. Особенности указателей в 80х86. Модели памяти.

См. 30.

Понятие среды ОС. Взаимодействие прикладной программы с ОС. Системные соглашения о связях.

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

Ответы на вопросы по курсу “Системное программирование”Ответы на вопросы по курсу “Системное программирование” Аппаратные средства ПРИЛОЖЕНИЕ

Ответы на вопросы по курсу “Системное программирование”Ответы на вопросы по курсу “Системное программирование”Ответы на вопросы по курсу “Системное программирование”Ответы на вопросы по курсу “Системное программирование”Ответы на вопросы по курсу “Системное программирование” Операционная система

Прикладное ПО API

Ответы на вопросы по курсу “Системное программирование”
Ответы на вопросы по курсу “Системное программирование”

СИСТЕМА

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

а) запуск и остановка прикладных программ.

б) распределение ресурсов.

в) обеспечение таких системных услуг, которых нет в аппаратуре.

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

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

Например: стандарт POSIX на API ОС UNIX включает функции:

Набор файловых операций

Операции со строками

Ф-ии многозадачности, управления процессами

Управление терминалом.

Помимо POSIX есть API Win32 и т.п. АPI ОС может включать самые разнообразные услуги, вплоть до поддержки функций телефонного аппарата на базе модема (TAPI Win32)

Принципы междумодульного взаимодействия: внешние ссылки и общие имена (public names)

Внешние ссылки из сегмента позволяют получать доступ к данным, которые объявлены в другом модуле. Для объявления внешних ссылок в компиляторах с ассемблера используется директива EXTRN. Пример использования:

EXTRN maybe:far

Идентификаторы в программе можно сделать доступными из других модулей. Для этого применяется директива PUBLIC. Пример использования:

maybe PROC far

PUBLIC maybe

Такие действия необходимы для того, чтобы после раздельной компиляции модулей компоновщик, используя имена и смещения, записанные в объектных модулях, разрешил все внешние ссылки директив EXTRN, использовав соответствующие директивы PUBLIC. Если для какой-то ссылки EXTRN не будет обнаружен соответствующий идентификатор PUBLIC, то компоновщик выдаст ошибку unresolved external <имя_идентификатора>, и сборка прекратится.

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

а) для разбиения большого текста на модули по функциональному назначению;

б) для создания библиотек процедур;

в) для написания подпрограмм в языки высокого уровня.

Технология разработки программ – трансляция и редактирование связей. Понятие об исходном, объектном, выполняемом модулях.

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

Объектный модуль – код программы после трансляции (компиляции), преобразованный в машинные коды. Помимо них содержит внешние ссылки и информацию для редактора связей и может также содержать отладочную информацию (debug info).

Исполняемый модуль –модуль, содержащий готовую к выполнению программу – м.б. 2 видов:

а) точный образ памяти программы с привязкой к абсолютным адресам (в MS-DOS – формат файла *.COM)

б) перемещаемый исполняемый формат, см. 17.

Трансляция – получение объектного кода из исходного.

Редактирование связей – разрешение внешних ссылок и создание исполняемого модуля из объектных.

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

Собственно сегменты и распределение памяти см. 30.

Атрибуты сегментов

Атрибут комбинации сегмента предназначен дляуказания компоновщику, каким образом объединять сегменты, находящиеся в разных модулях и имеющие одинаковые имена. М.б. PRIVATE (сегмент не будет объединяться с одноименными из др. модулей), PUBLIC (будет) и некоторые другие.

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

Атрибут выравнивания сегмента – сообщает компонаовщику, чтобы он позаботился о том, чтобы сегмент начинался с указанной границы. Возможное выравнивание: BYTE – выравнивание не делается, сегмент начинается со следующего байта, WORD (DWORD) – выравнивание погарнице слова (двойного слова), PARA – выравнивание по границе 16-байтового параграфа, и т.п.

Атрибут размера сегмента – показывает размер, 16 или 32-битные сегменты.

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

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

Разрешение внешних ссылок – см. 33, 17.

Библиотеки объектных модулей – пакет объектных модулей, собранных в один файл и подключаемый к программе на этапе разрешения внешних ссылок (все идентификаторы, которые должны быть доступны из библиотек, объявляются в модулях как PUBLIC). Компоновщик может просматривать библиотеку и самостоятельно находить нужные модули, избавляя от этого программиста. Библиотеки делаются с помощью программы-библиотекаря. Библиотекарь может добавлять и извлекать модули, а также получать список доступных идентификаторов.

Любой компилятор ЯВУ имеет в комплекте несколько стандартных библиотек, например, библиотеки ввода-вывода, работы с плавающей точкой, графическую и т.п.

Типы внешних ссылок и общих имен. Статическое и динамическое разрешение ссылок.

Статическое и динамическое разрешение внешних ссылок.

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

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

б) DLL – принцип разделяемых библиотек. DLL – это пакет функций, отредактированный для исполнения в позиционно-независимом стиле. Имеет таблицу всех содержащихся функций. Для работы с ним программа выполняет 1) функцию загрузки DLL, 2)переход по смещению в таблице функций.

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

Динамическое распределение памяти, оверлейные программы. Общая структура объектного модуля.

Стандартный исполняемый псевдоперемещаемый модуль (например, типа EXE для DOS) содержит сегменты в том виде, в котором они будут размещены в памяти. Такое распределение памяти называется статическим. В ситуации нехватки памяти, отдельный код или данные, которые могут быть нужны не все вместе, а по очереди, разумнее было бы подгружать в память в процессе выполнения. Выделение памяти под выполняемый код в процессе работы программы и удаление их после использования называется динамическим распределением памяти. Программы, содержащие динамически подгружаемые модули, называются оверлейными, а сами такие модули – оверлеями. Загрузка данных из модуля в общем случае не представляет проблем, в случае загрузки кода перед выполнением он должен быть особым образом подготовлен (например, с учетом местоположения вызывающей программы в памяти для подпрограмм должны быть образованы правильные ссылки). Такую подготовку выполняет специальная программа – менеджер оверлеев. Он может поставляться, а) как библиотека компилятора [в Borland Pascal 7.0]. В этом случае оверлейный модуль, как правило, имеет какой-то свой специфический формат, работа с ним ведется с помощью стандартных подпрограмм. Код оверлейных подпрограмм и данных размещается в памяти [в BP буфер оверлеев имеет плавающую границу с кучей] и по окончании работы с ним может быть удален. б) Может быть внедрен в структуру оверлейного модуля. В этом случае модуль имеет формат исполняемого файла, и для инициализации он должен быть запущен стандартным для ОС способом из-под вызывающей программы.

Оверлеи имеют широкое распространение в системе MS-DOS, при подгрузке используется не только основная память, но и DOS-спецификации расширенной: XMS, EMS. В развитых многозадачных системах используется, в основном, очень похожая технология DLL. Ее отличие в том, что она функционирует в защищенном режиме и позволяет использовать одну свою копию в памяти разным программам. DLL можно рассматривать как следущее поколение оверлейной технологии.

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

Основные функции ОС:

1) Управление процессором путем передачи управления программам.

2) Обработка прерываний, синхронизация доступа к ресурсам.

3) Управление памятью.

4) Управление устройствами ввода-вывода.

5) Управление инициализацией программ, межпрограммные связи.

6) Управление данными на долговременных носителях путем поддержки файловой системы.

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

Защита программ и данных в мультипрограммных средах. Режимы управления. Защита и распределение памяти.

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

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

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

Управление ЦП – фоновая обработка, пактная обработка, прерывания. Общая схема функционирования ОС – супервизор, диспетчер, планировщик. Виртуализация.

Супервизор – программа многозадачной ОС, обеспечивающая наилучшее использование ресурсов ЭВМ при одновременном выполнении нескольких задач.

Планировщик – программа, выполняющая алгоритм планирования процессов. Планирование очередности предоставления выполняющимся процессам времени центрального процессора (диспетчеризация). Процессы работают с центральным процессором в режиме разделения времени.

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

Виртуальная память отличается от обычной ОП тем, что какие-то ее редко используемые фрагменты могут находиться на диске и подгружаться в реальную ОП по мере необходимости. Такая организация памяти позволяетс снять ограничение, накладываемое объемом физической памяти, установленной на ЭВМ. Для реализации ВП используют, например, динамическю переадресацию. Сегментом в терминах ВП называется область памяти из 2L страниц. Вначале по номеру в таблице сегментов отыскивается сегмент. Таблица сегментов содержит начальный адрес таблицы страниц. Вторая часть адреса используется для обращения в эту таблицу, и по ней находится физический адрес данной страницы. Результаты поизка по таблицам запоминаются в быстродействующем ассоциативном ЗУ, называемом TLB. Наиболее часто употребляемые адреса откладываются в TLB и поэтому 98-99% обращений к памяти идут без просмотра таблиц.

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

Свопинг – алгоритм реализации виртуальной памяти. Его можно разбить на три части: управление пространством на устройстве выгрузки, выгрузка процессов из основной памяти и подкачка процессов в основную память. В качестве устройства выгрузки используют раздел на устройстве типа жесткого (swap-partition) или дисковый файл (swap-file) на таком устройстве.

 Системная архитектура 80386: сегментирование, страничная организация, средства авторизации и защиты.

Возможности 80386 полностью раскрываются, когда он работает в защищенном режиме. В этом режиме адресное пространство расширяется до 4Т, а виртуальное – до 64Т. 80386 использует сегментацию – один из методов управления памятью. Сегменты – самостоятельные области памяти, имеющие собственные атрибуты. В сегменте м.б. код программы или данные. Вся информация о сегменте запоминается в спец. структуре, наз. дескриптором. Дескрипторы используются аппаратно и не доступны из программ. Межсегментные вызовы в 80386 происходят с учетом защиты. Помимо сегментации, 80386 поддерживает другой вид организации памяти – страничную организацию. Страницы – это малые блоки памяти одинакового размера, не имеющие логической связи со структурой программ. Они используются в основном на уровне ОС. Страницы могут подкачиваться с диска и вытесняться на диск (пейджинг).

В 80386 есть режим виртуального 8086 – режим, эмулирующий 8086 в защищенном режиме, при котором у каждого пользователя многозадачной системы создается иллюзия монопольного владения ресурсами машины.

80386 поддерживает 4-уровненвую систему защиты, управление защитой осуществляется с помощью уровней привелигированности. Уровень привелигированности управляется привелигированными командами, командами ввода-вывода и доступом к сегментным дескрипто


Информация о работе «Ответы на вопросы по курсу “Системное программирование”»
Раздел: Информатика, программирование
Количество знаков с пробелами: 61776
Количество таблиц: 6
Количество изображений: 1

Похожие работы

Скачать
571702
2
0

... будущего на основе выявленных закономерностей. Вывод: предметом науки государственного управления является структура и деятельность органов, составляющих аппарат государства и публичных коллективов. ВОПРОС.№53 ГОСУДАРСТВЕННОЕ И МЕСТНОЕ УПРАВЛЕНИЕ В СИСТЕМЕ РАЗДЕЛЕНИЯ ВЛАСТЕЙ Принципы организации и функционирования ГМУ в системе горизонтального разделения властей. Государство - институт ...

Скачать
376492
21
0

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

Скачать
257002
0
22

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

Скачать
58375
0
0

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

0 комментариев


Наверх