
- •Министерство образования и науки Российской Федерации
- •Цель лекции
- •План лекции
- •1 Происхождение вычислительных машин
- •2 Изучение алгоритмов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Биты и их хранение
- •2 Оперативная память
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Устройства внешней памяти
- •3 Хранение и поиск файлов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление числовых значений
- •2 Хранение целых чисел
- •3 Хранение дробей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление текста
- •2 Представление изображений
- •Достоинства пиксельной графики
- •Недостатки пиксельной графики
- •Достоинства векторной графики
- •Недостатки векторной графики
- •3 Представление звука
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Сжатие изображений
- •2 Ошибки передачи данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Архитектура эвм
- •2 Связь процессора с другими устройствами
- •3 Другие архитектуры
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Машинный язык
- •2 Пример машинного языка
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Выполнение программы
- •2 Пример выполнения программы
- •3 Программы и данные
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Логические операции
- •2 Операции сдвига
- •3 Арифметические операции
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция операционных систем
- •2 Архитектура операционных систем
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие процесса
- •2 Управление процессами
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Классификация сетей
- •2 Сетевые протоколы*
- •3 Безопасность сетей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие алгоритма
- •2 Представление алгоритма
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Теория решения задач
- •2 Общие методы решения задач
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритм последовательного поиска
- •2 Управление циклами
- •3 Алгоритм сортировки методом вставки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритмы поиска и сортировки
- •2 Управление рекурсией
- •3 Разработка рекурсивных процедур
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эффективность алгоритмов
- •2 Верификация программ
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция и классификация языков программирования
- •2 Концепции традиционного программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Процедурные единицы
- •2 Реализация языка программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Объектно-ориентированное программирование
- •2 Декларативное программирование
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структуры данных
- •Integer Scores (2.9).
- •2 Статические и динамические структуры
- •3 Указатели
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Массивы
- •2 Списки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структура и функции стека
- •2 Реализация стека
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Очереди
- •2 Деревья
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Пользовательские типы данных
- •Int Age;
- •2 Классы
- •Int *StackEntries;
- •3 Стандартная библиотека шаблонов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Роль операционной системы
- •2 Последовательные файлы
- •3 Вопросы программирования
- •0000000010000110
- •001100010011001100110100
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения индексации
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения хеширования
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Общие вопросы
- •2 Система управления базой данных
- •3 Поддержка целостности баз данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Модели баз данных
- •2 Реляционная модель баз данных
- •3 Объектно-ориентированные базы данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Интеллект и машины
- •2 Распознавание образов
- •3 Мышление
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Искусственные нейронные сети
- •2 Генетические алгоритмы
- •Контрольные вопросы
- •Невычислимые функции Цель лекции
- •План лекции
- •1 Основы машины Тьюринга
- •2 Невычислимая функция
- •3 Сложность задач
- •Листинг 1. Процедура MergeLists для объединения двух упорядоченных списков
- •Листинг 2. Алгоритм сортировки слиянием, реализованный в процедуре MergeSort
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Шифрование с открытым ключом
- •2 Модульная арифметика
- •Контрольные вопросы
- •Литература
- •Internet-ресурсы
Контрольные вопросы
1. Как могут быть расширены логические операции?
2. Произведите логические операции AND (И), OR (ИЛИ) и XOR (исключающее ИЛИ) с двумя числовыми значениями 13 и 16.
3. На примере одного байта данных покажите назначение всех логических операций.
4. Какие виды сдвигов существуют и в каких целях они используются?
5. Каким образом можно реализовать арифметические операции?
Лекция № 11 Операционные системы
Цель лекции
Изучить эволюцию, классификацию и архитектуру операционных систем.
План лекции
1. Эволюция операционных систем.
2. Архитектура операционных систем.
1 Эволюция операционных систем
Изучение операционных систем и сетей мы проведем в порядке их возникновения и развития: от ранних однопроцессорных к более поздним многопроцессорным системам.
Однопроцессорные системы. В 1940-1950 гг. однопроцессорные машины были недостаточно гибкими и эффективными. Выполнение программ требовало определенной предварительной подготовки оборудования: установки лент, загрузки перфокарт в устройство чтения перфокарт, установки переключателей и т.д. Запуск каждой программы, называемый заданием (job), производился по отдельности. Если нескольким пользователям требовалось работать на одной и той же машине, то предварительно составлялось специальное расписание, позволяющее им зарезервировать машинное время. На протяжении отведенного времени машина находилась полностью в распоряжении пользователя. Сеанс обычно начинался с подготовки машины, после чего следовало выполнение самой программы. Чаще всего сеанс заканчивался лихорадочными усилиями пользователя сделать что-то еще ("Это займет только одну минуту!"), в то время как следующий пользователь с нетерпением ожидал, когда он сможет приступить к подготовке машины для своей задачи.
В подобной ситуации операционные системы создавались как средство для упрощения подготовки программ и ускорения перехода от одного задания к другому. Первой Цель лекциию создания таких систем было отделение пользователя от оборудования, что позволяло избавиться от постоянного потока людей, входящих и выходящих из помещения, в котором находилась машина. Дополнительно была введена должность оператора компьютера, задача которого заключалась в выполнении всех операций непосредственно на оборудовании. Каждый пользователь должен был предоставить оператору программу вместе с необходимыми данными и специальными указаниями о ее требованиях, а затем вернуться за результатами. Оператор загружал полученные материалы в массовую память машины, откуда операционная система могла отправить их на выполнение. Это было началом пакетной обработки — метода выполнения заданий посредством предварительного объединения их в единый пакет, который затем выполнялся без дальнейшего взаимодействия с пользователем. Задания, ожидающие своего выполнения в массовой памяти, образуют очередь заданий (рис.1).
Очередь — это способ организации памяти, когда сохраняемые в ней объекты (в нашем случае — задания) упорядочены по принципу "Первым вошел — первым вышел" (FIFO, First-in, First-out), т.е. объекты покидают очередь в том же порядке, в котором они в нее поступают. На самом деле большинство очередей задач не следует в точности принципу FIFO, так как большая часть операционных систем поддерживает установку приоритетов задач. В результате выполнение находящегося в очереди задания может быть отодвинуто на более поздний срок заданием с более высоким приоритетом.
Рисунок 1 – Пакетная обработка
В ранних системах пакетной обработки каждое задание сопровождалось рядом инструкций, описывающих шаги, необходимые для подготовки машины к выполнению этого конкретного задания. Эти инструкции кодировались на языке управления заданиями (JCL, Job Control Language) и помещались вместе с заданием в очередь задач. Когда задание выбиралось для выполнения, операционная система распечатывала эти инструкции на принтере, чтобы оператор мог их прочитать и выполнить. Инструкции, требовавшие вмешательства оператора, касались главным образом управления не интерактивным периферийным оборудованием. Поскольку в настоящее время эти действия сведены к минимуму, язык управления заданиями превратился, скорее, в язык общения с операционной системой, а не с оператором компьютера. И действительно, должность оператора компьютера стала практически ненужной. Теперь организации нанимают для управления вычислительной системой системных администраторов. В их задачу, вместо управления вычислительными системами в прежнем понимании этого слова, входит получение нового оборудования и программного обеспечения, наблюдение за его установкой, осуществление локального руководства, включающего ведение учетных записей пользователей, определение лимитов дискового пространства для отдельных пользователей и координацию усилий по решению возникающих в системе проблем.
Главным недостатком традиционной пакетной обработки является то, что пользователь лишен возможности взаимодействовать с программой с того момента, как она поставлена в очередь. Такой подход допустим для приложений, в которых все данные и процедуры определены заранее (например, при подготовке платежных ведомостей). Однако он неприемлем, если пользователю необходимо взаимодействовать с программой в процессе ее выполнения. Примером могут служить системы резервирования (мест, билетов), в которых информация о резервировании и отказах должна быть доступна сразу же после поступления; си темы обработки текстов, поддерживающие интерактивное создание и обновлен документов; а также компьютерные игры, в которых взаимодействие с машиной является основным элементом игры.
Для решения этих проблем были созданы новые операционные системы, которые позволяют выполнять программы, ведущие диалог с пользователем, работающим за удаленным терминалом или рабочей станцией. Такой режим функционирования называется интерактивной обработкой (рис. 2). Для работы интерактивных систем требуется, чтобы выполняемые машиной действия координировались с происходящими в ее среде событиями. Эта координация действий машины и среды именуется обработкой в реальном времени.
Рисунок 2 – Интерактивная обработка
Если бы от интерактивных систем требовалось обслуживать в каждый момент времени только одного пользователя, то обработка в реальном времени не вызвала бы никаких проблем. Однако вычислительные машины стоили дорого, поэтому каждая машина должна была обслуживать несколько пользователей. Вполне типичной являлась ситуация, когда нескольким пользователям одновременно требовалось получить доступ к машине в интерактивном режиме, поэтому выполнение работы в реальном времени оказывалось затруднительным. Если такой многопользовательской среде операционная система будет придерживать строго поочередного выполнения заданий, то только один из пользователей сможет получить удовлетворительное обслуживание в реальном времени.
Решение этой проблемы состоит в разработке операционной системы, способ ной организовать постоянное чередование выполнения частей различных заданий с помощью процесса разделения времени. Этот метод заключается в разделении машинного времени на интервалы, или кванты, с последующим ограничением времени непрерывного выполнения каждой программы одним квантом времени за один раз. В конце каждого интервала текущее задание выгружается, время следующего кванта выполняется новое. При быстром чередовании заданий подобным образом создается иллюзия, что несколько заданий выполняется в машине одновременно. В зависимости от типа выполняемых заданий, ранние системы разделения времени позволяли обслуживать в реальном времени одновременно до 30 пользователей.
Сегодня разделение времени активно используется как в многопользовательских системах, так и в системах с одним пользователем, хотя раньше этот режим назывался многозадачным, поскольку создавалась полная иллюзия односменного выполнения нескольких задач. Независимо от того, одно- или многопользовательской является данная вычислительная среда, было установлено, то применение режима разделения времени повышает эффективность работы машины. Конечно, вас это может удивить, особенно если принять во внимание, что процесс переключения заданий, обязательный при разделении времени, требует немалых дополнительных затрат времени. Действительно, время, потраченное на переключения между задачами, непродуктивно. Однако без использования такого режима разделения времени компьютер большую часть своего рабочего времени будет проводить в ожидании того, когда завершат работу периферийные устройства или пользователь введет свой следующий запрос. Режим разделения времени позволяет использовать это бесполезно теряемое время на решение других задач. В результате пока одно задание ожидает какое-либо событие, выполняется другое задание. В конечном итоге при использовании режима разделения времени вся группа одновременно запущенных заданий будет выполнена быстрее, чем в случае их последовательного выполнения.
Многопроцессорные системы. В последние годы необходимость в совместном использовании информации и ресурсов различными машинами породила потребность соединить компьютеры для обмена информацией. Для этого были созданы ставшие популярными объединенные компьютерные системы, называемые сетями. Сегодня концепция большой центральной машины, обслуживающей многих пользователей, в основном уступила место концепции множества маленьких машин, объединенных в сеть, в которой пользователи совместно используют ресурсы, рассредоточенные по всей системе, — устройства печати, программные пакеты, устройства памяти и информацию. Основной пример — это Internet, глобальная сеть сетей, которая сегодня объединяет миллионы компьютеров во всем мире. Большинство проблем координации действий, возникающих при создании сетей, очень похожи на проблемы, с которыми пришлось столкнуться при разработке операционных систем. Фактически программное обеспечение для управления сетью может рассматриваться как сетевая операционная система. В этом свете разработка сетевого программного обеспечения является естественным Расширением концепции операционной системы. Хотя первые сети создавались как свободно соединяемые между собой отдельные машины, каждая из которых являлась собственной операционной системой, дальнейшие исследования в области сетевой технологии привели к появлению сетевых систем, обеспечивающих совместное использование имеющихся ресурсов всеми выполняемыми в сети задачами. Различные ресурсы поочередно выделяются выполняемым в сети задачам согласно их потребностям, невзирая на физическое местонахождение этих ресурсов. Примером может служить система серверов имен, существующая Internet, которую мы подробнее рассмотрим позже. Эта система позволяет множеству машин, разбросанных по всему миру, работать совместно, решая дачу перевода Internet-адресов из мнемонической формы, понятной человеку цифровую, понятную установленному в сети оборудованию.
Сети представляют собой только один из типов многопроцессорных проектных решений, используемых при разработке современных операционных систем. В то время как в сетях многопроцессорная система создается посредством объединения отдельных машин, каждая из которых имеет только один центральный процессор (ЦП), другие многопроцессорные системы разрабатываются как одна машина с несколькими процессорами. Операционная система в такой машине должна не только координировать взаимодействие между различными видами деятельности, которые действительно выполняются одновременно, но и контролировать процесс распределения действий по отдельным процессорам в машине. В связи с этим возникают проблемы баланса загрузки (получение гарантий, что все процессоры в системе используются одинаково эффективно), а также масштабирования (разбиение задач на количество подзадач, совместимое с числом процессоров в машине).
Мы видим, что появление многопроцессорных систем добавило много новых направлений исследований в области операционных систем. Эти исследования, несомненно, будут продолжаться и в будущем.