- •Алгоритмические основы программной инженерии: конспекты лекций глава 1. Основы.
- •1945 Г. — Джон фон Нейман сформулировал основные принципы построения и функционирования эвм. Методологии разработки программного обеспечения
- •Проектирование и алгоритмизация программ
- •Алгоритмы и свойства алгоритмов
- •Сложность алгоритма
- •Тестирование. Отладки
- •Справка chm
- •Комментирование
- •Доработка и сопровождение программы в процессе эксплуатации
- •Пример сложной разработки программного продукта "copras"
- •Экстремальная разработка программного обеспечения по концепции xp
- •Стратегия rup Rational Unified Process
- •Ниже представлена самостоятельная работа — пример реализации диаграммы компонентов
- •Ниже представлена самостоятельная работа — пример реализации диаграммы развертывания
- •Системное программное обеспечение эвм
- •Домашнее задание: ответить на вопрос: «Чем отличаются кластеры от секторов?»
- •Домашнее задание: ответить на вопрос: «Какого размера кластер может быть?»
- •Домашнее задание: ответить на вопрос: «Чем стек отличается от индексированного массива?»
- •Интерфейсная оболочка для взаимодействия пользователя с ос и операционными средами
- •Система программирования (ide — Integrated Development Environment).
- •Определение ядра операционной системы
- •Классификация ос по функциональности
- •Что рекомендуется знать?
- •Домашнее задание: прочитать. Pipe
Система программирования (ide — Integrated Development Environment).
Включает базовые компоненты: — Трансляторы. — Библиотеки подпрограмм. — Редакторы. — Компоновщики. — Отладчики.
Трансляторы — специальные программы-переводчики, которые переводят программу, написанную на языках высокого уровня, в машинный код (на машинный язык). 3 вида трансляторов: — Ассемблеры. — Компиляторы. — Интерпретаторы.
Ассемблер — транслятор, преобразующий программу, написанную на языке ассемблера, в машинный код. При написании программы используют мнемонические обозначения машинных команд и адресов (имена и метки). В процессе трансляции ассемблер заменяет все мнемонические обозначения на их двоичные коды.
Компилятор — системная программа, которая воспринимает текст программы на языке высокого уровня (исходный модуль), а на выходе генерирует программу на языке ассемблера или на машинном языке (объектный модуль). Пример. Язык программирования Фортран. .for —> .obj —> .exe
Объектный модуль состоит из двух частей: 1) Тело модуля, представляющее собой программу. 2) Заголовок, содержащий внешние имена (имена переменных, используемых в данном модуле, но определенных в другом модуле).
Этой информации необходимо для сборки из набора объектных модулей целостной программы, готовой к выполнению.
Объектные модули обрабатываются компоновщиком связи (или редактором связи), который создает исполняемую программу, содержащую только команды конкретной ЭВМ.
Интерпретатор — системная программа, которая транслирует каждый оператор исходной программы в промежуточный код и интерпретирует его посредством одной или нескольких команд (переводит операторы в эти команды) и выполняет эти команды.
Оператор (инструкция) — команда или набор команд. Примеры: объявление переменной, присваивание, условная инструкция (if-else), цикл со счетчиком (for), цикл с предусловием (while) и т. д.
Операнд — аргумент операции; то, что обрабатывается оператором. Например, имеется операция «a+b». В этом случае «a» и «b» — аргументы операции сложения (т. е. они — операнды).
В отличии от компилятора, интерпретатор не генерирует объектный код, а выдает результаты работы выполняемых операторов исходной программы.
Утилиты — специальные программы для выполнения вспомогательных функций. Подразделяются на: — утилиты сервисного обслуживания компьютера (диагностика и дефрагментация). — утилиты расширения функциональности. — информационные утилиты.
Определение ядра операционной системы
Все модули ОС делятся на 2 группы: 1) Модуль ядра, который выполняет основные функции ОС и включает в себя планировщик (диспетчер), драйверы устройств ввода-вывода, файловую систему и сетевую систему. 2) Модули, выполняющие вспомогательные функции ОС (т. е. утилиты).
Диспетчеризация. Одной задаче соответствует один дескриптор.
Ядро: 1. Дескриптор — относительная структура, содержащая информацию о системных данных задачи. 2. Системные данные — целочисленный показатель важности (приоритета) одной задачи по отношению к другим. 3. Указатель на следующую задачу в списке дескрипторов. Все дескрипторы находятся в стеке. Ядро выбирает задачу, которую нужно выполнить. Round Robin (круговая диспетчеризация).
Модуль ядра выполняет базовые функции: — Управление задачами (процессами, потоками). — Управление памятью, устройствами и т. д.
Такого рода внутрисистемные функции недоступны для приложений.
Исключениями являются системы реального времени, в которых можно на пользовательском уровне переопределять дисциплины диспетчеризации.
Кроме того, ряд функций ядра служит для поддержки приложений, создавая для них, так называемую, прикладную программную среду.
Приложения могут обращаться к ядру с запросами (системными вызовами) для выполнения определенных действий. Например, для открытия файла на чтение, вывода графической информации на дисплей и т. д.
Функции ядра, которые могут вызываться приложениями, образуют прикладной программный интерфейс API.
Дополнительная литература: https://megaobuchalka.ru/4/400.html
Коллоквиум. Посмотреть в интернете: — Turbo Prolog (примеры кода). — LISP (примеры кода). — Краткая характеристика языков программирования. — Отличие ассемблера от объектно-ориентированных языков программирования. — (желательно) Книга Джеффри Рихтера по теме системного программирования: http://www.e-reading.club/bookreader.php/135055/Rihter_-_Windows_dlya_professionalov%3A_sozdanie_effektivnyh_Win32-prilozheniii_s_uchetom_specifik....pdf
Предикат — это выражение, использующее одну или более величину с результатом логического типа (результат — 0 или 1).
Трассировать — отслеживать ошибки.
Обычно ядро оформляется в виде программного модуля специального формата, отличного от формата пользовательских приложений.
Важным свойством архитектуры ОС, основанным на ядре, является возможность защиты кодов и данных ОС за счёт выполнения функций ядра в привилегированном режиме.
Привилегированный режим означает защиту от пользовательских приложений, в том числе ОС должна контролировать доступ приложений к ресурсам ЭВМ в многозадачном режиме.
Поддержка привилегированного режима обеспечивается специальными средствами аппаратной поддержки. Благодаря этому в ЭВМ поддерживаются пользовательские и привилегированные режимы.
Так как ядро выполняет все основные функции ОС, то чаще всего именно оно становится той частью ОС, которая работает в привилегированном режиме. Это свойство (feature) — работа в привилегированном режиме — является вторым определением (признаком) ядра.
В итоге: первый признак — функции, второй признак — работа в привилегированном режиме.