Chapter_11 (1110563)
Текст из файла
Глава 11. Понятие о системе программированияКак мы уже упоминали в начале нашего курса, все программы, которые выполняются на компьютере, можно разделить на две части – прикладные и системные. Вообще говоря, компьютеры существуют в основном для того, чтобы выполнять прикладные программы, однако понятно, что вданной книге нас то в первую очередь будут интересовать не прикладное, а именно системное программирование.Все системные программы можно, в свою очередь, тоже разделить на два класса. В один классвходят программы, предназначенные для управления оборудованием ЭВМ (и, вообще говоря, дляобеспечения эффективной эксплуатации этого оборудования), а также программы, управляющие накомпьютере выполнением других программ.
Кроме того, обычно сюда же включают и служебныепрограммы для управления обрабатываемыми данными (так называемую файловую систему). Программы этого класса входят в большой комплекс системных программ, который называется операционной системой ЭВМ.1В другой класс входят системные программы, предназначенные для автоматизации процессаразработки и эксплуатации новых программ.
Программы этого класса входят в состав системыпрограммирования. Не надо, однако, думать, что система программирования состоит только из таких системных программ, которые помогают писать новые программы. Система программированияявляется комплексом, в состав которого входят языковые, программные и информационные компоненты. Ниже перечислены все компоненты, входящие в систему программирования.11.1. Компоненты системы программирования1.
Языки системы программирования. Сюда относятся как языки программирования, предназначенные для записи алгоритмов (Паскаль, Фортран, С, Ассемблер и т.д.), так и другие языки,которые служат для управления самой системой программирования, например, так называемый командный язык (язык командных файлов).2 Другие языки, входящие в систему программирования, могут предназначаться для автоматизации разработки больших программ(например, так называемый язык спецификации программ). Вы не должны здесь путать триразных понятия: язык (например, Ассемблер), программу на этом языке и компилятор, который переводит Ассемблерные программы (на объектный язык).2. Служебные программы системы программирования. Со многими из этих программ мы ужепознакомились в нашем курсе, например, сюда входят такие программы.1.
Текстовые редакторы, предназначенные для набора и исправления текстов программ наязыках программирования (обычно это исходные модули).2. Трансляторы (компиляторы) для перевода с одного языка на другой (например, программа Ассемблера транслирует исходный модуль с языка Ассемблер на язык объектныхмодулей).33. Редакторы внешних связей, собирающие загрузочный модуль из объектных модулей всхеме счёта со статической загрузкой и статическим связыванием.4.
Статические и динамические загрузчики, запускающие задачи на счёт.1Назначение и принципы работы операционных систем студенты факультета вычислительной математикии кибернетики МГУ подробно изучают в курсе третьего семестра "Системное программное обеспечение" напримере операционной системы Unix.2Студенты факультета Вычислительной математики и кибернетики МГУ используют такой командныйфайл с именем ma.bat для разработки программ на Ассемблере (каждое предложение в этом файле являетсянекоторой командой). В следующем семестре они познакомятся ещё с одним командным языком системы Unix– языком C-Shell.3Для продвинутых студентов заметим, что если исходные модули (жаргонное название – "исходники")программист может легко изменять с помощью текстового редактора, то объектные модули изменить практически нельзя (их можно только получить заново из изменённых исходных модулей).
Более точно, попытка изменения объектного модуля выливается в задачу программирования на языке машины (не на Ассемблере!), ичто бы там не говорили "крутые" программисты, никакие Дизассемблеры здесь существенно помочь не могут.Именно поэтому фирмы, продающие программное обеспечение, поставляют его пользователям чаще всего ввиде загрузочных и объектных модулей, и пуще глаза берегут исходные тексты программ.25.Отладчики, помогающие пользователям в диалоговом режиме искать и исправлятьошибки в своих программах.16. Оптимизаторы, позволяющие автоматически улучшать программу, написанную на определённом языке. Бывают оптимизаторы программ как на исходном языке программирования (например, на Фортране), так и на машинном языке (оптимизация загрузочныхмодулей).7.
Профилировщики, которые определяют, какой процент времени выполняется та илииная часть программы. Это позволяет выявить наиболее интенсивно используемыефрагменты программы и оптимизировать их или на исходном языке, или, например, переписав эти фрагменты в виде процедур на Ассемблере.8. Библиотекари, которые позволяют создавать и изменять файлы-библиотеки процедур(например, библиотеки динамически загружаемых процедур DLL), файлы-библиотекимакроопределений, с которыми мы вскоре познакомимся, и т.д.9.
Интерпретаторы, которые могут выполнять программы без перевода их на другие языки(точнее, с построчным переводом на машинный язык и последующим выполнениемкаждого такого переведённого фрагмента программы).10. И другие служебные программы.3. Информационное обеспечение системы программирования. Сюда относятся различные структурированные описания языков, служебных программ, библиотек модулей и т.п. Без хорошего информационного обеспечения современные системы программирования эффективно работать не могут. Каждый пользователь неоднократно работал с этой компонентой системыпрограммирования, нажимая функциональную клавишу F1 или выбирая из меню пункт Help(Помощь).На рис.
11.1 показана общая схема прохождения программы пользователя через систему программирования. Программные модули пользователя на этом рисунке заключены в прямоугольники, асистемные (служебные) программы – в прямоугольники с закруглёнными углами. На этой схемеможно проследить весь путь, по которому проходит программа от написания её текста на некоторомязыке программирования, до этапа счёта.РедактортекстовИнтерпретаторИсходные програмныемодулиКомпиляторыВыполнениеОбъектныемодулиДинамическийзагрузчикРедакторвнешнихсвязей.ЗагрузочныемодулиСтатическийзагрузчикВыполнениеРис. 11.1. Общая схема прохождения программы через систему программирования.Заметим, что сейчас для многих языков программирования созданы так называемые интегрированные среды, включающие в себя работающие под общим управлением почти все компоненты системы программирования.
Примером такой интегрированной среды разработки программного обеспечения является знакомая большинству программистов система Турбо-Паскаль.На этом мы закончим описание состава системы программирования и перейдём к описанию характеристик исполняемых модулей.1Для продвинутых студентов: обычно различают отладчики программ на языке машины (в кодах машины) и так называемые отладчики в терминах исходного языка программирования.
Для отладчиков последнеговида при компиляции модулей с исходного языка в паспортах объектных модулей сохраняется достаточно полная информация о локальных именах, использованных пользователем (это имена меток, процедур, переменных, констант и т.д.). В дальнейшем эта информация переносится редактором внешних связей в паспорт загрузочного модуля, и может быть использована таким отладчиком при выдаче сообщений об ошибках (например,"При выполнении третьего оператора в процедуре Summa деление переменной X на ноль").311.2.
Характеристики исполняемых модулейМодульная программа состоит из отдельных исполняемых модулей, которые могут обладать некоторыми специфическими характеристиками, к рассмотрению которых мы сейчас и перейдём.11.2.1. Перемещаемые модулиПрограммные модули, обладающие свойством перемещаемости, могут быть во время счёта программы (без её ведома) перенесены в другое место оперативной памяти так, что это не повлияет направильную работу этих модулей. Разбирая работу динамического загрузчика, мы выяснили, что вовремя счёта программы модуль может быть удалён с рабочего поля, а потом вновь загружен, вообщеговоря, на другое место этого поля, т.е.
все эти модули были перемещаемыми. Ясно, что динамический загрузчик может также и просто переместить модуль с одного места рабочего поля в другое,без его новой загрузки.Рассмотрим пример, когда такое перемещение исполняемых модулей без их новой загрузки может оказаться полезным. На рис. 10.8 показан вид рабочего поля, на котором находятся процедуры сименами A и Delta.
Предположим, что динамическому загрузчику необходимо разместить на этомполе новый модуль, скажем процедуру с именем C12, которая имеет длину 8000 байт. Видно, что загрузчику не удастся это сделать, не удалив с рабочего поля какую-нибудь процедуру, так как, несмотря на то, что 10000 байт рабочего поля свободны, но это свободное пространство разбито на двечасти, ни в одну из которых не поместится процедура C12.В том случае, если, как в нашем случае, модуль Delta является перемещаемым, его можносдвинуть вверх так, чтобы объединить свободные участки рабочего поля и разместить на нём новуюпроцедуру C12.
Сдвиг модуля в оперативной памяти является по существу хорошо знакомой намоперацией пересылки массива с помощью цикла со строковой командой, и это заведомо более быстрая операция, чем удаление модуля с рабочего поля (ведь его потом, скорее всего, придётся вернутьобратно из медленной внешней памяти). Ранее, при изучении динамического загрузчика, мы уже рассмотрели ограничения, накладываемые на перемещаемые процедуры и функции.1На первых ЭВМ перемещаемость была очень полезным свойством выполняемого модуля, так какпозволяла уменьшить операции обмена с очень медленной внешней памятью.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.