Ответы на вопросы по курсу Системное программирование
Ответы на вопросы по курсу Системное программирование
ОТВЕТЫ НА ВОПРОСЫ ПО КУРСУ “СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ”, 1997 г.
1. История развития ВТ в связи с историей развития системного программного
обеспечения.
Современные компьютерные системы наряду с прикладным ПО всегда содержат
системное, которое обеспечивает организацию вычислительного процесса.
История системного программного обеспечения связана с появлением первой
развитой в современном понимании ОС UNIX.
1965 - Bell labs разрабатывает операционную систему Multix - прообраз UNIX,
имеющий далеко не все части современной системы. До этого времени не
существовало мобильных ОС (переносимых на разные типы машин) и Multix также
не был мобильной ОС.
1971 - написан UNIX для работы на мощнейшей платформе того времени PDP - 11
1977 - Становится переносимой системой, т.к. переписан на языке C (AT&T
system V)
1981 - платформа Intel начинает резко наращивать свои возможности.
Колоссальным прорывом было создание 8088, затем 8086, 80286, etc.
Появляется однопользовательская ОС MS-DOS, на 10 лет ставшая стандартом де-
факто для пользователей персональных компьютеров. Но для машин с
процессором Intel появляются и версии UNIX.
Конец 80 – начало 90 гг. – аппаратные средства резко увеличивают свою
мощность. Microsoft создает новую ОС Windows NT и появляется стандарт
Win32. Позже появляется Windows 95 – ОС для одного рабочего места, но
имеющая многие возможности NT, призванная вытеснить MS-DOS. Аппаратные
средства позволяют создавать 64-битные версии такой ОС, как UNIX, и в
скором времени она появляется и используется на платформе Alpha фирмы DEC.
С наращиванием мощности аппаратных средств системное программное
обеспечение становится все более изощренным и имеющим большие возможности.
2. Общая классификация вычислительных машин. Современные архитектурные
линии ЭВМ. Системное ПО и его место в современной информатике.
ЭВМ являются преобразователями информации. В них исходные данные задачи
преобразуются в результат ее решения. В соответствии с используемой формой
представления информации машины делятся на два класса: непрерывного
действия - аналоговые и дискретного действия - цифровые. В силу
универсальности цифровой формы представления информации цифровые
электронные вычислительные машины представляют собой наиболее универсальный
тип устройства обработки информации. Основные свойства ЭВМ - автоматизация
вычислительного процесса на основе программного управления, огромная
скорость выполнения арифметических и логических операций, возможность
хранений большого количества различных данных, возможность решения широкого
круга математических задач и задач обработки данных. Особое значение ЭВМ
состоит в том, что впервые с их появлением человек получил орудие для
автоматизации процессов обработки информации. Управляющие ЭВМ –
предназначены для управления объектом или производственным процессом. Для
связи с объектом их снабжают датчиками. Непрерывные значения сигналов с
датчиков преобразуются с помощью аналогово-цифровых преобразователей в
цифровые сигналы, кот. вводятся в ЭВМ в соотв с алгоритмом упр-я. После
анализа сигналов формируются упр. воздействия, которые с пом. цифро-
аналоговых преобразователей преобразуются в аналоговые сигналы. Через
исполнительные механизмы изменяется состояние объекта.
Универсальные ЭВМ – предназначены для решения большого круга задач,
состав которых при разаработке ЭВМ не конкретизируется.
Пример современных архитектурных линий ЭВМ: персональные ЭВМ (IBM PC и
Apple Macintosh – совместимые машины), машины для обработки специфической
информации (графические станции Targa, Silicon Graphics), большие ЭВМ
(мэйнфреймы IBM, Cray, ЕС ЭВМ).
Общее назначение системного ПО - обеспечивать интерфейс между
программистом или пользователем и аппаратной частью ЭВМ (операционная
система, программы-оболочки) и выполнять вспомогательные функции (программы-
утилиты) Современная операционная система обеспечивает следующее:
1) Управление процессором путем передачи управления программам.
2) Обработка прерываний, синхронизация доступа к ресурсам.
3) Управление памятью.
4) Управление устройствами ввода-вывода.
5) Управление инициализацией программ, межпрограммные связи.
1) Управление данными на долговременных носителях путем поддержки файловой
системы.
См. также стандарты в (1).
1. Общее понятие архитектуры. Принципы построения ВС 4-го поколения.
Архитектура – совокупность технических средств и их конфигураций, с
помощью которых реализована ЭВМ. ЭВМ 4 поколения, имеет, как правило,
шинную архитектуру, что означает подключение всех устройств к одной
электрической магистрали, наз. шиной. Если устройство выставило сигнал на
шину, другие могут его считать. Это свойство используется для организации
обмена данными. С этой целью шина разделена на 3 адреса – шина адреса, шина
данных и шина управляющего сигнала. Все современные ЭВМ также включают
устройство, наз. арбитром шины, которое определяет очередность занятия
ресурсов шины разными устройствами. В PC распространены шины ISA, EISA,
PCI, VLB.
ШИНА
2. Состав и функции основных блоков ВС: процессора, оперативной памяти,
устройства управления, внешних устройств.
Структурная схема машины фон Неймана:
|Арифм.-логич. |, и сборка прекратится.
Использование многомодульной структуры необходимо:
а) для разбиения большого текста на модули по функциональному
назначению;
б) для создания библиотек процедур;
в) для написания подпрограмм в языки высокого уровня.
34. Технология разработки программ – трансляция и редактирование связей.
Понятие об исходном, объектном, выполняемом модулях.
Исходный код программы – код, написанный на языке программирования.
Может включать модули на ЯВУ и модули с подпрограммами на языке ассемблера.
Объектный модуль – код программы после трансляции (компиляции),
преобразованный в машинные коды. Помимо них содержит внешние ссылки и
информацию для редактора связей и может также содержать отладочную
информацию (debug info).
Исполняемый модуль –модуль, содержащий готовую к выполнению программу
– м.б. 2 видов:
а) точный образ памяти программы с привязкой к абсолютным адресам (в
MS-DOS – формат файла *.COM)
б) перемещаемый исполняемый формат, см. 17.
Трансляция – получение объектного кода из исходного.
Редактирование связей – разрешение внешних ссылок и создание
исполняемого модуля из объектных.
35. Основные функции редактора связей – распределение памяти,
разрешение внешних ссылок – см. 17, 33.
36. Программные сегменты и их атрибуты, способы распределения памяти
под сегменты.
Собственно сегменты и распределение памяти см. 30.
Атрибуты сегментов
Атрибут комбинации сегмента предназначен дляуказания компоновщику, каким
образом объединять сегменты, находящиеся в разных модулях и имеющие
одинаковые имена. М.б. PRIVATE (сегмент не будет объединяться с
одноименными из др. модулей), PUBLIC (будет) и некоторые другие.
Атрибут класса сегмента представляет собой строку, заключенную в кавычки,
которая позволяет определить компоновщику нужный порядок размещения
сегментов при помещении их в программу из разных модулей. Он группирует
вместе сегменты с одинаковым классом.
Атрибут выравнивания сегмента – сообщает компонаовщику, чтобы он
позаботился о том, чтобы сегмент начинался с указанной границы. Возможное
выравнивание: BYTE – выравнивание не делается, сегмент начинается со
следующего байта, WORD (DWORD) – выравнивание погарнице слова (двойного
слова), PARA – выравнивание по границе 16-байтового параграфа, и т.п.
Атрибут размера сегмента – показывает размер, 16 или 32-битные сегменты.
Атрибут доступа – показывает возможность доступа к сегменту в защищенном
режиме – доступен как кодовый, для чтения, записи, чтения и записи.
37. Разрешение внешних ссылок, функция автовызова, библиотеки объектных
модулей и их использование.
Разрешение внешних ссылок – см. 33, 17.
Библиотеки объектных модулей – пакет объектных модулей, собранных в один
файл и подключаемый к программе на этапе разрешения внешних ссылок (все
идентификаторы, которые должны быть доступны из библиотек, объявляются в
модулях как PUBLIC). Компоновщик может просматривать библиотеку и
самостоятельно находить нужные модули, избавляя от этого программиста.
Библиотеки делаются с помощью программы-библиотекаря. Библиотекарь может
добавлять и извлекать модули, а также получать список доступных
идентификаторов.
Любой компилятор ЯВУ имеет в комплекте несколько стандартных
библиотек, например, библиотеки ввода-вывода, работы с плавающей точкой,
графическую и т.п.
38. Типы внешних ссылок и общих имен. Статическое и динамическое разрешение
ссылок.
Внешние ссылки см. 17, 33, 34.
Статическое и динамическое разрешение внешних ссылок.
Процесс разрешения внешних ссылок на этапе создания исполняемого модуля –
статическое разрешение ссылок. Возможно и динамическое подсоедиение нужных
модулей на этапе работы программы.
а) Динамически вызываемый загрузчик, т.е. программа вызывает загрузчик и
подсоединяет недостающие части. Такой подход невыгоден (сложен и требует
много времени)
б) DLL – принцип разделяемых библиотек. DLL – это пакет функций,
отредактированный для исполнения в позиционно-независимом стиле. Имеет
таблицу всех содержащихся функций. Для работы с ним программа выполняет 1)
функцию загрузки DLL, 2)переход по смещению в таблице функций.
При работе с DLL несколько программ могут использовать одну ее копию в
памяти.
39. Динамическое распределение памяти, оверлейные программы. Общая
структура объектного модуля.
Стандартный исполняемый псевдоперемещаемый модуль (например, типа EXE
для DOS) содержит сегменты в том виде, в котором они будут размещены в
памяти. Такое распределение памяти называется статическим. В ситуации
нехватки памяти, отдельный код или данные, которые могут быть нужны не все
вместе, а по очереди, разумнее было бы подгружать в память в процессе
выполнения. Выделение памяти под выполняемый код в процессе работы
программы и удаление их после использования называется динамическим
распределением памяти. Программы, содержащие динамически подгружаемые
модули, называются оверлейными, а сами такие модули – оверлеями. Загрузка
данных из модуля в общем случае не представляет проблем, в случае загрузки
кода перед выполнением он должен быть особым образом подготовлен (например,
с учетом местоположения вызывающей программы в памяти для подпрограмм
должны быть образованы правильные ссылки). Такую подготовку выполняет
специальная программа – менеджер оверлеев. Он может поставляться, а) как
библиотека компилятора [в Borland Pascal 7.0]. В этом случае оверлейный
модуль, как правило, имеет какой-то свой специфический формат, работа с ним
ведется с помощью стандартных подпрограмм. Код оверлейных подпрограмм и
данных размещается в памяти [в BP буфер оверлеев имеет плавающую границу с
кучей] и по окончании работы с ним может быть удален. б) Может быть внедрен
в структуру оверлейного модуля. В этом случае модуль имеет формат
исполняемого файла, и для инициализации он должен быть запущен стандартным
для ОС способом из-под вызывающей программы.
Оверлеи имеют широкое распространение в системе MS-DOS, при подгрузке
используется не только основная память, но и DOS-спецификации расширенной:
XMS, EMS. В развитых многозадачных системах используется, в основном, очень
похожая технология DLL. Ее отличие в том, что она функционирует в
защищенном режиме и позволяет использовать одну свою копию в памяти разным
программам. DLL можно рассматривать как следущее поколение оверлейной
технологии.
40. Основные функции ОС. Принципы мультипрограммирования. Системные
ресурсы.
Основные функции ОС:
1) Управление процессором путем передачи управления программам.
2) Обработка прерываний, синхронизация доступа к ресурсам.
3) Управление памятью.
4) Управление устройствами ввода-вывода.
5) Управление инициализацией программ, межпрограммные связи.
6) Управление данными на долговременных носителях путем поддержки файловой
системы.
Ресурс – какой-либо объект или показатель надежности какого-либо объекта.
Системные ресурсы – совокупность аппаратных ресурсов и системных сервисов.
Основными потребителями системных ресурсов являются процессы, выполняемые в
системе.
41. Защита программ и данных в мультипрограммных средах. Режимы управления.
Защита и распределение памяти.
Защита программ и данных в многозадачных ОС означает малую
вероятность того, что сбой одной из выполняющихся программ не вызовет
повреждения данных или кода других программ, и по возможности изолировать
процессы друг от друга. Во всех ОС сущ. хотя бы 2 режима процессора –
системный и пользовательский. Программа исп. в пользовательском режиме и не
может использовать ряд команд. В системном режиме доступно все.
Переключение режимов работы осуществляется системными вызовами. Системный
вызов – специальная команда, приводящая к прерыванию, и в ядре ОС
существует несколько точек, куда перейдет управление по этому прерыванию.
386 имеет встроенный механизм для этих переключений – шлюз.
Защита памяти – осуществляется путем блокировки доступа к памяти
других процессов, а также блокировки доступа к памяти ядра. Один из
способов – вся память делится на страницы, и у каждой есть замок – 4-
битовый признак, который можно установить только привелигированной
командой. В процессоре есть 4-битовый регистр – ключ, который также можно
установить только привелигированной командой. При обращении происходит
сравнение замка и ключа.
С появлением многозадачности появилась проблема распределения памяти.
При работе реальной программы обращения к ОП имеют тенденцию к локализации.
Память можно разделить на используемую и неиспользуемую. Чтобы отследить
использование области памяти, всю ОП можно разбить на страницы
фиксированного размера (4К) и с каждой страницей связать бит, который
устанавливать при обращении к данной странице.
42. Управление ЦП – фоновая обработка, пактная обработка, прерывания.
43. Общая схема функционирования ОС – супервизор, диспетчер, планировщик.
Виртуализация.
Супервизор – программа многозадачной ОС, обеспечивающая наилучшее
использование ресурсов ЭВМ при одновременном выполнении нескольких задач.
Планировщик – программа, выполняющая алгоритм планирования процессов.
Планирование очередности предоставления выполняющимся процессам времени
центрального процессора (диспетчеризация). Процессы работают с центральным
процессором в режиме разделения времени.
44. Виртуальная память и способы ее реализации. Страничная память. Свопинг.
Виртуальная память отличается от обычной ОП тем, что какие-то ее
редко используемые фрагменты могут находиться на диске и подгружаться в
реальную ОП по мере необходимости. Такая организация памяти позволяетс
снять ограничение, накладываемое объемом физической памяти, установленной
на ЭВМ. Для реализации ВП используют, например, динамическю переадресацию.
Сегментом в терминах ВП называется область памяти из 2L страниц. Вначале по
номеру в таблице сегментов отыскивается сегмент. Таблица сегментов содержит
начальный адрес таблицы страниц. Вторая часть адреса используется для
обращения в эту таблицу, и по ней находится физический адрес данной
страницы. Результаты поизка по таблицам запоминаются в быстродействующем
ассоциативном ЗУ, называемом TLB. Наиболее часто употребляемые адреса
откладываются в TLB и поэтому 98-99% обращений к памяти идут без просмотра
таблиц.
Страничная организация памяти – организация, при которой адресное
пространство памяти разбивается на малые участки – страницы. Используется
для управления памятью в системах, работающих в защищенном режме. Как
правило, такая организация памяти подразумевает пейджинг – механизм
виртуальной памяти, при котором страницы вытесняются на диск и
подкачиваются с диска.
Свопинг – алгоритм реализации виртуальной памяти. Его можно разбить
на три части: управление пространством на устройстве выгрузки, выгрузка
процессов из основной памяти и подкачка процессов в основную память. В
качестве устройства выгрузки используют раздел на устройстве типа жесткого
(swap-partition) или дисковый файл (swap-file) на таком устройстве.
45. Системная архитектура 80386: сегментирование, страничная организация,
средства авторизации и защиты.
Возможности 80386 полностью раскрываются, когда он работает в
защищенном режиме. В этом режиме адресное пространство расширяется до 4Т, а
виртуальное – до 64Т. 80386 использует сегментацию – один из методов
управления памятью. Сегменты – самостоятельные области памяти, имеющие
собственные атрибуты. В сегменте м.б. код программы или данные. Вся
информация о сегменте запоминается в спец. структуре, наз. дескриптором.
Дескрипторы используются аппаратно и не доступны из программ. Межсегментные
вызовы в 80386 происходят с учетом защиты. Помимо сегментации, 80386
поддерживает другой вид организации памяти – страничную организацию.
Страницы – это малые блоки памяти одинакового размера, не имеющие
логической связи со структурой программ. Они используются в основном на
уровне ОС. Страницы могут подкачиваться с диска и вытесняться на диск
(пейджинг).
В 80386 есть режим виртуального 8086 – режим, эмулирующий 8086 в
защищенном режиме, при котором у каждого пользователя многозадачной системы
создается иллюзия монопольного владения ресурсами машины.
80386 поддерживает 4-уровненвую систему защиты, управление защитой
осуществляется с помощью уровней привелигированности. Уровень
привелигированности управляется привелигированными командами, командами
ввода-вывода и доступом к сегментным дескрипторам.
-----------------------
Процессор
Уст-ва ввода-вывода
Опер. память