Сист. прогр. Ч1 (Методические указания к выполнению лабораторных работ по СПО)

2018-01-12СтудИзба

Описание файла

Файл "Сист. прогр. Ч1" внутри архива находится в следующих папках: Методические указания к выполнению лабораторных работ по СПО, сист прогр лабы. Документ из архива "Методические указания к выполнению лабораторных работ по СПО", который расположен в категории "". Всё это находится в предмете "операционные системы" из 7 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "операционные системы" в общих файлах.

Онлайн просмотр документа "Сист. прогр. Ч1"

Текст из документа "Сист. прогр. Ч1"

95


Системное программирование.

1. ВВЕДЕНИЕ.

Это пособие преследует две основные цели: познакомить с процедурами проектирования систем программного обеспечения и создать основу для оценки результатов проектирования.

Что такое системное программирование?



Люди

Рис. 1.1. Базис системного программирования

Можно рассматривать компьютер как некое живое существо, которое повинуется всем командам. Иногда говорят, что компьютеры — это по существу люди, сделанные из металла, или, наоборот, люди — это компьютеры, сделанные из плоти и крови. Однако при ближайшем рассмотрении становится очевидным, что компьютеры представляют собой машины, выполняющие весьма специфические и достаточно примитивные команды.

На заре вычислительной техники люди общались с компьютерами, задавая определенные положения двоичных переключателей, обозначающие примитивные команды. Вскоре, однако, они пожелали задавать более сложные команды. Например, им хотелось уметь сказать компьютеру: X = 30 х Y; чему равен X, если Y = 10?

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

Компиляторы — это системные программы, которые воспринимают тексты на языках, близких к естественным, и транслируют их в машинный язык. Загрузчики — это системные программы, которые подготавливают программы на машинном языке к выполнению. Макропроцессоры позволяют программистам использовать сокращения. Операционные системы и файловые системы обеспечивают гибкое запоминание и выборку информации (рис. 1.1).

В мире в настоящее время более 1000000 ЭВМ используется фактически во всех возможных областях применения. Производительность каждой из них в значительной степени зависит от производительности, эффективности, и сложности системных программ.

В этой главе вводятся некоторые термины и дается общее представление о машинной структуре и основных задачах операционной системы.

МАШИННАЯ СТРУКТУРА

Мы начнем с краткого рассмотрения общей организации аппаратуры вычислительной системы (рис. 1.2).



Память







Процессор ввода-вывода

Процессор ввода-вывода



ЦП

ЦП

















Диски и ленты

Рис.1.2. Общая организация аппаратуры вычислительной системы.

Память — это устройство, которое служит для запоминания информации. Процессоры — это устройства, которые манипулируют этой информацией. Можно рассматривать информацию как запоминаемую в форме нулей и единиц, Каждая единица или нуль представляют отдельную двоичную цифру, которая называется бит. Биты обычно группируются в блоки, которые называются слова, символы или байты. Расположение информации в памяти определяется адресами. Каждый адрес идентифицирует конкретный байт, слово или символ.

Содержание слова может интерпретироваться как данные (над которыми выполняются операции) или команды (операции, подлежащие выполнению). Процессор представляет собой устройство, выполняющее последовательность операций, заданных командами, расположенными в памяти. Программа (или про­цедура) есть последовательность команд.

Процессор IBM 1130, рассматривая, например содержимое ячейки 10001 как команду, будет интерпретировать его как команду «останов». Рассматривая ту же самую ячейку как содержащую цифровые данные, процессор будет интерпретировать ее содержимое как двоичное число 0001 0011 0000 0000 0000 (десятичное 12288). Таким образом общая запоминающая среда применяется для хранения как команд, так и данных.

Информация в памяти кодируется группами битов, которые могут интерпретироваться как символы, команды или числа. Код — это совокупность правил для интерпретации групп битов, в качестве примера можно привести коды для представления десятичных цифр (BCD), символов (EBCDIC или ASCII) или команд (коды операций конкретного процессора). На рис. 2 представлены два типа процессоров: процессор ввода-вывода (ПВВ) и центральный процессор (ЦП).

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

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

Поскольку команды, подобно данным, хранятся в памяти и могут рассматриваться как данные, изменяя двоичную конфигурацию команды путем добавления к ней некоторого числа, можно получить другую команду. Процедура, модифицирующая сама себя, называется неправильной процедурой. Применение подобных процедур не рекомендуется. Программисты испытывают определенные трудности при чтении такой программы, она к тому же не может одновременно выполняться несколькими процессорами. Каждый процессор, выполняя неправильную процедуру, модифицирует ее. Другой процессор при попытке выполнения той же самой процедуры может обнаружить измененные команды или данные. Таким образом, повторное применение такой процедуры существенно затрудняется. Правильная процедура не модифицирует себя. Если необходимо быть уверенным, что при каждом обращении к программе она содержит одни и те же команды, следует применять правильные процедуры (реентерабельные программы).

ЭВОЛЮЦИЯ КОМПОНЕНТОВ СИСТЕМ ПРОГРАММИРОВАНИЯ

АССЕМБЛЕРЫ

Рассмотрим некоторые аспекты развития компонентов систем программирования.

Некогда в распоряжении программиста была простая вычислительная машина, которая аппаратно интерпретировала некоторый набор основных команд. Он программировал, записывая ряды единиц и нулей (на машинном языке), помещал их в память машины и нажимал кнопку, после чего машина начинала интерпретировать эту информацию как команды.

Программисты нашли, что писать и читать программы на машинном языке затруднительно. В стремлении к более удобному языку они стали применять мнемонику (символы) для каждой машинной команды, которую они затем транслировали в машинный язык. Такой мнемонический машинный язык теперь называют языком ассемблера. Для автоматизации трансляции с языка ассемблера в машинный язык были созданы программы, называемые ассемблерами. На вход программы ассемблера поступает исходная программа, выходом является результат трансляции на машинном языке (объектная программа).

ЗАГРУЗЧИКИ

После того как ассемблер создал объектную программу, она должна быть помещена в память и выполнена. Помещение объектной программы в память в готовой для выполнения форме — задача загрузчика.

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

Загрузчик — это программа, которая помещает программы в память и готовит их к выполнению, В простейшей схеме загрузки ассемблер выводит полученную на машинном языке программу на внешнее запоминающее устройство и загрузчик помещается в основную память, затем загрузчик помещает в память программу пользователя на машинном языке и передает ей управление. Поскольку загрузчик по своим размерам значительно меньше ассемблера, в памяти остается больше места для размещения программ пользователей.

Понимание того, что многие пользователи по существу пишут одни и те же программы, привело к разработке типовых программ (пакетов). Эти пакеты разрабатывались фирмами-производителями ЭВМ или пользователями.

С накоплением опыта программист захотел объединить, скомбинировать готовые типовые программы со своими собственными. Это привело к разработке средств, позволяющих писать основную программу, которая пользуется другими программами с целью выполнения некоторой задачи. Существуют два типа подпрограмм: замкнутые и открытые. Открытая подпрограмма, или макроопределение, — это такая программа, коды которой вставляются в основную программу. Так, если имеются четыре обращения к одной открытой подпрограмме, она будет четырежды помещена в соответствующие места вызывающей программы. Замкнутая подпрограмма может помещаться вне основной программы, получая управление в случае необходимости. В основной программе должны быть предусмотрены средства для передачи подпрограмме управления и данных.

Первоначально замкнутые подпрограммы могли размещаться в памяти только по фиксированным адресам. Например, если пользователь хотел применить подпрограмму вычисления квадратного корня, он должен был писать свою основную программу таким образом, чтобы она передавала управление по адресу, приписанному этой подпрограмме. Его программа и подпрограмма ассемблировались вместе. Если второй пользователь хотел использовать ту же самую подпрограмму, он тоже ассемблировал ее вместе со своей собственной программой, и законченный результат трансляции загружался в память.

Ячейки

SQRT

Программа 1

SQRT

Программа 2

















Рис.1.3. Пример распределения памяти при загрузке по фиксированным

адресам.

На рис. 1.3 представлен пример распределения памяти при этой негибкой схеме загрузки. На этом рисунке память изображена в виде линейного массива ячеек, а занимаемые программой области заштрихованы. Обратите внимание на то, что между программой 1 и подпрограммой SQRT расположен свободный участок памяти, а программа 2 перекрывает и поэтому разрушает часть подпрограммы SQRT.

Программисты хотели пользоваться такими подпрограммами, в которых связь с другими программами задается символически. Они считали неудобным иметь дело с конкретными адресами отдельных частей своих программ. Они полагали, что сама вычислительная система могла бы приписывать конкретные адреса их подпрограммам и подставлять эти адреса вместо символических ссылок.

Системные программисты заметили, что было бы удобно, если бы подпрограммы транслировались в такую форму объектной программы, что загрузчик мог разместить их непосредственно после программы пользователя. Настройка программ, позволяющая помещать их в произвольном месте памяти, называется перемещением. Настраивающие загрузчики выполняют четыре функции:

1. Выделение в памяти места для программ (распределение памяти).

2. Разрешение символических ссылок между объектными программами (редактирование связей).

3. Настройка всех адресозависимых величин, таких, как адресные константы, в соответствии с адресом выделенной для программы области памяти (перемещение).

4. Физическое помещение машинных команд и данных в память (загрузка).

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5193
Авторов
на СтудИзбе
434
Средний доход
с одного платного файла
Обучение Подробнее