Сист. прогр. Ч2 (Лекции по СПО), страница 12

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

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

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

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

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

г) объединения данных.

2. Распределение памяти и область действия имен :

а) способы распределения памяти,

б) блочная структура.

3. Гибкость доступа к данным :

а) указатели,

б) унарные операторы.

4. Функциональная модульность ;

а) функции ,

б) рекурсии.

5. Асинхронные операции :

а) управление по условию,

б) сигналы,

в) мультизадачный режим.

6. Расширяемость :

а) макрокоманды времени компиляции,

б) структуры данных,

в) подпрограммы.

7. Разное .

ТИПЫ И СТРУКТУРЫ ДАННЫХ

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

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

СИМВОЛЬНАЯ СТРОКА

В С имеется богатая библиотека функций для работы с символьными строками, в частности туда входят:

1. Функция определения длины строки. Параметром функции является символьная строка, результатом - длина этой строки.

2. Функция конкатенации

3. Функции выделения подстрок, используемая для включения и исключения строк.

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

СТРОКА БИТОВ

Над целыми числами и строками битов, допускаются следующие логические операции:

1. Побитовое И ( AND).

2. . Побитовое ИЛИ ( OR).

3. Исключающее ИЛИ ( XOR).

3. Унарная логическая операция НЕ ( NOT).

СТРУКТУРЫ и ОБЪЕДИНЕНИЯ

Структуры позволяют объединять данные разных типов под одним именем. Объединения позволяют данным разных типов использовать одну и ту же область памяти

. РАСПРЕДЕЛЕНИЕ ПАМЯТИ И ОБЛАСТЬ ДЕЙСТВИЯ ИМЕН

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

1. Резервировать память, только когда это необходимо. Например, при работе ассемблера одни данные необходимы только при первом просмотре, а другие - только при втором.

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

Типы памяти и блочная структура представляют собой средства языка С, обеспечивающие такое управление памятью.

ТИПЫ ПАМЯТИ

С предоставляет в распоряжение программиста следующие типы памяти: статическую, автоматическую и глобальную.

Статическая память постоянна и выделяется во время компиляции. Статическое распределение памяти является единственно возможным во многих языках программирования, например в ФОРТРАНе.

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

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

ГИБКОСТЬ ДОСТУПА К ДАННЫМ

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

УКАЗАТЕЛИ

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

Унарные и арифметические операции.

В языке С используются следующие арифметические операторы: + (сложение),

-(вычитание), * (умножение), / (деление), %( остаток от целочисленного деления), а также операции ++ и --, которые соответственно добавляют 1 или вычитают 1 как из переменных, так и из указателей. Над указателями одного типа могут производится операции сложения, вычитания и сравнения.

ФУНКЦИОНАЛЬНАЯ МОДУЛЬНОСТЬ

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

Механизм загрузки, рассмотренный ранее, позволяет объ­единить в общую программу отдельные программные модули, называемые также подпрограммами или функциями. Хотя по­нятие подпрограммы носит довольно общий характер, во многих языках программирования, таких, например, как АЛГОЛ и КО­БОЛ, оно не используется.

Функции

В С используются функции, которые всегда внешние. Функция может быть как самостоятельным программным модулем, который компилируется отдельно и связывается с другими про­граммными модулями с помощью загрузчика, так и компилироваться совместно с другими функциями в составе файла.

РЕКУРСИЯ

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

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

1, если n=0 или n=1,
п*(п—1)!, если n=^(0 или 1).

АСИНХРОННОЕ ВЫПОЛНЕНИЕ ОПЕРАЦИЙ

Большинство языков программирования основывается на по­следовательном и синхронном выполнении операции, т. е. в любой момент времени выполняется одна команда, операторы об­рабатываются последовательно друг за другом, пока не встре­тится оператор GO TO, изменяющий эту естественную последовательность. Однако в системном программировании встре­чаются ситуации, которые вызывают необходимость выполнения непоследовательной или несинхронной операции, как, например:

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

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

3. Мультипрограммный режим работы операционной системы, при котором одновременно выполняется более одной задачи.

УСЛОВИЯ

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

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

СИГНАЛЫ

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

МУЛЬТИЗАДАЧНЫЙ РЕЖИМ

В С предусмотрены мультизадачные средства, облегчаю­щие программирование в мультипроцессорных системах.

РАСШИРЯЕМОСТЬ И МАКРОКОМАНДЫ ВРЕМЕНИ КОМПИЛЯЦИИ.

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

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

Фактически это позволяет в языке С вводить новые типы операторов, и таким образом язык можно ориентировать и расширить для решения специального класса задач.

РАЗНОЕ

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

С точки зрения использования при реализацци операционных систем являются следующие:

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

Возможность размещения кода и данных по указанным физическим адресам.

Возможность динамического выделения и освобождения памяти.

Возможность инициализации переменных на этапе трансляции( в частности таблиц).

Параллелизм.

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

РЕЗЮМЕ

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

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