Ответы на вопросы по курсу "систеиное программирование".
1. История развития ВТ в связи с историей развития системного программного обеспечения. Современные компьютерные системы наряду с прикладным ПО всегда содержат системное, которое обеспечивает организацию вычислительного процесса. История системного программного обеспечения связана с появлением первой развитой в современном понимании ОС UNIX. 1965 - Bell labs разрабатывает операционную систему Multix - прообраз UNIX, имеющий далеко не все части современной системы. До этого времени не существовало мобильных ОС (переносимых на разные типы машин) и Multix также не был мобильной ОС. 1971 - написан UNIX для работы на мощнейшей платформе того времени PDP - 11 1977 - Становится переносимой системой, т.к. переписан на языке C (ATTsystem 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-уровненвую систему защиты, управление защитой осуществляется с помощью уровней привелигированности. Уровень привелигированности управляется привелигированными командами, командами ввода-вывода и доступом к сегментным дескрипторам. 1