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