
- •Конспект лекций по курсу «Операционные системы», (1 семестр , часть 1)
- •Занятие 1.Введение
- •Занятие 2.Прерывания, многозадачность
- •Занятие 3.Работа с памятью
- •Занятие 4.Процессы
- •Занятие 5.Потоки. Многопроцессорные системы
- •Занятие 6.Микроядро.
- •Занятие 7.Устройства ввода-вывода. Dma.
- •Занятие 8.Буферизация операций ввода-вывода
- •Циклическая буферизация
- •Занятие 9.Структура hdd.
- •Занятие 10.Файловая система
- •Смешанный – состоят из записей разной длины с разным количеством полей:
- •Последовательный – состоит из записей одинаковой длины с одинаковым количеством и размеров полей.
- •Непрерывный
- •Цепочечный
- •Индексированный
- •Битовые таблицы ( маска)
- •Список свободных блоков
- •Цепочки свободных блоков
- •Индексирование
- •Занятие 11. Инсталяция windows
- •Запуск инсталляции
- •Занятие 12.Загрузка windows
- •Занятие 13.Загрузочный файл boot.Ini
- •Загрузочные файлы
- •Файл Boot.Ini
- •Занятие 14.Диск аварийного восстановления
- •Занятие 15.Консоль восстановления
- •Консоль восстановления
- •Занятие 16.Адресация и доступ к разным типам памяти
- •Основная и верхняя память.
- •Менеджеры памяти
Одесский колледж компьютерных технологий «Сервер»
Конспект лекций по курсу «Операционные системы», (1 семестр , часть 1)
/Составитель: Отрадская Т.В./ - Одесса Колледж «Сервер», 2009 г
Содержание
Занятие 1. ВВЕДЕНИЕ 2
5
Занятие 2. ПРЕРЫВАНИЯ, МНОГОЗАДАЧНОСТЬ 6
Занятие 3. РАБОТА С ПАМЯТЬЮ 9
Занятие 4. ПРОЦЕССЫ 12
Занятие 5. ПОТОКИ. МНОГОПРОЦЕССОРНЫЕ СИСТЕМЫ 15
Занятие 6. МИКРОЯДРО. 17
Занятие 7. УСТРОЙСТВА ВВОДА-ВЫВОДА. DMA. 19
Занятие 8. БУФЕРИЗАЦИЯ ОПЕРАЦИЙ ВВОДА-ВЫВОДА 21
Занятие 9. СТРУКТУРА HDD. 23
Занятие 10. ФАЙЛОВАЯ СИСТЕМА 24
Занятие 11. ИНСТАЛЯЦИЯ WINDOWS 27
Занятие 12. ЗАГРУЗКА WINDOWS 31
Занятие 13. ЗАГРУЗОЧНЫЙ ФАЙЛ boot.ini 33
Занятие 14. ДИСК АВАРИЙНОГО ВОССТАНОВЛЕНИЯ 35
Занятие 15. КОНСОЛЬ ВОССТАНОВЛЕНИЯ 36
Занятие 16. АДРЕСАЦИЯ И ДОСТУП К РАЗНЫМ ТИПАМ ПАМЯТИ 38
39
Занятие 1.Введение
Принципы работы первых компьютеров без ОС
В первых компьютерах программа представляла из себя набор машинных кодов из 0 и 1, например:
10010110
10001110
11101101
01101110
...
Каждый код это был либо код команды или число, с которым нужно было выполнить операцию сложения, умножения ... Однако, сделать ошибку в такой программе очень легко, а найти ее трудно. Ввод такой программы выполнялся на наборном поле из тумблеров: каждый тумблер был либо включен( это 1) либо выключен( это 0). Результат выводился на специальную панель из лампочек. Каждая лампочка – это тоже 1(включена) или 0 (выключена). Набор 1 и 0 считывался глазами как 2-ое число. Программисты должны были хорошо знать двоичную систему исчисления и кодировку всех команд. Позднее для ввода больших программ стали использоваться перфокарты, затем перфоленты и еще позднее магнитные ленты.
Перфокарты представляли из себя картонные карточки с пробитыми дырочками в определенных местах. Каждая дырочка – это 1 , а не пробитая дырочка – это 0. Каждая колонка такой карты – это был код из 8 битов. С каждой перфокарты считывался набор таких кодов. В отличие от перфокарты перфолента была уже и длиннее, что позволяло на нее записывать гораздо больше информации.
Перфокарта
Перфолента
Магнитные ленты позволяли записывать еще больше информации. Они не рвались и не размокали в воде и в 1980-ых годах они были основным средством для длительного хранения данных- архивов, а также для текущего использования. Жесткие диски сделали еще шаг вперед. В отличие от лент и перфокарт считывание данных с них выполнялось не перебором всех предыдущих данных, а прямым обращением к месту диска, где хранились данные.
Принцип исполнения машинных команд процессором можно изобразить схематично так:
Запуск – { выборка команды - исполнение команды } – останов
В фигурных скобках указаны 2 действия , которые повторяются в зависимости от количества команд. Каждая команда считывается в оперативную память компьютера, а затем последовательно передается процессору. В процессоре есть набор своих встроенных в него ячеек памяти, которые называются регистрами процессора. Каждая такая ячейка имеет свое назначение и все они разбиваются на 2 типа:
доступные пользовательским программам:
регистры данных: для хранения данных для выполнения команды, они бывают разных типов для хранения данных разных типов
адресные регистры: в них заносятся адреса команд и данных в основной памяти
управляющие ( не доступны пользовательским программам):
программный счетчик: содержит адрес команды, которая должна быть выбрана из памяти
регистр команд: содержит последнюю выбранную из памяти команду
флаги ( коды условий): это набор битов, которые устанавливаются процессором в зависимости от результата выполнения команд.
Регистры процессора можно сравнить с ящиками на рабочем столе, в которых находятся инструменты и материалы, необходимые для работы в данный момент. А оперативную память можно представить как склад, который находится в другом задании. Адресный регистр можно представить как ящик, в котором лежит записка с указанием где именно на складе находится нужный вам материал. Регистр команд - это как другой ящик, в котором лежит инструкция по выполнению работы ( что и как нужно сделать). Программный счетчик – это как 3-ий ящик, в котором указано, где нужно взять следующую инструкцию после того как закончите выполнять текущую. Чтобы выполнить какую- либо работу вам нужно пойти на склад ( оперативную память) и взять материалы для текущей работы. Затем разложить материалы на рабочем столе по ящичкам ( регистры данных), взять инструкцию ( из регистра команд) и выполнить ее. После выполнения инструкции результаты разложить по ящичкам для заказчика ( флагам). Затем посмотреть, где взять следующую инструкцию ( из программного счетчика) и все повторить сначала: пойти на склад ...
Все действия процессора можно условно разбить на :
процессор - память
процессор - устройства ввода-вывода
обработка данных (вычисления производимые процессором над данными)
управление (выбор действий по условию, повторение команд ...)
Пример:
каждая команда имеет вид:
биты 1-4: Код команды |
биты 5-16: Адрес данных в памяти |
сами данные в памяти часто хранятся тоже в виде 16 бит ( это одно слово), где первый бит – это знак числа, а остальные биты – само число.
Представим, что на вход процессору дана задача из 3 команд:
1) 0001 0111 0001 0101 - команда 0001- загрузить значение из памяти (по адресу 0111 0001 01012 =71516) в регистр-аккумулятор
2) 0101 0111 0001 0110 - команда 0101-добавить к аккумулятору значение ячейки памяти(по адресу 71616)
3) 0010 0111 0001 0110 - команда 0101-сохранить содержимое аккумулятора в памяти( по адресу 71616)
Каждую из этих команд можно изобразить в виде 16-ого числа ( 1 715, 5 716, 2 716)
Сами команды находятся в оперативной памяти по адресам 100, 101, 102 . В регистре программного счетчика будет находиться адрес первой команды т.е. адрес 100. Она будет выполнена так:
Исходное состояние ячеек оперативной памяти и регистров процессора :
Память Регистры процессора
N ячейки |
значение в ячейке |
|
значение в регистре |
название регистра |
100 |
1715 |
|
100 |
прогр. счетчик |
101 |
5716 |
|
|
аккумулятор |
102 |
2716 |
|
1715 |
регистр команды |
... |
|
|
|
|
715 |
0004 |
|
|
|
716 |
0003 |
|
|
|
... |
|
|
|
|
1) 0001 0111 0001 0101 - загрузить значение из памяти (по адресу 71516) в регистр-аккумулятор. После выполнения этой команды в регистр «аккумулятор» скопируется число 0004 из ячейки памяти с адресом715
Память Регистры процессора
N ячейки |
значение в ячейке |
|
значение в регистре |
название регистра |
100 |
1715 |
|
101 |
прогр. счетчик |
101 |
5716 |
|
0004 |
аккумулятор |
102 |
2716 |
|
1715 |
регистр команды |
... |
|
|
|
|
715 |
0004 |
|
|
|
716 |
0003 |
|
|
|
... |
|
|
|
|
2) 0101 0111 0001 0110 - добавить к аккумулятору значение ячейки памяти(по адресу 71616)
Память Регистры процессора
N ячейки |
значение в ячейке |
|
значение в регистре |
название регистра |
100 |
1715 |
|
102 |
прогр. счетчик |
101 |
5716 |
|
0007 |
аккумулятор |
102 |
2716 |
|
5716 |
регистр команды |
... |
|
|
|
|
715 |
0004 |
|
|
|
716 |
0003 |
|
|
|
... |
|
|
|
|
3) 0010 0111 0001 0110 - сохранить содержимое аккумулятора в памяти( по адресу 71616)
Память Регистры процессора
N ячейки |
значение в ячейке |
|
значение в регистре |
название регистра |
100 |
1715 |
|
103 |
прогр. счетчик |
101 |
5716 |
|
0007 |
аккумулятор |
102 |
2716 |
|
2716 |
регистр команды |
... |
|
|
|
|
715 |
0004 |
|
|
|
716 |
0007 |
|
|
|
... |
|
|
|
|
Это простой пример работы процессора, при этом показана только работа с памятью.
Процессор может аналогично ввод-вывод данных выполнять на устройства ввода-вывода. Современные процессоры выполняют команды, в состав которых входит много адресов и используют множество регистров, при этом многие регистры для данных 32-битные, а не 16-битные.
Весь процесс исполнения можно изобразить схемой:
память <------> процессор <------> устройства ввода-вывода
Процессор взаимодействует с устройствами с помощью системной шины. Ее разрядность влияет на скорость обмена данных.
Особенности работы на компьютерах без ОС :
программы выполнялись последовательно: сначала выполнялась программа одного пользователя, а затем запускалась программа другого пользователя.
Расписание: каждому пользователю отводилось свое время, которое он заказывал для выполнения его программы.
Подготовка к работе: для запуска программы нужно было предварительно загрузить в память машины компилятор с этого языка и саму программу( с магнитных лент или перфокарт), затем сохранить скомпилированную программу ( на магнитную лент или перфокарты) и уже затем снова загрузить скомпилированную программу ( если нужно добавить библиотечные функции) и запустить на выполнение. При этом каждое действие выполнялось вручную специальными командами. Если возникала ошибка в программе, то весь процесс повторялся сначала.
НЕДОСТАТКИ:
простои машины: если пользователь заканчивал пропускать задание раньше своего расписания, то компьютерное время не использовалось ( а оно было очень дорогое!)
длительная отладка программ: т.к. процесс подготовки занимал много времени, то отладка (исправление ошибок) очень долгая
большая потеря времени программиста на запуск программ и их выполнение.
Первые пакетные ОС
Первые операционные системы были разработаны в середине 50-х годов в компании General Motors для компьютеров IBM 701 ( одной из заметных ОС стала IBSYS фирмы IBM) и в начале 60-х для других компьютеров появились свои аналоги.
Это были пакетные ОС т.е это программа, которая называлась монитор и ее задача была считывать с устройства ввода последовательно задания одно за другим и запускать их на выполнение:
программисты заранее готовили программы и передавали оператору
оператор собирал программы в пакеты и помещал их в устройство ввода
Монитор считывает очередной пакет с устройства ввода и выполняет его, затем снова считывает следующий и выполняет его и.т.д. При каждом завершении работы программы, управление передается монитору, который загружает следующую программу.
Часть монитора находится постоянно в оперативной памяти ( это резидентная часть программы) , которая использует часть оперативной памяти, а в остальную часть памяти загружаются сами программы пользователя и вспомогательные данные.
Время процессора распределяется между монитором и пользовательской программой;
В каждую программу включаются команды управления монитора ( язык управления заданиями JCL-job control language). Например, программа на фортране обычно включала команды с $:
$JOB начало задания
$FTN загрузка компилятора языка фортран ( с ленты или др устройства) и запуск его. Результат сохраняется в памяти
---- строки программы---
$LOAD запись на ленту откомпилированной программы
$RUN запуск программы на исполнение
При считывании с устройства ввода-вывода и записи на него управление передается подпрограмме ввода операционной системы
Для первых операционных систем и последующих были разработаны специальные средства для управления процессом запуска заданий ( основные компоненты ОС):
Защита памяти: программа не должна использовать память монитора (ОС). Если такая ошибка происходит, то аппаратная часть процессора обнаруживает это и передается управление монитору, который снимает задачу с выполнения и печатает сообщение об ошибке.
Таймер: для предотвращения бесконтрольного захвата времени программой в начале каждой программы выставляется таймер, который по истечение заданного промежутка времени останавливает программу и передает управление монитору. Такие прерывания по таймеру работы программы выполняются постоянно через небольшой промежуток времени, что позволяет в любой момент времени с помощью команд монитора перехватить управление системой.
Привилегированные команды: некоторые машинные команды имеют привилегии – исполняются только монитором. Если процессор обнаружит использование этой команды пользовательской программой, то он прервет ее выполнение и передаст управление монитору. К этим командам относятся команды ввода-вывода.
Прерывания: В первых моделях компьютеров их не было, но в последующих они появились. Прерывания позволяют реагировать на сигналы аппаратуры или программ и прерывать работу выполняемой программы для обработки этих сигналов.
ИТОГ: пакетные ОС решали проблему расписания и повышали эффективность использования компьютера, однако в каждый промежуток времени исполнялась только 1 программа т.е. эти системы были однозадачными. К таким системам относится MS DOS, однако она разработана с использованием интерактивного режима работы т.е. программы запускаются пользователем с помощью команд по мере необходимости. Такая возможность реализована благодаря системе прерываний.
Вопросы на закрепление
Что из себя представляли программы для первых ЭВМ. Как осуществлялся запуск и выполнение программ для первых ЭВМ. Недостатки исполнения заданий на первых ЭВМ
Принцип работы первых пакетных ОС, как их еще называли. Основные компоненты первых ОС. Что такое однозадачная ОС