Лекция 1.                                                                                                                             16.02.06

Вступление. История развития ВТ. Понятие о СПО.

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

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

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

1.                          Построенные на электронно-вакуумных приборах. От конца 40-х годов до 70-х. Пример Минск-2”.

2.                          Полупроводниковые дискретные приборы. В США от конца 50-х годов. У нас просуществовали до 70-х. Минск-22”.

3.                          ИМС малого уровня интеграции.

4.                          БИС.

Насчет 5-го поколения вопрос очень спорный. Новые 90-нм технологии – это непринципиально.

С развитием аппаратной базы изменялось и ПО. Два основных критерия: объем памяти и быстродействие (не столь существенно). У первого поколения объем памяти составлял 1-4 кб. Это было много. Размер программ составлял 100 - 200 инструкций. Программировали исключительно в машинных кодах. Объемы данных были маленькие. ЭВМ снабжались т.н. инженерным пультом. Результат выводился на пишущую машинку.

 Далее объемы оперативной памяти сильно выросли. (С 3-го поколения было принято политическое решение копировать разработки с Запада.)  Появилась возможность составлять более сложные программы. Количество перешло в качество. Резко увеличилось время программирования и отладки. Было решено перейти к другим языкам программирования. Дадим командам имена, перешли к мнемонической записи команд. Меньше ошибок, больше эффективность. Появилась новая задача – не только рассчитать, но еще и визуализировать.

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

Что входит в состав СПО. Операционная система управляет компьютером и предоставляет сервисы. Отнесем к СПО. Драйверы занимают промежуточное положение – это программный интерфейс между устройством и ОС. Системные утилиты – программы особого назначения. Позволяют настраивать компьютер. Трансляторы – это инструментальные средства, но в некоторых учебниках их также относят к СПО. Загрузчик – это составная часть СПО.

ОС. Классификация ОС.

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

Вес первые компьютеры предназначались для одного пользователя. Подготовка программ занимала много времени. Компьютеры были очень дорогие, а машинное время использовалось неэффективно. Появились отдельные устройства подготовки данных – некий “сундук”, на котором набираем программу, а он переводит её на перфоленту. (Многопользовательская система не может не быть многозадачной.)

 

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

 

Многозадачные – в определенный промежуток времени могут выполнятся несколько задач. Многозадачность бывает 2-ух типов. Кооперативная (не вытесняющая) это значит, что управление от одной задачи к другой передаётся по инициативе исполняемой задачи, борьба с зависанием только по таймауту. Истинная (вытесняющая) – каждой выполняемой программе выделяется квант времени в течении которого она может использовать ресурсы вычислительной системы (ВС), по истечении кванта ресурсы ВС передаются другой задаче. При таком подходе крах любой задачи не приведет к нарушению работы всей системы в целом, потому что есть надсмотрщик – диспетчер задач. Квант времени – от 10 мсек до нескольких сек.

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

 

Лекция 2.                                                                                                                             02.03.06

Технология программирования.

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

  1. Постановка задачи. Какую цель преследуем, что хотим получить.
  2. Выбрать адекватный математический метод. Если метода нет – программистская задача невыполнима. Наличие математической модели – абсолютно необходимое условие. Всякие математические методы имеют ограничения и особенности.
  3. Разработка алгоритма задачи. Алгоритм – последовательность действий, приводящих к выполнению задачи. Понятие более широкое, чем программа. Примеры: что делать при пожаре, как проехать в указанное место и т.п. Выполняется условными обозначениями, у них ограниченный алфавит и гибкость (можно реализовать любой, сколь угодно сложный алгоритм).
  4. Написание программы на языке высокого уровня. Любой язык высокого уровня  гибок, компактен (любая его инструкция содержит много машинных команд). Тоже выполняется на бумаге.
  5. Перенос программы на машинный носитель. Пример – файл *.pas
  6. Трансляция программы (перевод программы с языка высокого уровня в язык машинных кодов). Получили файл *.obj – так называемый объектный файл. Он неполный, в нем нет библиотечных функций. Объектный модуль содержит неудовлетворенные (или неопределенные) внешние ссылки – обращение а процедурам и функциям, которые отсутствуют в программе. Когда транслятор их встречает, то генерирует т.н. стандартную вызывающую последовательность. Если есть синтаксические ошибки, то перейти на пункт 4.
  7. Компоновка. Система программирования пытается найти описание внешних ссылок. Получаем исполняемый модуль *.exe или *.com. Если есть ошибки то перейти на пункт 4, 5.
  8. Выполнение задания. Есть ошибки выполнения, перейти на пункты 4,5
  9. Оценка результата. Если удовлетворительно, то выполнение задачи завершено. Неудовлетворительно, перейти на пункты 1-4.

 

Лекция 3.                                                                                                                             09.03.06

ОС “реального времени” (ОСРВ).

            ОСРВ предназначены для управления объектами и  процессами. Это технологические процессы, установки, система оформления билетов на Ж/Д и т.п. Сталеплавильная домна – очень медленный объект, но термин “реальное время” все равно нему применим.

            Специфика. В состав аппаратного обеспечения входит большое количество специфического оборудования, его называют устройства связи с объектом (УСО). Это АЦП, ЦАП, различного рода датчики, усилители. ОСРВ времени содержит много драйверов, которые управляют УСО. ОСРВ обязательно поддерживает ОЗУ резидентных задач.

            Windows – многозадачная, многопользовательская, сетевая ОС. На современном уровне развития ОС нет четкой классификации. Но считать Windows ОСРВ только условно.

Функции ОС.

1.      Запуск задач по команде оператора. Прием и обработка команд оператора, заданных на языке, который понимает ОС (JCL - Job Control Language). В него входит как минимум команды ОС (time, date, dir, format и т.п.).

2.      Управление памятью.

а) Каждая загруженная задача должна быть размещена в ОЗУ без конфликтов с другими задачами.

б) Защита памяти.

3.      Работа с дисками. Система управления файлами (СУФ).    

4.      Управление пользователями. Права пользователей.

5.      Обеспечение многозадачности. Разделение ресурсов.

6.      Диагностика и формирование аварийных сообщений. Формирование дампов памяти.

7.      Управление процессом выполнения задачи. Прием и исполнение запросов на запуск, приостановку и остановку программ.

8.      Выполнение свопинга.

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

10.  Обеспечения управления операциями ВВ.

11.  Обеспечение режима реального времени. Приоритеты задач.

12.  Обеспечение возможности обмена данных между выполняемыми программами.

Понятие операционной среды.

Операционная среда – это набор интерфейсов, позволяющих запускать программы, предназначенные для других ОС. Пример – запуск программ для Win3.xx или DOS под Win32.

Процессы и ресурсы.

            Под процессом понимаем и будем понимать задачу выполняемую на последовательном процессоре.

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

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

Ресурсы запрашиваются процессами, используются и освобождаются ими. Все ресурсы бывают 2-ух типов: делимые и неделимые. Примеры: неделимые принтер, делимые базы данных. Иногда пишут используемые поочередно или параллельно  - не обращать внимания.

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

 

Лекция 4                                                                                                                              16.03.06

Состояния процессов.

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

Готовность. Полностью готов к выполнению, но не хватает какого-либо ресурса (как правило, процессорного времени).

Ожидание или блокировка. Обычно связано с операциями ВВ.

Бездействие. Означает, что задача отработана, но описатель не уничтожен.

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

            Активный процесс в одном из нескольких состояний:

  1. Выполнения. Процессу предоставлены все необходимые ресурсы. В этом состоянии в один момент времени может находится только один процесс.
  2. Готовности к выполнению. Процессу могут быть предоставлены необходимые ресурсы при переходе к состоянию выполнения. Истекло время кванта.
  3. Ожидания или блокировки. Процессу не могут быть предоставлены необходимые ресурсы. Может иметься несколько групп ожидания.

Неактивный процесс находится в состоянии Бездействия. Характерно для только ОСРВ. Позволяет увеличить скорость реакции системы на внешнее событие. Кроме того, уже при проектировании системы управления уже известен состав задач, которые должны выполнятся, известны многие их параметры. Это дает возможность дескрипторы таких задач построить заранее и хранить постоянно во все время работы ОСРВ. Позволяет сэкономить время на их создание.

Переходы из состояния в состояние.

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

Из бездействия в готовность.  По прерыванию из внешнего устройства (устройство называется инициативным), по таймеру.

 

Из выполнения в ожидание. По запросу на операцию ВВ, при невозможности предоставления запрашиваемого ресурса.

Из ожидания в готовность. Завершение операции ВВ, освобождение запрашиваемого ресурса.

 

Лекция 5                                                                                                                              23.03.06

Понятие виртуальной машины.

            Процесс выполняется обособленно и ему доступны некоторые ресурсы.

Процессы и потоки.

            Что если процесс еще поделить на логические куски (подпроцессы) и эти подпроцессы запустить в режиме многозадачности? Тогда например длительную обработку можно выделить в один подпроцесс, а диалог с пользователем в другой. Таким образом эффективность работы пользователя повысится. Подпроцесс имеет название потока или английское название thread (“трэд”) в переводе “нить”, все эти термины равнозначны.

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

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

Рекомендации по созданию многопоточных систем.

1.       Большое число потоков может вызвать большие накладные расходы на их переключение.

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

3.       Потокам можно назначать различные приоритеты. Если высокоприоритетный поток передает данные в низкоприоритетный, то эффективность программы может снизится.

4.        Задача синхронизации потоков является важной и сложной. Ошибки трудно обнаружить.

5.       В рамках одного потока категорически не рекомендуется выполнять несколько различных функций.

 

Лекция 6                                                                                                                              30.03.06

Прерывания.

            Прерывания позволяют ВС реагировать на события (изменения состояния объекта управления и т.п.). Делятся на 2 класса: внешние или асинхронные (от внешних устройств) и внутренние или синхронные (от процессора – деление на 0, переполнение разрядной сетки, нарушение адресации, недопустимая команда и т.п.). Отдельным классом идут программные прерывания, которые происходят при выполнении соответствующей команды в исполняемой программе.

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

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

1.      Установление факта, идентификация прерывания.

2.      Отключение системы прерываний (мой комментарий – не всей системы, а только прерываний данного или меньшего приоритета).

3.      Сохранение контекста выполняемой программы.

4.      Передача управления подпрограмме обработки прерываний.

5.      Обработка прерывания.

6.      Включение системы прерываний.

7.      Восстановление прерванной задачи.

8.      Продолжение выполнения прерванной задачи.

Приоритеты прерываний.

Прерывания могут возникать одновременно (моё дополнение – или что чаще во время обработки одного прерывания может возникнуть еще одно). Для выбора последовательности обработки служит система приоритетов. Типовые приоритеты:

            Системы контроля процессора.

            Системный таймер.

            Жесткие диски.

            Устройства ВВ.

            Программные прерывания.

Приоритеты устанавливаются с учетом важности и частоты возникновения.

Маскирование прерываний.

Можно запретить (замаскировать) либо все прерывания сразу, либо отдельные прерывания.

Супервизор прерываний.

Выполняет все операции (которые не выполняются аппаратно), кроме обработки прерывания. После обработки управление передается диспетчеру задач, он определяет какую задачу надо восстановить.

 

Лекция 7                                                 Не был, но преподаватель тоже сильно задержался.

 

Лекция 8                                                                                                                              27.04.07

Управления задачами.

Подразумевает 3 направления:

  1. Создание и уничтожение.
  2. Планирование и диспетчеризация. Распределение процессорного времени. Планирование – долгосрочные мероприятия, осуществляются оператором системы, цель уменьшить число конфликтов за ресурсы. Диспетчеризация решается ОС, цель – эффективное распределение ресурсов.
  3. Обеспечение взаимодействия и диспетчеризации между задачами.

Для достижения поставленной цели обязательно должна быть определена стратегия (правила).

Стратегии.

            Общепринятыми являются следующие стратегии:

  1. FCFS. Первым встал в очередь, первым выполнился, ресурсы по максимуму.
  2. SJN. Первыми пропускать короткие по времени выполнения задачи. Для этого нужна предварительная оценка времени выполнения задач. Используется JCL (Job Control Language). Если оценка неправильная, то используется система штрафов.
  3. Всем задачам пользователей предоставляются одинаковые услуги (доступ к системным ресурсам). Может быть реализована только в ОС с истинной многозадачностью.

Наиболее актуальна 3-ая стратегия, 2-ая может применяться в ОСРВ (время выполнения каждой задачи заранее точно известно).

Приоритеты задач.

Каждая задача имеет приоритет – степень важности этой задачи. Приоритет задачи в ОС определяется неким числом в определенном диапазоне значений. Значения зависят от конкретной реализации. Бывают динамические (можно изменить во время выполнения) и статические. Динамические важны в ОСРВ.

Дисциплины диспетчеризации.

Дисциплина – порядок действий. Дисциплина диспетчеризации это набор правил, в соответствии с которым формируется очередь задач, готовых к выполнению. 2 основных класса:

1.                          Бесприоритетные дисциплины. Выбор задач для выполнения производится в некотором заранее установленном порядке.

2.                          Приоритетные. Некоторым отдельным задачам предоставляется преимущественное право на выполнение.

1.      FCFS

Учитывая, что при операциях ВВ процессор будет простаивать, то задачи переставляются из очереди новых задач в очередь готовых к выполнению.

2.      Короткие задачи вперед.

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

4.      Круговая, карусельная.

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

 

Лекция 9                                                                                              Не был, надо взять лекции.