Операционные системы v2015

Содержание

Слайд 2

«Классическая» ЭВМ со внешними устройствами

«Классическая» ЭВМ со внешними устройствами

Слайд 3

Предпосылки и история операционных систем 1. Упрощенная функциональная схема ЭВМ 2.

Предпосылки и история операционных систем

1. Упрощенная функциональная схема ЭВМ

2. Прямой доступ

3.

Трансляция

4. Многозадачность

ОПЕРАЦИОННАЯ СИСТЕМА – комплекс управляющих и обрабатывающих программ, который решает 3 класса задач:
Обслуживание взаимодействия приложений и оборудования;
Обслуживание взаимодействия пользователя и приложений;
3) Рациональное распределение вычислительных ресурсов (памяти, процессорного времени, доступа ко внешним устройствам, etc.).

Слайд 4

Классификация операционных систем по назначению 1. Офисные ОС (MS Windows, клоны

Классификация операционных систем по назначению

1. Офисные ОС (MS Windows, клоны UNIX,

OS-2, ReactOS и пр.).
2. ОС реального времени (QNX, OS-9/9000, VxWorks и пр.).
3. Специализированные ОС.
3.1. Для мобильных устройств (Android, Apple iOS, Symbian и пр.).
3.2. Для сетевых устройств (Cisco IOS).
3.3. Для мэйнфреймов (IBM System/360, IBM System/370, z/OS).
3.4. Для мини-ЭВМ (RSX-11, RT-11, VMS и OpenVMS).
Сертифицированные отечественные ОС: MCBC (офисная) и OC2000 «Багет» (реального времени).
Слайд 5

Распространенность ОС Рабочие станции Серверы сетей и БД Мобильные устройства

Распространенность ОС

Рабочие станции Серверы сетей и БД

Мобильные устройства

Слайд 6

Структура вычислительной системы Оборудование – процессор, память, интерфейсы ввода-вывода и пр.

Структура вычислительной системы

Оборудование – процессор, память, интерфейсы ввода-вывода и пр.
Менеджеры ресурсов

– диспетчер задач, диспетчер памяти, диспетчер ввода-вывода, файловая система, сетевая система, подсистема защиты и пр.
Интерфейсные библиотеки (для программ) – внутрифирменный стандарт Microsoft Win API (KERNEL, USER, GDI), межфирменный стандарт POSIX (LibC, LibX), межфирменный стандарт JVM и пр.
Интерфейсные оболочки (для пользователя) - COMMAND.COM, CMD, KDE, Gnome, bash и пр.
Прикладные программы – Проводник, Блокнот, MS Office, Midnight commander, GCC, Counter Strike, Пасьянс и пр.
Слайд 7

Примеры архитектур ОС

Примеры архитектур ОС

Слайд 8

Архитектура оборудования ЭВМ

Архитектура оборудования ЭВМ

Слайд 9

Процессор Intel x86 ARM Особые регистры: 1) счетчик команд 2) регистр флагов; 3) указатель стека

Процессор

Intel x86

ARM

Особые регистры: 1) счетчик команд 2) регистр флагов; 3) указатель

стека
Слайд 10

Обзор системы команд архитектуры INTEL Структура регистров A,B,C и D: Примеры использования:

Обзор системы команд архитектуры INTEL

Структура регистров A,B,C и D:

Примеры использования:

Слайд 11

Обзор системы команд (продолжение) Пример выполнения 3-местной операции сложения при помощи 2-местной команды: То есть: ПРИЕМНИК:=ПРИЕМНИК+ИСТОЧНИК

Обзор системы команд (продолжение)

Пример выполнения 3-местной операции сложения
при помощи 2-местной

команды:

То есть: ПРИЕМНИК:=ПРИЕМНИК+ИСТОЧНИК

Слайд 12

Обзор системы команд (продолжение) Количество операндов: Двухместные (двухоперандные) команды: MOV Источник,Приемник

Обзор системы команд (продолжение)

Количество операндов:
Двухместные (двухоперандные) команды: MOV Источник,Приемник
Одноместные

(однооперандные команды): NOT Операнд
Безоперандные команды: NOP
Способы адресации операндов:
Регистровый: NOT EAX
Непосредственный: MOV EAX, 12345678h
Прямой: MOV [12345678h], EAX или
MOV METKA, EAX
Косвенный: MOV [EBX], 0
Косвенный со смещением: MOV [EBX+12345678h], 0 или
MOV METKA[EBX]
Базово-индексный: MOV [EBX+ESI], 12345678h
Базово-индексный со смещением: MOV [EBX+ESI+4], 12345678h или
MOV METKA[EBX+ESI], 12345678h
Слайд 13

Обзор системы команд (продолжение) Как кодируются команды: Пример: команда сложения регистра

Обзор системы команд (продолжение)

Как кодируются команды:

Пример: команда сложения регистра с памятью

«ADD R, [AAAA]».

0000 0011+00+000+101+11111111111111111111111111111111 =
= 03 05 FF FF FF FF =
= ADD EAX, FFFFFFFF

Слайд 14

Обзор системы команд (продолжение) Пример размещения команд и данных в памяти

Обзор системы команд (продолжение)

Пример размещения команд и данных в памяти

Слайд 15

Обзор системы команд (продолжение) Команды пересылки данных MOV ПРИЕМНИК, ИСТОЧНИК –

Обзор системы команд (продолжение)

Команды пересылки данных
MOV ПРИЕМНИК, ИСТОЧНИК – копирует данные;


LEA ПРИЕМНИК, ОБЪЕКТ – загружает адрес объекта;
XCHG ОПЕРАНД1,ОПЕРАНД2 – обмен операндами;
MOVSB/MOVSW/MOVSD – копирование из [SI/ESI] в [DI/EDI] c инкрементом регистров SI/ESI и DI/EDI;
LODSB/LODSW/LODSD – копирование из памяти по адресу [SI/ESI] в AL/AX/EAX с инкрементом регистра SI/ESI;
STOSB/STOSW/STOSD – копирование из AL/AX/EAX в память по адресу [DI/EDI].

Команды MOV ПАМЯТЬ,ПАМЯТЬ нет. Зато MOVSD:
MOV Куда-то, [ESI]
ADD ESI, 4
MOV [EDI], Откуда-то
ADD EDI, 4

Бит D в регистре флагов !!!

Слайд 16

Обзор системы команд (продолжение) Пересылка операндов разной длины 2. Целочисленные арифметико-логические команды 2.1. Представление данных

Обзор системы команд (продолжение)

Пересылка операндов разной длины

2. Целочисленные арифметико-логические команды
2.1. Представление

данных
Слайд 17

Обзор системы команд (продолжение) 2.2. Арифметические команды ADD ПРИЕМНИК,ИСТОЧНИК – сложение;

Обзор системы команд (продолжение)

2.2. Арифметические команды
ADD ПРИЕМНИК,ИСТОЧНИК – сложение;
SUB

ПРИЕМНИК,ИСТОЧНИК – вычитание;
ADC ПРИЕМНИК,ИСТИОЧНИК – сложение с учетом бита C;
SBB ПРИЕМНИК,ИСТОЧНИК – вычитание с учетом бита C;
MUL МНОЖИТЕЛЬ – умножение AL/AX/EAX на МНОЖИТЕЛЬ, результат в AL:AH, AX:DX или EAX:EDX;
DIV ДЕЛИТЕЛЬ – деление AL/AX/EAX на ОПЕРАНД, результат в AL:AH, AX:DX или EAX:EDX;
IMUL МНОЖИТЕЛЬ и IDIV ДЕЛИТЕЛЬ – умножение или деление с учетом знака;
INC ОПЕРАНД – инкремент операнда;
DEC ОПЕРАНД – декремент операнда;
NEG ОПЕРАНД – изменение знака операнда.

Некоторые биты регистра флагов:

С – перенос, P – четность, Z – ноль, S – знак, O - переполнение

Слайд 18

Обзор системы команд (продолжение) 2.4. Логические команды AND приемник,источник – логическое

Обзор системы команд (продолжение)

2.4. Логические команды
AND приемник,источник – логическое умножение

операндов;
OR приемник,источник – логическое сложение операндов;
XOR приемник,источник – «исключающее ИЛИ» (!!!);
NOT операнд – инвертирование битов;
SHR/SHL операнд,количество – логический сдвиг вправо/влево;
ROR/ROR операнд,количество – циклический сдвиг вправо/влево.
2.5. Команды вещественной арифметики (над 7 типами данных)
FLD – загрузить число в стек;
FST – скопировать число из стека;
FSTP – прочитать число из стека;
FADD/FSUB/FMUL/FDIV приемник,источник
– арифметика;
FSIN/FCOS/FPTAN/FPATAN – тригонометрия;
F2XMI/FYL2X/FYL2XP1 – экспоненты и
логарифмы.
Слайд 19

Обзор системы команд (продолжение) 2.6. Команды передачи управления JMP смещение или

Обзор системы команд (продолжение)

2.6. Команды передачи управления
JMP смещение или JMP

адрес – безусловная передача;
J** смещение - передача управления по условию.

JE или JZ – переход о равенству;
JNE или JNZ – переход по неравенству;
JA/JB – переход по больше/меньше;
JAE/JBE – переход по больше и равно/меньше и равно;
JCXZ – переход, если CX/ECX=0.
2.7. Команды проверки условия (без изменения операндов)
CMP операнд1,операнд2 – сравнение вычитанием;
TEST операнд1,операнд2 – сравнение логическим умножением.

MOV EBP, 123
NEXT: . . .
DEC EBP
CMP EBP,0 – не обязательно
JNE NEXT

CLD
MOV ECX, 123
NEXT: . . .
. . .
LOOP NEXT

Слайд 20

Обзор системы команд (продолжение) 2.8. Команды работы со стеком PUSH операнд/POP

Обзор системы команд (продолжение)

2.8. Команды работы со стеком
PUSH операнд/POP операнд

– втолкнуть/вытолкнуть из стека (SP/ESP!!!);
PUSHA/POPA – втолкнуть/вытолкнуть весь набор регистров;
PUSHF/POPF – сохранить/восстановить из стека регистр флагов.

2.9. Организация вызова процедур (подпрограмм)

Слайд 21

Обзор системы команд (продолжение) 2.10. Организация системы прерываний и исключений Прерывания

Обзор системы команд (продолжение)

2.10. Организация системы прерываний и исключений

Прерывания обрабатываются ПОСЛЕ

выполнения текущей команды, а исключения В ПРОЦЕССЕ выполнения.
Слайд 22

Обзор системы команд (продолжение) Некоторые исключения: 0 – деление на 0;

Обзор системы команд (продолжение)

Некоторые исключения:
0 – деление на 0;
1

– вызывается после выполнения каждой команды;
3 – вызывается командой INT3 с кодом СС;
6 – неверная команда (например, вызывается командой UD2);
8 – двойная ошибка (возникла в обработчике другого исключения);
D – общая ошибка защиты (например, MOV [00000000], EAX);
E – обращение по физически отсутствующему адресу.

Некоторые логические номера прерываний:

Слайд 23

Обзор системы команд (продолжение) Обработка исключений А) в режиме супервизора б)

Обзор системы команд (продолжение)

Обработка исключений

А) в режиме супервизора б) В пользовательском

режиме

SEH – структурная обработка
исключений

Слайд 24

Обзор системы команд (окончание) 2.11. Команды доступа ко внешним устройствам IN

Обзор системы команд (окончание)

2.11. Команды доступа ко внешним устройствам
IN AL,Номер_порта

– ввод в регистр из порта;
OUT Номер_порта,AL – вывод в порт из регистра.
2.12. Прочие команды
NOP – пустая команда;
UD2 – генерация исключения «неопределенная операция»;
INT номер – генерация прерывания (!!!);
CPUID – сброс кэшей и возврат идентифицирующей информации;
RDTSC – возврат в EDX:EAX счетчика тактов процессора.
2.13. Расширенные наборы команд
MMX – набор команд для массовых операция над целыми векторами;
3DNow! – расширение набора MMX в процессорах AMD;
SSE, SSE2, SSE3, SSE4 – операции над вещественными векторами.
Слайд 25

Режимы работы процессоров INTEL

Режимы работы процессоров INTEL

Слайд 26

Реальный режим 3.1. Реальный режим Шина данных и регистры 16-битовые (диапазон

Реальный режим

3.1. Реальный режим
Шина данных и регистры 16-битовые (диапазон 0..65535);

Шина адреса 20-битовая (объем памяти 1 Мб);
Шина ввода-вывода 8-битовая (всего 256 внешних устройств)
Слайд 27

Распределение памяти в реальном режимe Состав BIOS: 1. Программа POST 2.

Распределение памяти в реальном режимe

Состав BIOS:
1. Программа POST
2. Программа SETUP
3. Библиотеки

доступа к обору-
дованию
3.1. К видео через INT 10h
3.2. К клавиатуре через INT 16h
3.3. К диску через INT 13h
Примеры:
Mov ah, 0Eh ; Код функции
Mov bh, 0 ; Номер видеостраницы
Mov al, ‘A’ ; Код символа
Int 10h ; Вызов BIOS
Слайд 28

Режим виртуального 80х86 3.2. Является частью 32-битового защищенного режима. В 64-битовом не поддерживается.

Режим виртуального 80х86

3.2. Является частью 32-битового защищенного режима. В 64-битовом не

поддерживается.
Слайд 29

Защищенный режим. Сегментная адресация 3.3. Защищенные режимы (биты 0 и 31

Защищенный режим. Сегментная адресация

3.3. Защищенные режимы (биты 0 и 31 в

CR0):
Шина адреса 32 (макс. адр. = 4Гб ~ 4.2 млрд байтов) или 48 битов;
Шина данных 32 или 64 бита;
Шина ввода-вывода 16 (?) битов;
Доп. регистры: *DTR, CR0-CR4 (упр. процессором), DR0-DR7 (отладка).

Формат дескриптора:

Таблицы:
GDT – глобальная (1 шт);
LDT – локальные (много);
IDT – прерываний.
Регистры GDTR, LDTR и
IDTR.

Слайд 30

Защищенный режим. Привелегии сегментов CPL – уровень привилегий текущей программы; RPL

Защищенный режим. Привелегии сегментов

CPL – уровень привилегий текущей программы;
RPL – запрашиваемый

уровень привилегий (в селекторе);
DPL – реальный уровень привилегий (в дескрипторе).
Условие доступа: CPL ≤ RPL ≤ DPL. ( Потому что 0 > 1 > 2 > 3 ☺ )

Привилегированные команды: IN/OUT, LGDTR/LLDTR/LIDTR и пр.

Слайд 31

Защищенный режим. TSS – сегмент состояния задачи

Защищенный режим. TSS – сегмент состояния задачи

Слайд 32

Защищенный режим. Страничная адресация Формат строки каталога или таблицы:

Защищенный режим. Страничная адресация

Формат строки каталога или таблицы:

Слайд 33

Защищенный режим. Виртуализация ресурсов Виртуализация памяти Виртуализация устройств Операционная система = виртуальная машина

Защищенный режим. Виртуализация ресурсов

Виртуализация памяти Виртуализация устройств

Операционная система = виртуальная машина

Слайд 34

Особенности процессоров АRM Разрядность 32 или 64 бита; 16 регистров общего

Особенности процессоров АRM

Разрядность 32 или 64 бита;
16 регистров общего

назначения;
7 режимов работы: для прикладных программ; для операционных систем; для драйверов; для обработки прерываний и исключений в разных режимах (4 шт);
Трехместные команды: ADD R0, R1, R2;
Условные команды: MOVGT R0, R1;
Режим «сокращенных» команд;
Режимы 16, 32 и 64 бита;
Страница ввода-вывода.
Слайд 35

Обращение к ядру операционной системы Mov ah, 0Eh ; Код функции

Обращение к ядру операционной системы

Mov ah, 0Eh ; Код функции
Mov bh,

0 ; Номер видеостраницы
Mov al, ‘A’ ; Код символа
Int 10h ; Вызов BIOS

Fname db ’C:\FILE.TXT’,0
. . .
mov ah, 3Dh ; Код функции
mov al, 2 ; Чтение + запись
lea dx, Fname ; Адрес имени
int 21h ; Обращение к ядру

А) Загрузчик ОС б) MS-DOS

Слайд 36

Обращение к ядру операционной системы В) Windows NT ; Через Win

Обращение к ядру операционной системы

В) Windows NT

; Через Win API
HFILE f

= _lopen( ”C:\\FILE.TXT”, OF_READ|OF_WRITE );
_lwrite (f, Buf, 1 );
_lclose( f );
; Через Win32 API
HANDLE h = CreateFile("C:\\FILE.TXT",
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_WRITE, NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
WriteFile(h, Buf, 1, &HowMany, NULL);
CloseHandle(h);
; Через Win32 API на языке ассемблера
FileName db ‘C:\FILE.TXT’,0
Buf db ?
. . .
push 0
push 00000080h
push 2
push 0
push 1
push 40000000h
push offset FileName
call CreateFileA
mov EBP,EAX
push 0
push offset HowMany
push 1 ; Писать 1 байт
push offset Buf
push EBP
Call WriteFile
push EBP
Call CloseHandle

KERNEL – память, процессы, файлы; USER – мышь, клавиатура, окна; GDI – графика; ADVAPI – криптография, Реестр.

Слайд 37

Обращение к ядру операционной системы Г) Linux // На языке С

Обращение к ядру операционной системы

Г) Linux

// На языке С через LibC
int

f = open( ”./FILE.TXT”, O_RDWR|O_BINARY, S_IWRITE|S_IREAD );
read( f, buf, 1);
close (f);
; На языке ассемблера прямым обращением к ядру
Messag db ‘Hello world’, 0

mov eax, 4 ; write
mov ebx, 1 ; дескриптор экрана консоли
mov ecx, offset Messag
mov edx, 11 ; длина
int 80h
mov eax, 1 ; exit
mov ebx, 0 ; код завершения
int 80h

LibC – память, процессы, файлы; LibX – графика.

Слайд 38

Ядро ОС. Диспетчер памяти Функции диспетчера памяти: Отслеживание, выделение, освобождение и

Ядро ОС. Диспетчер памяти

Функции диспетчера памяти:
Отслеживание, выделение, освобождение и дефрагментация

памяти;
Защита памяти
Свопинг фрагментов виртуальной памяти
Загрузка и выгрузка оверлеев
Настройка символьных адресов на логические (или физические).

Отслеживание, выделение, освобождение и дефрагментация памяти
Методы организации адресного пространства:
С постоянными разделами;
С динамически выделяемыми разделами;
- выделение первого подходящего;
- выделение наиболее подходящего;
- выделение наименее подходящего.
С перемещаемыми разделами.

Слайд 39

Ядро ОС. Диспетчер памяти (продолжение)

Ядро ОС. Диспетчер памяти (продолжение)

Слайд 40

Ядро ОС. Диспетчер памяти (продолжение) Защита памяти Создание параллельных адресных пространств

Ядро ОС. Диспетчер памяти (продолжение)

Защита памяти
Создание параллельных адресных пространств
«Раскрашивание»

фрагментов памяти:
- разрешение/запрет любого доступа
- разрешение/запрет записи
- разрешение/запрет выполнения программного кода
- разрешение/запрет свопинга
- разрешение/запрет совместного доступа.

Загрузка-выгрузка оверлеев

Слайд 41

Ядро ОС. Диспетчер памяти (окончание) Настройка символьных адресов

Ядро ОС. Диспетчер памяти (окончание)

Настройка символьных адресов

Слайд 42

Ядро ОС. Диспетчер задач Задача = программа, предназначенная для одновременной работы

Ядро ОС. Диспетчер задач

Задача = программа, предназначенная для одновременной работы
с

другими программами (задачи)

А) Процессы б) Потоки (нити)

Слайд 43

Ядро ОС. Диспетчер задач (продолжение) Организация выполнения нескольких задач А) Последовательная

Ядро ОС. Диспетчер задач (продолжение)

Организация выполнения нескольких задач

А) Последовательная
(пакетный режим)

Б) Истинная
параллельность

В)

Псевдо- (квази-)
параллельность

Аппаратные возможности

Слайд 44

Ядро ОС. Диспетчер задач (продолжение)

Ядро ОС. Диспетчер задач (продолжение)

Слайд 45

Ядро ОС. Диспетчер задач (продолжение) Задачи переключаются по собственному желанию. Достоинства:

Ядро ОС. Диспетчер задач (продолжение)

Задачи переключаются по собственному желанию.
Достоинства:
Простота реализации

Предсказуемость поведения задач
Недостатки:
Неустойчивость к сбоям.
Примеры: Windows 1.X - 3.X,
некоторые ОСРВ.

Задачи переключаются операционной системой
Недостатки:
Сложность реализации
Непредсказуемость поведения задач
Достоинство:
Устойчивость к сбоям.
Примеры: все современные ОС

Слайд 46

Ядро ОС. Диспетчер задач (продолжение) A) Кооперативная м/з Б) Вытесняющая м/з Причины переключения задач

Ядро ОС. Диспетчер задач (продолжение)

A) Кооперативная м/з Б) Вытесняющая м/з

Причины переключения

задач
Слайд 47

Ядро ОС. Диспетчер задач (продолжение)

Ядро ОС. Диспетчер задач (продолжение)

Слайд 48

Ядро ОС. Диспетчер задач (продолжение) Состояния: S1 – выполнение; S2 –

Ядро ОС. Диспетчер задач (продолжение)

Состояния:
S1 – выполнение; S2 – ожидание; S3

– блокировка.
События:
E1 – запуск; Е2 – начало выполнения; Е3 – вытеснение; Е4 – блокировка; E5 – снятие блокировки; Е6 – завершение.

Граф многозадачности

Слайд 49

Ядро ОС. Диспетчер задач (продолжение) Модель многозадачности Типы задач: периодические; спорадические; фоновые. Условие работоспособности:

Ядро ОС. Диспетчер задач (продолжение)

Модель многозадачности

Типы задач:
периодические;
спорадические;
фоновые.

Условие работоспособности:

Слайд 50

Ядро ОС. Диспетчер задач (продолжение) Алгоритмы работы планировщика задач (алгоритмы диспетчеризации)

Ядро ОС. Диспетчер задач (продолжение)

Алгоритмы работы планировщика задач
(алгоритмы диспетчеризации)

1) RR

- Round Robin («карусель»)

2) UNIX (старение приоритетов)

3) Windows (классы приоритетов)

4)Алгоритмы реального времени:
RMS (Rate Monotonic Sheduling) – чем меньше T, тем выше приоритет.
EDF (Earliest Deadline First) – чем меньше до D, тем выше приоритет.

Факторы:
Открытое окно
Фокус ввода
«Возраст» задачи
«Голод» задачи

Слайд 51

Ядро ОС. Диспетчер задач (продолжение) Проблемы диспетчеризации: «Голодание» задач (job starvation),

Ядро ОС. Диспетчер задач (продолжение)

Проблемы диспетчеризации:
«Голодание» задач (job starvation),
решение –

«разгон» приоритетов (priority boosting)
2) Инверсия приоритетов;
решение – «наследование» приоритетов;
3) «Гонки» (race condition);
4) «Взаимоблокировка» (deadlock).
Слайд 52

Ядро ОС. Диспетчер задач (продолжение) Модель «поставщик-потребитель», условия: 1) неодновременность доступа;

Ядро ОС. Диспетчер задач (продолжение)

Модель «поставщик-потребитель»,
условия: 1) неодновременность доступа; 2)

попеременность доступа.

А) Однозадачный алгоритм

Б) Многозадачный алгоритм без синхронизации

В) алгоритм с блокирующим флагом

Слайд 53

Ядро ОС. Диспетчер задач (продолжение) Г) Алгоритм Деккера-Холта Другой вариант: алгоритм Петерсона

Ядро ОС. Диспетчер задач (продолжение)

Г) Алгоритм Деккера-Холта

Другой вариант: алгоритм Петерсона

Слайд 54

Ядро ОС. Диспетчер задач (продолжение) Д) Алгоритм с использованием семафоров Дейкстры

Ядро ОС. Диспетчер задач (продолжение)

Д) Алгоритм с использованием семафоров Дейкстры

1. Целая

переменная S
2. P(S) - операция «Оградить»
S:=S-1
Если S<0, то текущая задача встает в очередь
3. V(S) – операция «Освободить»
S:=S+1
Если S>0, то 1-я в очереди задача продолжает работу
Слайд 55

Ядро ОС. Диспетчер задач (продолжение) Метод организации атоммарности - Монитор (Хоара)

Ядро ОС. Диспетчер задач (продолжение)

Метод организации атоммарности - Монитор (Хоара)

Команды типа

«Проверка и установка»
; TEST_AND_SET Локальная,Общая
Локальная := Общая
Общая := 1
2) Запрет прерываний

CLI



STI

Слайд 56

Ядро ОС. Диспетчер задач (окончание) Особенности старта процессов в UNIX x

Ядро ОС. Диспетчер задач (окончание)

Особенности старта процессов в UNIX
x = fork();
cout

<< x;
if (!x) { cout << “ Я новенький”; exec(…); }
else cout << “ Я старенький”;
1 Я старенький 0 Я новенький

Финальный обзор методов синхронизации

Слайд 57

Ядро ОС. Диспетчер ввода-вывода А) Режим PIO Б) Режим DIO Назначение:

Ядро ОС. Диспетчер ввода-вывода

А) Режим PIO Б) Режим DIO

Назначение:
Управление внешними

устройствами
Передача данных на внешние устройства
Прием данных со внешних устройств
Слайд 58

Ядро ОС. Диспетчер ввода-вывода (продолжение) А) Синхронный ввод-вывод Б) Асинхронный ввод-вывод

Ядро ОС. Диспетчер ввода-вывода (продолжение)

А) Синхронный
ввод-вывод

Б) Асинхронный
ввод-вывод
с ожиданием завершения

В) Асинхронный

ввод-вывод с сигналом завершения
Слайд 59

Ядро ОС. Диспетчер ввода-вывода (продолжение) А) Пример синхронного чтения б) Пример

Ядро ОС. Диспетчер ввода-вывода (продолжение)

А) Пример синхронного чтения б) Пример асинхронного

чтения

// Чтение даты создания BIOS
#include
#include
#include
int f; // Дескриптор файла
unsigned char buf[8]; // Буфер для чтения
main() {
// Открыть адресное пространство
f = open("/dev/mem", O_RDONLY, 0);
// Переместить указатель чтения
lseek(f, 0xFFFF5, SEEK_SET);
// Читать
read(f, buf, 8);
// Закрыть
close (f);
}

// Чтение генаратора случайных чисел
#include
#include
#include
#include
struct aiocb cb; // Описатель параметров I/O
int number; // Буфер для чтения
int f; // Дескриптор файла
int main() {
// Открыть генератор случайных чисел
f = open("/dev/random", O_RDONLY, 0);
// Очистить описатель
memset(&cb, 0, sizeof(struct aiocb));
// Заполнить некоторые поля
cb.aio_nbytes = sizeof(int); // Сколько читать
cb.aio_fildes = f; // Из какого файла
cb.aio_offset = 0; // С какого смещения
cb.aio_buf = &number; // По какому адресу
// Запустить чтение
aio_read(&cb);
while (1) {
if (aio_error(&cb) == EINPROGRESS))
{ close (f); break; }
...
// Здесь выполнять какую-то работу
...
}
}

Слайд 60

Ядро ОС. Диспетчер ввода-вывода (продолжение) Драйвера

Ядро ОС. Диспетчер ввода-вывода (продолжение)

Драйвера

Слайд 61

Ядро ОС. Диспетчер ввода-вывода (окончание) Буферизация данных А) Кольцевой буфер Б)

Ядро ОС. Диспетчер ввода-вывода (окончание)

Буферизация данных

А) Кольцевой буфер Б) Двухтактный

(двойной) буфер

Вероятность переполнения буфера размером m:

Слайд 62

Ядро ОС. Файловая система Файл = именованный набор данных. Расположение: в

Ядро ОС. Файловая система

Файл = именованный набор данных.
Расположение:
в Windows

только на носителях;
в UNIX – в/на любом устройстве.
Файловая система:
набор форматов и алгоритмов, описывающих расположение данных;
компонент ОС, поддерживающий этот набор форматов и алгоритмов.
Примеры файловых систем:
Слайд 63

Ядро ОС. Файловая система (продолжение) Физическая организация носителей информации 1) Жесткий

Ядро ОС. Файловая система (продолжение)

Физическая организация носителей информации

1) Жесткий диск (HDD)

Виды

адресации секторов:
CHS = {цилиндр, головка, сектор};
LBA = NS×NH×C + NS×H + S – 1.
MBR (Master Boot Record – главная загрузочная запись) =
Таблица описания разделов диска + программа поиска и загрузки активного Boot-сектора.
Boot-сектор (загрузочный сектор) =
Таблица описания структуры раздела + программа начала загрузки ОС.
Слайд 64

Ядро ОС. Файловая система Доступ к MBR: // Windows NT BYTE

Ядро ОС. Файловая система

Доступ к MBR:
// Windows NT
BYTE mbr[512];
DWORD dwRead;
HANDLE

hDisk = CreateFile("\\\\.\\PhysicalDrive0",
GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, 0, NULL);
ReadFile(hDisk, &mbr, 512, &dwRead, NULL);
CloseHandle(hDisk);
// UNIX 
unsigned char buf[512];
int f = open("/dev/hda", O_RDONLY);
read(f, buf, 512);
close(f);
Структура строки:
+00 – метка активности;
+04 – тип ф/c;
+1С – длина раздела.
Слайд 65

Ядро ОС. Файловая система (продолжение) Загрузка операционных систем А) По правилам

Ядро ОС. Файловая система (продолжение)

Загрузка операционных систем

А) По правилам BIOS

Б) В

случае вируса/буткита (а так же boot-менеджеров Grub, Lilo, Ontrack…)

В) В случае UEFI (диски с GPT – GUID partition table)

Слайд 66

Ядро ОС. Файловая система (продолжение) Отличия BIOS от UEFI

Ядро ОС. Файловая система (продолжение)

Отличия BIOS от UEFI

Слайд 67

Ядро ОС. Файловая система (продолжение) 2) Компакт-диски (CD и DVD) А)

Ядро ОС. Файловая система (продолжение)

2) Компакт-диски (CD и DVD)

А) Принцип записи

Б)

Физическая организация

Типы треков:
треки данных;
треки аудио;
треки видео (только на DVD).

Слайд 68

Ядро ОС. Файловая система (продолжение) Физическая структура диска – набор секторов

Ядро ОС. Файловая система (продолжение)

Физическая структура диска – набор секторов

Логическая структура

диска – набор кластеров
Слайд 69

Ядро ОС. Файловая система (продолжение) 1. Простейшая последовательная ФС Структура записи

Ядро ОС. Файловая система (продолжение)

1. Простейшая последовательная ФС

Структура записи каталога:
имя

файла;
атрибуты файла (защита от записи, дата и время создания и пр.);
длина файла;
адрес первого кластера.

Каталог (директория) = база данных о файлах (имя, расположение на диске, длина, прочие характеристики).

Достоинство: простота
Недостаток: фрагментация дискового пространства.

Слайд 70

Ядро ОС. Файловая система (продолжение) 2) Файловые системы семейства FAT (MS-DOS,

Ядро ОС. Файловая система (продолжение)

2) Файловые системы семейства FAT (MS-DOS, Windows)

Структура

записи каталога:
имя в формате либо «8.3», либо «256»);
атрибут (защита от записи, скрытый, системный и т.п.);
длина в байтах;
дата и время создания файла;
номер первого кластера в цепочке.
Слайд 71

Ядро ОС. Файловая система (продолжение) Каталоги FAT – файлы (кроме ROOT,

Ядро ОС. Файловая система (продолжение)

Каталоги FAT – файлы (кроме ROOT, который

область на диске)

Нарушения:
Одинаковые имена (вирус DIR.1024)
Пересекающиеся цепочки кластеров
Потерянные кластеры.
Максимальные размеры:
FAT12: 212 = 2048 кластеров
FAT16: 216 = 65535 кластеров ~ 520 Мб
FAT32: 232 = 4.2 млрд кластеров

Слайд 72

Ядро ОС. Файловая система (продолжение) 3) Файловые системы для UNIX (UFS,

Ядро ОС. Файловая система (продолжение)

3) Файловые системы для UNIX (UFS, EXT*FS,…)

Структура

i-узла (описано в POSIX):
Индекс (номер) файла;
Тип файла (файл/каталог/канал/сокет/спецфайл);
Биты доступа;
ID хозяина;
Время/дата создания/модификации/последнего доступа к данным;
Длина файла;
Счетчик количества копий;
Описание цепочки кластеров.
Каталог – файл особого вида.
Структура:
Слайд 73

Ядро ОС. Файловая система (продолжение) Топологии файловых систем А) FAT и

Ядро ОС. Файловая система (продолжение)

Топологии файловых систем

А) FAT и NTFS –

лес деревьев б) UFS – единственное дерево

Операция монтирования:
> mount /dev/sda1 /mnt/sda1_removable –rw
> umount /dev/sda1

Слайд 74

Ядро ОС. Файловая система (продолжение) 3) NTFS (только Windows NT) Записи

Ядро ОС. Файловая система (продолжение)

3) NTFS (только Windows NT)

Записи в MFT:

Стандартные

потоки: $Data – данные файла; $Date – дата создания; $Time – время создания; $Name – имя файла и т.п.

Программный доступ к потокам:
h = CreateFile(“c:\file.txt::$Time”, …);
h = CreateFile(“c:\file.txt:$MyStream”, …);

Первые 16 записей MFT: $MFT – сам MFT; $LogFile – файл поддержки журналирования; $Volume – служебная информация о томе; $Bitmap – карта свободных мест и пр.

Слайд 75

Ядро ОС. Файловая система (окончание) Особенности NTFS: позволяет сжимать потоки данных

Ядро ОС. Файловая система (окончание)

Особенности NTFS:
позволяет сжимать потоки данных методом

LZNT1.
позволяет шифровать потоки данных методами DESX или AES.
поддерживает откаты операций;
позволяет содержать в записях MFT списки SACL и DACL.
Каталог NTFS:
Индекс (номер) файла;
Имя файла;
Атрибуты;
Списки кластеров;
ID хозяина;
Списки SACL и DACL;
Служебные данные для шифрования, сжатия и журналирования.
Слайд 76

Ядро ОС. Подсистема защиты В MS-DOS, Windows 9X – нет. В

Ядро ОС. Подсистема защиты

В MS-DOS, Windows 9X – нет. В Windows

NT, UNIX, iOS и т.п. – есть.
В ОСРВ присутствует в минимальном объеме.
Слайд 77

Ядро ОС. Подсистема защиты (продолжение) 1. Разграничение доступа {S} – множество

Ядро ОС. Подсистема защиты (продолжение)

1. Разграничение доступа

{S} – множество субъектов;
{O}

– множество объектов;
{M} – множество методов
{P} = { P(S,O,M)→(0,1) } – множество правил доступа.

Архитектура п/с разграничения доступа в ОС

Слайд 78

Ядро ОС. Подсистема защиты (продолжение) Примеры. - Кольца защиты - Изоляционизм

Ядро ОС. Подсистема защиты (продолжение)

Примеры.
- Кольца защиты
- Изоляционизм
- Программируемое р/д в

файловых системах
Слайд 79

Ядро ОС. Подсистема защиты (продолжение) Разграничение доступа в UNIX Субъекты: -

Ядро ОС. Подсистема защиты (продолжение)

Разграничение доступа в UNIX

Субъекты:
- Пользователи и

группы пользователей
Объекты:
- Файлы и устройства
- Каталоги
Поле типа:
«d» - каталог, «b» - файл на блочном устройстве,
«с» - файл на символьном устройстве, «s» - сокет, «p» - канал,
«l» - ссылка.

Команды ls и chmod

Слайд 80

Ядро ОС. Подсистема защиты (продолжение) Разграничение доступа в Windows Субъекты: Пользователи

Ядро ОС. Подсистема защиты (продолжение)

Разграничение доступа в Windows

Субъекты:
Пользователи и группы

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

Правила раскрытия противоречий:
Приоритетность первого упоминания;
Запрет приоритетней разрешения;
Приоритетность группы над субъектом.

Слайд 81

Ядро ОС. Подсистема защиты (продолжение) Примеры SID: ·S-1-1-0 – группа «все пользователи»; ·S-1-5-21-1078081533-1364589140-839522115-1003 – типичный «Администратор».

Ядро ОС. Подсистема защиты (продолжение)

Примеры SID:
·S-1-1-0 – группа «все пользователи»;
·S-1-5-21-1078081533-1364589140-839522115-1003 –

типичный «Администратор».
Слайд 82

Ядро ОС. Подсистема защиты (продолжение) «Оранжевая книга» Критерии оценки безопасности компьютерных

Ядро ОС. Подсистема защиты (продолжение)

«Оранжевая книга»

Критерии оценки безопасности компьютерных систем (USA);
Средства

вычислительной техники. Защита от несанкционированного доступа к информации. Показатели защищенности (РФ);
Автоматизированные системы. Защита от несанкционированного доступа к информации. Классификация автоматизированных систем и требования по защите информации (РФ);
Критерии безопасности информационных технологий (EU).
Слайд 83

Ядро ОС. Подсистема защиты (продолжение) 2. Криптография – дисциплина, изучающая методы

Ядро ОС. Подсистема защиты (продолжение)

2. Криптография – дисциплина, изучающая методы обеспечения

конфиденциальности и аутентичности информации.
Y = F ( X, K1 ) – шифрование данных;
X = G ( Y, K2 ) – расшифрование данных;
X – «текст», Y – «шифротекст» или «криптограмма»;
K1 и K2 – ключи;
F и G – алгоритмы.

Принцип Кирхгофа (Керкхоффа, Керкхоффена) = стойкость шифра зависит только от секретности ключа.

Слайд 84

Ядро ОС. Подсистема защиты (продолжение) Исторические примеры шифровальных ключей

Ядро ОС. Подсистема защиты (продолжение)

Исторические примеры шифровальных ключей

Слайд 85

Ядро ОС. Подсистема защиты (продолжение) Стойкость шифров ко взлому (криптостойкость) Шифры

Ядро ОС. Подсистема защиты (продолжение)

Стойкость шифров ко взлому (криптостойкость)

Шифры типа «сложение

по модулю мощности алфавита»:
буквы текста (‘К’+’Я’) mod 33 = ‘Л’ – шифр Вижинера;
биты данных (1 + 1) mod 2 = 0 – шифр Вернама.

Условия абсолютной стойкости:
Длина ключа = длине сообщения;
Элементы ключа случайны;
Ключ однократен.

Такой шифр = одноразовый шифроблокнот (кодовая книга).

Слайд 86

Ядро ОС. Подсистема защиты (продолжение) Современные (компьютерные) шифры Криптосистема = шифр

Ядро ОС. Подсистема защиты (продолжение)

Современные (компьютерные) шифры

Криптосистема = шифр + правила

использования:
ключевое расписание (правила генерации ключей);
предобработка текста (имитовставка, salting…);
постобработка шифротекста (сцепление блоков…).

Пусть ядро подбирает 100000000 кл/сек ≈ 228 кл/сек.
Тогда суперкомпьютер подберет 12900000000000 ≈ 243 кл/сек.
В году 31 536 000 сек ≈ 225 сек., тогда подберет 243+25 ≈ 2 67 кл/год.
Население Земли 7 млрд ≈ 233 чел, тогда все вместе подберут 2100 кл/г.
По закону Мура 2128 научится подбирать через 28x1.5 = 44 г.

Слайд 87

Ядро ОС. Подсистема защиты (продолжение) Симметричные: K1 = K2. Общий недостаток

Ядро ОС. Подсистема защиты (продолжение)

Симметричные: K1 = K2. Общий недостаток –

сложность распределения ключей.
Асимметричные: K1 ≠ K2. Общие недостатки – невысокая криптостойкость, малая скорость работы.
Потоковые: шифруют поэлементно (посимвольно или побитно).
Блочные: шифруют блоками элементов.
Слайд 88

Ядро ОС. Подсистема защиты (продолжение) Симметричные потоковые шифры Достоинства: простота, высокое

Ядро ОС. Подсистема защиты (продолжение)

Симметричные потоковые шифры

Достоинства: простота, высокое быстродействие, легкость

программной и аппаратной реализации (на LFSR).
Назначение: применение в связи (с одноразовыми «сеансовыми» ключами).
Слайд 89

Ядро ОС. Подсистема защиты (продолжение) Симметричные блочные шифры Достоинства: высокая криптостойкость

Ядро ОС. Подсистема защиты (продолжение)

Симметричные блочные шифры

Достоинства: высокая криптостойкость
Применение: для шифрования

хранимой информации (в т.ч. с многократно использованными ключами), в цифровой связи.
Слайд 90

Ядро ОС. Подсистема защиты (продолжение) Асимметричные шифры и ЭЦП Достоинства: уникальные

Ядро ОС. Подсистема защиты (продолжение)

Асимметричные шифры и ЭЦП

Достоинства: уникальные возможности.
Недостатки: низкая

криптостойкость, невысокая скорость работы.
Применение: шифрование с открытым ключом, ЭЦП, распределение секретных ключей по открытому каналу.
Слайд 91

Ядро ОС. Подсистема защиты (продолжение) Хеш-функции и контрольные суммы

Ядро ОС. Подсистема защиты (продолжение)

Хеш-функции и контрольные суммы

Слайд 92

Ядро ОС. Подсистема защиты (окончание) Microsoft CryptoAPI Состав по умолчанию: RC4

Ядро ОС. Подсистема защиты (окончание)

Microsoft CryptoAPI

Состав по умолчанию:
RC4 (до Vista)

RC2, DES, 2DES, 3DES, DESX, AES (с XP)
RSA
MD5, SHA1, SHA2.

// CryptoAPI
#include
#include
#define _WIN32_WINNT 0x0400
#include "wincrypt.h"
char *szPassword = "PASSWORD"; // Пароль из которого генерируем ключ
TudaSuda( char* datain, long lendatain) {
HCRYPTPROV hCryptProv; // Хэндл криптопровайдера
HCRYPTHASH hCryptHash; // Хеш-объект для алгоритма MD5
DWORD cryptBlockSize; // Длина данных
DWORD bytesback; // Длина новых данных
HCRYPTKEY hCryptKey; // Ключ для шифрования
CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, 0);
CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hCryptHash);
CryptHashData(hCryptHash, (BYTE*)szPassword, strlen(szPassword), 0);
CryptDeriveKey(hCryptProv, CALG_SEAL, hCryptHash, 0, &hCryptKey);
cryptBlockSize=lendatain; bytesback=lendatain;
CryptEncrypt(hCryptKey, NULL, TRUE, 0,(BYTE *)datain, &cryptBlockSize, 0);
BYTE* bData = new BYTE[cryptBlockSize];
memcpy(bData, datain, lendatain);
CryptEncrypt(hCryptKey, NULL, TRUE, 0, bData, &bytesback, cryptBlockSize);
CryptDestroyKey(hCryptKey);
CryptDestroyHash(hCryptHash);
CryptReleaseContext(hCryptProv, 0);
delete[] bData;
}
int main() {
TudaSuda("SSAU forever!", strlen("SSAU forever!"));
}