Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Флоренсов А.Н. УП Системное программное обеспечение.docx
Скачиваний:
42
Добавлен:
28.06.2021
Размер:
148.95 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение высшего образования «Омский государственный технический университет»

А. Н. ФЛОРЕНСОВ

Системное программное обеспечение

Учебное текстовое электронное издание локального распространения

Омск Издательство ОмГТУ 2017

————————————————————————————————

Сведения об издании: 1, 2 © ОмГТУ, 2017

ISBN 978-5-8149-2441-4

УДК 681.3

  1. ББК 32.973.73

Ф73

Рецензенты:

В. С. Калекин, д.т.н., профессор;

А. П. Загородников, к.т.н., директор ООО «АИСистемс»

Флоренсов, А. Н.

Ф73

Системное программное обеспечение : учеб.пособие / А. Н. Фло-ренсов ; Минобрнауки Росии, ОмГТУ. – Омск : Изд-во ОмГТУ, 2017.

Isbn 978-5-8149-2441-4

Рассматриваются основные вопросы дисциплины «Системное программное обеспечение». Изучается машинно зависимое системное программирование для современных компьютеров. В качестве сред обучения параллельно используются операционные системы Linux и Windows. Излагаются вопросы применения объектных библиотек с учетом особенностей для 32- и 64-битных операционных систем. Подробно изучаются построение и использование библиотек динамической компоновки.

Предназначается для профессиональной подготовки студентов, обучающихся по направлению 230100.62 «Информатика и вычислительная техника».

УДК 681.3

  1. ББК 32.973.73

Рекомендовано редакционно-издательским советом Омского государственного технического университета

ISBN 978-5-8149-2441-4 © ОмГТУ, 2017

1 электронный оптический диск

Оригинал-макет издания выполнен в Microsoft Office Word 2007/2010 с использованием возможностей Adobe Acrobat Reader.

Минимальные системные требования:

 процессор Intel Pentium 1,3 ГГц и выше;

 оперативная память 256 Мб и более;

 свободное место на жестком диске 260 Мб и более;

 операционная система Microsoft Windows XP/Vista/7/10;

 разрешение экрана 1024×768 и выше;

 акустическая система не требуется;

дополнительные программные средства Adobe Acrobat Reader 5.0 и выше.

Редактор О. В. Маер Компьютерная верстка Л. Ю. Бутаковой

Сводный темплан 2017 г. Подписано к использованию 25.04.17.

Объем 0,86 Мб.

—————————————————

Издательство ОмГТУ. 644050, г. Омск, пр. Мира, 11; т. 23-02-12 Эл.почта: info@omgtu.ru

Введение

В государственном образовательном стандарте Российской Федерации от 2000 года для специальности 220100 (Вычислительные машины, комплексы, системы и сети) содержание учебной дисциплины «Системное программное обеспечение» задавалось перечислением следующих базовых вопросов: «пользовательский интерфейс операционной среды; управление задачами; управление памятью; управление вводом-выводом; управление файлами; пример современной операционной системы; программирование в операционной среде; ассемблеры; мобильность программного обеспечения; макроязыки; трансляторы; формальные языки и грамматики, типы грамматик; вывод цепочек; конечный и магазинный автоматы, распознаватели и преобразователи, построение автомата по заданной грамматике; структура компиляторов и интерпретаторов, лексичес-кий, синтаксический и семантический анализаторы, генератор кода; распределение памяти, виды переменных; статическое и динамическое связывание; загрузчики; функции загрузчика; настраивающий и динамичес-кий загрузчики; подключение библиотек». Позже содержание основных дисциплин, изучаемых в российских университетах, уже не стало строго лимитироваться государственными стандартами, а, подобно большинству продукции в России, только собственными техническими условиями и документами производителя услуг. Тем не менее, профессиональное и научно-техническое содержание фундаментальных учебных дисциплин не могло значительно измениться по существу этих дисциплин. Поэтому указанные в старом стандарте базовые вопросы требуют того или иного знакомства с ними.

В сложившемся комплексе учебных дисциплин для специальности «Информатика и вычислительная техника» на втором курсе подготовки бакалавров обязательно присутствует дисциплина «Операционные системы», которая в техническом вузе содержит изучение профессионального подхода к первым тематическим вопросам указанного выше перечня, а именно изучение вопросов пользовательского программного интерфейса операционной системы, управления задачами, памятью, вводом-выводом, файлами, полупрофессиональное знакомство с двумя основными современными операционными системами и начальное программирование в операционной среде текстовых окон интерфейса. Тем самым значительная часть более общей темы системного программного обеспечения уже охватывается указанной дисциплиной. Для завершающих этапов подготовки бакалавров по этой теме остаются неизученными только вопросы, связанные с программированием на нижнем уровне архитектуры вычислительных систем, описываемые для пользователя на языках типа ассемблера; знакомство с особенностями использования системной архитектуры при построении системных программ; методы и средства разработки систем программирования и трансляторов с языков программирования; организация, функционирование и использование системных библиотек программных файлов.

В настоящее время на книжном рынке России присутствует немало книг и учебных пособий по программированию на ассемблере и системному программному обеспечению, но большинство из них по-прежнему ориентируется на когда-то основные, но давно устаревшие средства и подходы. Характерной особенностью большинства этих изданий является использование языка ассемблер, созданного еще четверть века назад и предназначенного исключительно для семейства процессоров Intel. Модификации указанных ассемблеров позже стали охватывать и возможности 32-битных моделей процессоров, но содержание практически всех учебных пособий строится в архаичной теперь последовательности: вначале детально излагается ассемблер и основанные на нем средства доступа к 16-битной операционной системе, а потом, по мере накопления опыта, читателя переводят на освоение особенностей 32-битной архитектуры процессоров и приемы программирования на ассемблере для операционных систем типа MS Windows.

Косвенным следствием указанной ситуации стало неявное «выталкивание» из учебных программ и учебных пособий по системному программному обеспечению темы программирования на ассемблере. Можно отметить и явное отворачивание от ассемблеров современных педагогов, мышление которых сформировалось под довлеющим влиянием формальных систем. Для последних близким и естественным кажется изучение и использование языков программирования высокого уровня (чем выше уровень, тем лучше!), но от ассемблеров они отворачиваются, как от чего-то низменного и недостойного.

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

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

К наиболее высокому уровню операционных понятий относятся математические множества и переменные. Для них не делается никаких допущений о расположении в реальном или еще каком-то пространстве и не задается никаких частных особенностей или атрибутов. К другому уровню понятий, появившемуся как раз в связи с технической информатикой, относятся информационные объекты языков программирования высокого уровня, в частности переменные в программах этих языков. Информационные объекты в языках программирования высокого уровня требуют предварительного описания, которое формально определяет их тип и/или атрибуты. В лучшем случае обучение программированию на языках высокого уровня закладывает четкое понимание, что значение числовых переменных таких языков и математическое число существенно отличаются.

В действительности, компьютер не абстрактный и не идеальный объект и все информационные объекты внутри него существенно отличаются от понятий языка высокого уровня (как бы ни хотелось, чтобы они совпадали). Любой информационный объект исполняемой программы вынужденно должен иметь местонахождение внутри памяти компьютера. При выполнении подавляющего большинства программ попытка осуществления действий, которые переходят действительные границы объекта, отнюдь не бессмысленна (хотя часто и приводит к ошибочным результатам). Более того, этот прием очень часто практически используется на уровне аппаратуры! Настойчивые попытки заставить программу выполняться со стороны человека, владеющего только первыми двумя из перечисленных уровней операционных понятий, в ряде случаев подобны усилиям поместить ее в «прокрустово ложе» технической реализации. Если до сих пор такие попытки не являются «камнем преткновения», то исключительно по той причине, что основные создатели программного обеспечения начала XXI века учились еще десять-двадцать лет назад, когда было естественным понимание не только «машины Тьюринга», но и особенностей программирования на ассемблере.

С учетом сделанных выше замечаний об архаизме традиционных путей изучения ассемблера, предлагаемый далее учебный курс будет базироваться на ассемблере NASM – Netwide Assembler. Этот ассемблер, поставляемый как программный пакет с соответствующей документацией, представляет собой свободно распространяемый продукт. Последнее обстоятельство должно быть особенно существенным для современных российских вузов, так как традиционные ассемблеры фирм Microsoft являются коммерческими продуктами, поэтому далеко не каждый из российских вузов может позволить себе их приобретение.

Еще более существенной особенностью NASM оказывается его многоплатформенность: с помощью нее можно разрабатывать и выполнять программы как в ОС MS Windows и старой MS DOS, так и в ОС Linux, приобретающей сейчас все большее значение как в образовании и корпоративных сетях, так и в защищенных национальных сетях и системах, особенно оборонного назначения. Хотя программирование на основе ассемблера не обеспечивает мобильности в пределах семейства не только UNIX, но и более узкого семейства Linux, начальное знакомство с ассемблером оказывается проще всего осуществить именно на основе операционной системы Linux.

Освоив основные языковые средства и приемы программирования в 32-битной архитектуре, заложенной в свое время фирмой Intel и называемой также архитектурой IA32, оказывается уже не сложным перейти на особенности доступа к системным функциям операционных систем типа MS Windows, что и делается в основной части пособия. С учетом фактического перехода большинства пользовательских вариантов операционных систем на 64-битную архитектуру и ее поддержку для прикладных программ, в пособии даются необходимые представления об особенностях и важнейших деталях базовых элементов построения и взаимодействия в 64-битной архитектуре.

Основная часть учебного курса излагается на основе знакомства с техническими решениями для обеих наиболее значимых к настоящему времени операционных систем – Windows от частной фирмы Microsoft и свободной для разработки и некоммерческого использования ОС Linux. Настоящее издание расширяет материал, ранее изложенный в [5], с учетом современной информационно-программной реальности и включает относительно него много нового учебного материала. В пособии детально освещаются современные средства разработки и использования системных библиотек, включая библиотеки объектных модулей и библиотеки динамической компоновки, называемые также разделяемыми системными объектами.