Похожие презентации:
Тема 3. ÐÑогÑаммное обеÑпеÑение компÑÑÑеÑнÑÑ ÑиÑÑем
1.
Санкт-Петербургский государственный электротехническийуниверситет «ЛЭТИ»
Факультет электротехники и автоматики
Информационные технологии и
компьютерная безопасность
Тема 3. Программное обеспечение
компьютерных систем
Шевченко Алексей Владимирович
Кафедра РАПС
Санкт-Петербург, 2024 г.
2.
Роль программного обеспечения компьютерных системПроцессор
Оперативная
память
В компьютерных системах решение прикладных задач, а также
управление эффективным функционированием процессора,
памяти и периферийных устройств осуществляется с помощью
программного обеспечения различного уровня.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
2
3.
Уровни программного обеспеченияПрикладные программы
Системное
ПО
Дополнительное системное ПО
Пользовательское окружение
ОС
ПО
Ядро ОС
Встроенное ПО (firmware)
Система команд
Аппаратная
платформа
(архитектура)
Микропрограмма
Микроархитектура
Цифровой логический уровень
Физические устройства
В компьютерных системах программное обеспечение делится на «жёстко
зашитое» (к нему относятся микропрограмма процессора и встроенное ПО
периферийных устройств) и «гибкое», загружаемое в оперативную память для
решения различных системных и прикладных задач.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
3
4.
Создание и загрузка программного обеспеченияАппаратное обеспечение
Оперативная память
команды
Процессор
Регистр
Регистр
Программное
обеспечение
…
Регистр
00000004
Регистр
АЛУ
00000003
00000002
00000001
данные
PC - программный счетчик
SP - указатель стека
00000000
В компьютерных системах гибкое программное обеспечение создаётся и
загружается в оперативную память с применением различных технологий и
другого программного обеспечения.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
4
5.
Создание программного обеспечения - программированиеПрограммирование
в машинных кодах
Программирование
на ассемблере
125426
045689
145477
052210
145665
024054
145043
MOV R5, R1
MUL #TA.SIZ,R1
INC R0
BNE 4$
TST R3
CMPB (R0)+,#’’
BEQ 2$
Программирование
на языке высокого
уровня
Графическое
программирование
int a = 5;
int b = 7;
int c = a+b;
if(a > b)
{
int d = a;
}
Первые программы для компьютеров писались непосредственно в машинных
кодах. Затем появились языки низкого уровня – ассемблеры, ориентированные на
архитектуру определённых процессоров. Следующим шагом было создание языков
программирования высокого уровня, не зависящих от конкретных платформ. Кроме
программирования на языках применяются и другие технологии – графическое
программирование, использование искусственного интеллекта и др.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
5
6.
Понятие языка программированияПрограмма
Память
Имя
Размер
Адрес
A
B
C
1
1
1
020
021
022
Данные
A = 5
B = 7
C = A+B
Переменные
Точка входа
Шевченко А. В.
Константы
5
7
Команды
Язык программирования
позволяет описывать данные и
действия над ними. Для
данных (переменных)
стремятся использовать имена,
для действий – символические
коды (в ассемблерах) или
знаки (в языках высокого
уровня).
Операторы
=
+
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
6
7.
Классификация языков программированияЯзыки программирования
Низкого уровня
Высокого уровня
Компиляция
Ассемблеры
Процедурные
Алгол, Кобол,
Фортран, ПЛ/1,
С, Паскаль
Интерпретация
Бэйсик
Непроцедурные
Пролог
Языки программирования можно разделить по уровням (высокого/низкого), по
способу описания программы (процедурные/непроцедурные) и по способу
выполнения программы (компиляция/интерпретация).
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
7
8.
Языки программированияЯзык
Год
выпуска
FORTRAN
1957
Первый язык высокого уровня для научных и инженерных расчетов
ALGOL
COBOL
1958
1959
Универсальный алгоритмический язык широкого применения
Разработка бизнес-приложений
LISP
1960
Язык обработки списков для систем искусственного интеллекта
BASIC
1963
Язык для обучения программированию
PL/1
1964
Язык для научных, инженерных и бизнес-ориентированных вычислений
C
1968
Эффективный язык для системного и прикладного программирования
Pascal
1970
Язык общего назначения, часто используется для обучения программированию
Prolog
Ada
Smalltalk
1972
1980
1980
Язык и система логического программирования
Язык программирования для встроенных систем
Объектно-ориентированный язык программирования
C++
1983
Объектно-ориентированный язык программирования, созданный на базе языка С
Eiffel
1986
Objective-C
Java
C#
Pyton
1986
1995
2000
2008
Шевченко А. В.
Назначение
Объектно-ориентированный язык программирования с алголоподобным
синтаксисом
Объектно-ориентированный язык на базе C и Smalltalk
Объектно-ориентированный язык для виртуальной машины
Объектно-ориентированный язык для платформы .NET
Мультипарадигменный язык программирования
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
8
9.
Пример программы на разных языках программированияПаскаль
program HelloWorld(output);
begin
writeln('Hello, World!')
end.
Фортран
PROGRAM HELLOWORLD
PRINT*, 'HELLO, WORLD!'
END
Шевченко А. В.
Алгол
'BEGIN'
OUTSTRING
(1, '('HELLO, WORLD!')');
'END'
C++
#include <iostream>
int main()
{
cout << "Hello, world!\n";
return(0);
}
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
9
10.
Программирование на ассемблереПрограмма на
ассемблере
Программа в
машинных кодах
MOV R5, R1
MUL #TA.SIZ,R1
INC R0
BNE 4$
TST R3
CMPB (R0)+,#’’
BEQ 2$
125426
045689
145477
052210
145665
024054
145043
Ассемблер
Программирование на ассемблере предполагает знание архитектуры конкретного
процессора (его системы команд, адресации и т. п.). В ассемблере используется
мнемоника для команд, регистров процессора и способов обращения к памяти.
Поскольку ассемблер является языком низкого уровня, то один оператор
программы на ассемблере компилируеся в одну команду процессора.
Макроассемблер предоставляет дополнительные возможности по определению
имён, декларации макроопределений.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
10
11.
Компиляция ассемблерной программыПрограмма на
ассемблере
MOV R5, R1
MUL #TA.SIZ,R1
INC R0
BNE 4$
TST R3
CMPB (R0)+,#’’
BEQ 2$
Ассемблер
Программа в
машинных кодах
1-й проход.
Размещение данных
Данные,
адреса
2-й проход.
Генерация машинного
кода для команд
Команды
Компиляция программы на ассемблере выполняется за два прохода. На первом
собирается информация о переменных (имена и типы), переменные размещаются в
памяти и определяются их адреса. На втором проходе генерируется машинный код
для команд программы, в котором для переменных используются определённые на
первом проходе адреса.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
11
12.
Программирование на языке высокого уровняПрограмма на
языке высокого
уровня
Программа в
машинных кодах
Компилятор
while(x > 0)
{
if(a < b)
{
a = a*a;
}
else
{
a = a/b;
}
}
Интерпретатор
Компилятор
Шевченко А. В.
125426
045689
145477
052210
145665
Промежуточный код
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
Интерпретатор
12
13.
Компиляция программы на языке высокого уровняПрограмма на
языке высокого
уровня
while(x > 0)
{
if(a < b)
{
a = a*a;
}
else
{
a = a/b;
}
}
Компилятор
Программа в
машинных кодах
1-й проход.
Размещение данных,
определение функций
Данные,
адреса
2-й проход.
Генерация машинного
кода для операторов
Команды
Компиляция программы на языке высокого уровня выполняется также за два
прохода. На первом собирается информация о переменных (имена и типы) и
функциях, переменные размещаются в памяти и определяются их адреса. На
втором проходе генерируется машинный код для операторов языка.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
13
14.
Сборка программыПрограмма на
ассемблере
Ассемблер
Объектный
файл
Программа на
языке ВУ
Компилятор
Объектный
файл
Построитель
Программа на
языке ВУ
Компилятор
Объектный
файл
Объектная
библиотека
Модули программ могут разрабатываться на разных языках и
компилироваться в объектные файлы. Эти файлы, а также
объектные библиотеки собираются построителем (редактором
связей, линковщиком) в единый образ задачи с учётом ссылок.
Шевченко А. В.
Образ задачи
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
14
15.
Образ задачи и адресное пространствоАдресное пространство
задачи
Объектный
файл
Образ задачи
Объектный
файл
0x00000004
Построитель
Данные
Объектный
файл
0x00000003
0x00000002
Код
Объектная
библиотека
…
0x00000001
0x00000000
Образ задачи строится построителем в некотором адресном пространстве, таким
образом созаётся модель размещения данных и кода программы в оперативной
памяти. Адресное пространство может быть привязано к физическим адресам
памяти компьютера, на котором будет выполняться программа, либо быть условным,
в этом случае говорят о виртуальном адресном пространстве.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
15
16.
Разметка адресного пространстваПрограмма
int A;
int B = 999;
void f()
{
int C;
Адресное пространство задачи
Динамическая
память (Heap)
Неинициализированные данные
Инициализированные данные
int *D = new int[8];
Код
*D = A+B+C;
Стек
...
}
Шевченко А. В.
0x00800000
Управляющие
структуры
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
0x00400000
0x00000000
16
17.
Файл образа задачиАдресное пространство задачи
Динамическая
память (Heap)
Файл образа задачи (.exe)
0x00800000
Данные
Неинициализированные данные (BSS)
Инициализированные
данные
Код
Код
Управляющие
структуры
0x00400000
Заголовок
Стек
Управляющие
структуры
Шевченко А. В.
0x00000000
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
17
18.
Выполнение задачиФайл образа задачи (.exe)
Данные
Оперативная память
Загрузка
Код
Динамическая
память (Heap)
0x00800000
Неинициализированные данные (BSS)
Управляющие
структуры
Инициализированные
данные
Процессор
Регистр
Регистр
Регистр
Регистр
Точка входа
Код
0x00400000
АЛУ
PC - программный счетчик
SP - указатель стека
Шевченко А. В.
Стек
Управляющие
структуры
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
0x00000000
18
19.
Понятие процессаОперативная память
Процессор
Регистр
Регистр
Регистр
Регистр
АЛУ
PC - программный счетчик
Динамическая
память (Heap)
Неинициализированные данные (BSS)
SP - указатель стека
Инициализированные
данные
Под процессом понимается выполнение
находящейся в оперативной памяти программы и
связанные с этим ресурсы: адресное пространство,
глобальные переменные, регистры процессора,
стек, открытые файлы и др. Состояние процесса (его
контекст) полностью определяется содержимым
регистров процессора. Это позволяет
приостанавливать выполнение процесса и
возобновлять его впоследствии.
Шевченко А. В.
Код
Стек
Управляющие
структуры
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
19
20.
Приостановка и возобновление процессаПроцессор
Регистр
Регистр
Регистр
Регистр
Процессор
АЛУ
Регистр
Регистр
Регистр
Регистр
АЛУ
PC - программный счетчик
PC - программный счетчик
SP - указатель стека
SP - указатель стека
Сохранение контекста
Память
Восстановление контекста
Поскольку состояние выполнения процесса полностью определяется его
контекстом (регистрами процессора), то выполнение процесса может быть
прервано в любой момент времени и возобновлено в другой. Необходимым и
достаточным условием такой приостановки является сохранение контекста в
оперативной памяти (копирование регистров в память) и его восстановление
(копирование памяит в регистры).
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
20
21.
Понятие операционной системыПрикладные программы
Системное ПО
Операционная
система
Дополнительное системное ПО
Пользовательское окружение
Ядро ОС
Программное
обеспечение
Встроенное ПО (firmware)
Аппаратная
платформа
(архитектура)
Система команд
Основное назначение операционной системы (ОС) – управление ресурсами
компьютера (процессором, памятью и периферийными устройствами) и их
предоставление различным прикладным программам. Таким образом, ОС является
связующим звеном между аппаратной частью компьютера и прикладным ПО.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
21
22.
Функции операционной системыОсновные
Загрузка программ и их выполнение
Выполнение запросов программ
Управление процессором
Управление оперативной памятью
Управление периферийными устройствами
Поддержка пользовательского интерфейса
Сохранение информации об ошибках
Дополнительные
Параллельное выполнение задач (многозадачность)
Эффективное распределение ресурсов системы между процессами
Разграничение доступа различных процессов к ресурсам
Исключение взаимного влияния процессов
Взаимодействие между процессами: обмен данными, синхронизация
Защита системы от нежелательных действий
Многопользовательский режим работы и разграничение прав доступа
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
22
23.
Классификация операционных системОперационные системы
Однопользовательские
Однозадачные
Многозадачные
Многопользовательские
Пакетной
обработки
Шевченко А. В.
С разделением
времени
Реального
времени
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
23
24.
История операционных систем1965
Multics
OS/360
1966 DOS/360
1969 Unix
1970 RT-11
1973 RSX-11
1974 MVS
1976 CP/M
1983 Lisa OS
1991 Linux
2012 Windows 8
Macintosh OS
1984 QNX
UniCOS
1992 Solaris
2015 Windows 10
1985
MIPS OS
Windows
1986
AIX
HP-UX
Apple DOS
1978
VMS
IRIX
1987
OS/2
1980 Xenix
1988 OS/400
1981 MS-DOS
NeXTSTEP
1989
SCO UNIX
SunOS
1982
Ultrix
Шевченко А. В.
1990 OSF/1
1993
FreeBSD
Windows NT
2021 Windows 11
Digital UNIX
1995 OpenBSD
Windows 95
1997 Mac OS
1998 Windows 98
2000 Windows 2000
2001 Windows XP
2007 Windows Vista
2008 Android
2009 Windows 7
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
24
25.
Компоненты операционной системыЗагрузчик
Ядро
Системные
библиотеки
Командный
процессор
Драйверы
Системные
утилиты
Загрузчик загружает ядро операционной системы в оперативную память.
Ядро – центральная часть операционной системы, обеспечивающая приложениям
координированный доступ к ресурсам компьютера, таким как процессорное время,
память, устройства ввода и вывода информации. Также обычно ядро предоставляет
сервисы файловой системы и сетевых протоколов.
Драйверы – часть операционной системы, обеспечивающая однотипную работу с
периферийными устройствами.
Командный процессор – интерпретатор языка команд операционной системы для
вызова системных и прикладных программ и управления ими.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
25
26.
Загрузка операционной системыОперативная
память
Поскольку оперативная память является энергозависимой, то после выключения
компьютера информация в ней не сохраняется. Соответственно, возникает задача
загрузки в память ядра операционной системы после включения питания
компьютера. Процесс загрузки – сложный многоступенчатый процесс, в котором
участвуют как аппаратные, так и программные средства.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
26
27.
Загрузка IBM PC-совместимого компьютера1. Включение питания
2. Копирование BIOS/UEFI в ОЗУ и передача ему управления
3. Тестирование оборудования (POST), настройки из ПЗУ
4. Поиск и загрузка в память загрузчика, передача ему управления
5. Загрузка ядра ОС, передача ему управления
После включения персонального компьютера из ПЗУ материнской платы
загружается загрузчик базовой системы ввода-вывода (BIOS), на который передается
выполнение по инструкции безусловного перехода, отображенной по адресу FFFF:0.
BIOS производит чтение 512 байт первого сектора диска в ОЗУ по адресу
0x00007C00, затем прочитанному коду передаётся управление. Этот код читает и
анализирует таблицу разделов жёсткого диска, а затем, в зависимости от вида
загрузчика, либо передаёт управление загрузочному коду активного раздела
жёсткого диска, либо самостоятельно загружает ядро с диска (например, сетевого
или съёмного) в оперативную память и передаёт ему управление.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
27
28.
Ядро операционной системыЯдро
операционной
системы
Управление
памятью
Управление
процессором
Управление
устройствами
ввода-вывода
Ядро – это часть кода операционной системы, которая постоянно находится в
оперативной памяти и обеспечивает управление основными ресурсами компьютера
(процессором, памятью и устройствами ввода-вывода) и их предоставление
прикладным программам. В функции ядра также входит обработка аппаратных
прерываний, взаимодействие с драйверами устройств, поддержка файловой
системы, сетевых протоколов и механизмов межпроцессного взаимодействия.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
28
29.
Программирование в физических адресахПрограмма
...
0
...
MOV #10, R1
...
100
10
Физическая память
...
0
...
10
MOV #10, R1
...
100
200
В первых компьютерах программы составлялись непосредственно в физических
адресах, задаваемых программистами. В данном примере команда MOV пересылает
содержимое ячейки с физическим адресом 10 в регистр процессора R1. Такой способ
программирования означет, что при выполнении программа может находиться
только в той области памяти, которая ей была предопределена заранее.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
29
30.
Статическое перемещение адресовПрограмма
...
0
...
10
MOV #10, R1
...
100
Физическая память
...
0
100
...
MOV #110, R1
110
...
200
Для решения проблемы «жёсткой» привязки программ к памяти в ранних ОС
применялось статическое перемещение адресов. При загрузке программы
выбирался свободный адрес, с которого программа размещалась в памяти (базовый
адрес), и для всех адресов программы добавлялся этот базовый адрес. Программа
как бы «перемещалась» в оперативной памяти.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
30
31.
Динамическое перераспределение памятиПрограмма
...
0
...
10
MOV #10, R1
...
200
Ограничительный регистр
100
Базовый регистр
100
Физическая память
...
0
100
...
110
MOV #10, R1
+
...
200
В суперкомпьютере CDC 6600, было применено динамическое перераспределение
памяти. Для этого в процессоре было выделено два специальных регистра –
базовый и ограничительный. Базовый регистр содержал начальный физический
адрес программы, ограничительный – конечный. При составлении программы
адреса указывались виртуальные, начиная с нулевого адреса. Процессор добавлял к
виртуальному адресу значение базового регистра и получал физический адрес. Если
физический адрес был меньше значения базового регистра или превышал значение
ограничительного регистра, то это означало ошибку адресации в программе.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
31
32.
Страничная организация памятиПрограмма
1
2
2
3
1
4
5
6
7
8
3
Оперативная память
Большинство современных ОС использует технологию страничной организации
памяти (paging). Эта технология заключается в разбиении виртуального адресного
пространства программы на блоки определенного размера – страницы. Физическая
память также разбивается на страницы такого же размера. Программа загружается в
память по страницам, причем страницы программы могут отображаться на любые
страницы памяти. Преобразование виртуальных адресов программы в физические
адреса производится специальным устройством – диспетчером памяти.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
32
33.
Последовательная загрузка страницПрограмма
1
2
1
2
3
2
4
5
6
3
1
7
8
Последовательность загрузки
4
Оперативная память
Точка входа
При запуске программы загружается страница, на которой находится точка
входа (стартовый адрес программы). Если процессор обращается к адресу,
который находится на незагруженной странице, то возникает так называемый
отказ страницы (page fault). В этом случае выполняется аппаратное прерывание,
требуемая страница загружается в память, и после выхода из прерывания
процессор повторно обращается к заданному адресу.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
33
34.
Пример страничной организации памяти для 16-битного адресаПрограмма
Страницы
0
Адреса
0000
1
1000
2
3
2000
3000
3 А 4 С
Физическая память
0
1
3
2
2000
4000
9000
А000
0
2000
1
4000
2
А000
3
9000
Таблица страниц
Шевченко А. В.
9 А 4 С
Адрес
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
А 4 С
Смещение
34
35.
Пример страничной организации памяти для 32-битного адреса31
22 21
Номер
директория
12 11
Номер
страницы
0
Смещение
База
+
Адрес
Директорий
страниц
Таблицы страниц
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
35
36.
Трансляция виртуального адреса с использованием TLBВиртуальный адрес
Биты 12Биты
Биты22-31
12-31 Биты 12-21
21
Физический адрес
Биты 0-11
База
База
Смещение
TLB
Директорий
страниц
Таблица
страниц
TLB (Translation Lookaside Buffer) – специализированный кэш центрального
процессора, используемый для ускорения трансляции адреса виртуальной памяти в
адрес физической памяти. Содержит фиксированный набор записей (от 8 до 4096) и
является ассоциативной памятью. Каждая запись содержит соответствие адреса
страницы виртуальной памяти адресу физической памяти. Если адрес отсутствует в
TLB, процессор обходит таблицы страниц и сохраняет полученный адрес в TLB, что
занимает в 10-60 раз больше времени, чем получение адреса из записи, уже
имеющейся в TLB. Вероятность промаха составляет в среднем от 0,01 % до 1 %.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
36
37.
СвопингС т р а н и ц ы
Оперативная память
Файл выгрузки
При нехватке оперативной памяти для выполнения программ применяется свопинг –
выгрузка страниц из памяти в файл. В соответствии с заданным алгоритмом
«наименее ценные» страницы перемещаются в область свопинга. Обратная подкачка
страниц производится аналогично загрузке – в результате прерывания по отказу
страницы. Негативными моментами, связанными со свопингом, являются
невозможность использования SSD-накопителей (из-за ограниченного числа циклов
перезаписи); серьезное замедление работы системы при сильной фрагментации
файла выгрузки; проблемы безопасности.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
37
38.
Понятие реентерабельного кодаЗадача А
Код
Данные
Задача В
Стек
Код
Данные
Стек
int f(int a, int b)
{
int c = a+b;
int d = c/2;
Данные А
Стек А
Код
Данные В
Оперативная память
Стек В
return(d);
}
Страничная организация памяти позволяет совместное использование загруженных
страниц сразу несколькими программами. Эти страницы могут содержать совместно
используемый код. Такой код должен быть реентерабельным, или повторновходимым. Для написания реентерабельного кода на ассемблере имеется ряд
правил, например использование исключительно регистровой адресации.
Компиляторы с языков высокого уровня также могут генерировать реентерабельный
код, например этим свойством обладают компиляторы с языка С.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
38
39.
Разделяемые библиотекиЗадача А
Код
Данные А
Данные
Стек А
Разделяемая библиотека
Стек
Задача В
Код
Код
Код
Код
Код
Данные
Данные В
Стек
Стек В
Оперативная память
Системные библиотеки часто оформляются как разделяемые библиотеки (shared
library), которые могут загружаться в память отдельно от программы и совместно
использоваться многими программами.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
39
40.
МультипрограммированиеИспользование процессора
Занимает процессор
R
Процесс А
W
Процесс В
Готов
Процесс С
S
Ожидает в/в
Время
Одновременное выполнение нескольких программ (процессов) на одном процессоре в
многозадачных ОС выполняется с применением техники мультипрограммирования.
При этом процессор периодически переключается с выполнения одной программы на
выполнение других. Каждый процесс может находиться в одном из трёх состояний: R
(занимает процессор), S (ожидает завершения ввода-вывода), W (готов к выполнению).
Операционная система выбирает среди готовых к выполнению процессов наиболее
приоритетный и предоставляет ему процессор.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
40
41.
Переключение контекстаПроцессор
Регистр
Регистр
Регистр
Регистр
АЛУ
PC - программный счетчик
SP - указатель стека
Оперативная память
Процесс А
Код
Данные
Стек
Процесс В
Рег.
Код
Данные
Стек
Рег.
При переключении процессов ОС сохраняет контекст выполнения программы –
состояние регистров процессора, включая программный счетчик и указатель стека.
Контекст сохраняется в оперативной памяти в адресном пространстве программы
(область сохранения регистров). Для возобновления выполнения программы
достаточно загрузить в регистры процессора сохраненные значения – и процессор
продолжит работу над приостановленной программой.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
41
42.
Операционные системы с разделением времениПрограмма А
Программа В
Программа С
Ядро
Время
В ОС с разделением времени процессорное время делится на кванты, которые
задаются специальным устройством – системным таймером. По истечении кванта
времени ядро вызывает планировщик задач, который определяет, какая программа
будет выполняться в следующий квант времени. Планирование учитывает
приоритеты программ и время, уже затраченное на их выполнение. Основная
стратегия планировщика – максимальная общая производительность системы.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
42
43.
Операционные системы реального времениПрограмма А
Событие
Программа В
Программа С
Ядро
Время
В ОС реального времени в дополнение к механизмам разделения времени имеются
средства быстрого реагирования на внешние события и вызова приоритетной
программы, которая за приемлемый срок должна обработать это событие. Это
означает, что при наступлении события планировщик задач должен за минимальное
время предоставить необходимые ресурсы соответствующей программе и
обеспечивать их вплоть до завершения обработки события.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
43
44.
Операционные системы жёсткого и мягкого реального времениОС реального
времени
ОС жёсткого
реального времени
ОС мягкого
реального времени
ОС реального времени делятся на системы жёсткого и мягкого реального времени. В
первых гарантируется требуемое время ответа на любое событие, во вторых
гарантируется требуемое время ответа в среднем. Ситуация, в которой обработка
событий происходит за время, большее предусмотренного, в системе жёсткого
реального времени считается фатальной ошибкой. В системе мягкого реального
времени задержка реакции считается восстановимой ошибкой, которая может
привести к увеличению стоимости результатов и снижению производительности, но
не является фатальной.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
44
45.
МногопоточностьПроцесс
Поток 1
Поток 2
Поток 3
Время
Многие современные ОС поддерживают многопоточность – возможность
выполнения процесса параллельно несколькими потоками (thread), что является
эквивалентом многозадачности на уровне одного процесса. Все потоки процесса
имеют общее адресное пространство и общие дескрипторы файлов. Многопоточность
позволяет повысить производительность процесса за счет распараллеливания
процессорных вычислений и операций ввода/вывода.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
45
46.
Управление периферийными устройствамиУстройство
Контроллер
Регистр данных
Регистр управления
Процессор и память
В составе любого периферийного устройства есть электронный блок – контроллер
(или адаптер), который управляет устройством и взаимодействует с аппаратурой
компьютера. Контроллер имеет регистры для записи управляющих команд, данных
или результатов выполнения каких-либо действий.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
46
47.
Передача данных между контроллером и процессоромУстройство
Контроллер
Регистр данных
Регистр управления
1
Порт ввода-вывода
2
3= 1+2
Адрес в памяти
Существует три способа передачи данных между регистрами контроллера и
процессором. При первом способе каждому регистру контроллера назначается
номер порта ввода-вывода, для чтения и записи данных в порт используются
специальные команды процессора. При втором способе регистры контроллеров
устройств отображаются на адресное пространство оперативной памяти
компьютера. Третий способ является комбинацией первых двух.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
47
48.
Прямой доступ к памятиДля ускорения операций ввода-вывода в современных компьютерах
применяется прямой доступ к памяти (Direct Memory Access – DMA). Это
особенно важно для блочных устройств (диски, ленты), где идет передача
больших объемов данных. Чтобы не отвлекать процессор на передачу отдельных
байтов данных, используется специальный контроллер DMA.
Шевченко А. В.
Информационные технологии и компьютерная безопасность. Тема 3. Программное обеспечение компьютерных систем
48
Программирование