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

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

ОТВЕТЫ НА ВОПРОСЫ ПО КУРСУ “СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ”, 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-уровненвую систему защиты, управление защитой

осуществляется с помощью уровней привелигированности. Уровень

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

ввода-вывода и доступом к сегментным дескрипторам.

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

Процессор

Уст-ва ввода-вывода

Опер. память