Похожие презентации:
Тема 6. Доступ к информации
1.
Санкт-Петербургский государственный электротехническийуниверситет «ЛЭТИ»
Факультет электротехники и автоматики
Информатика
Тема 6. Доступ к информации
Шевченко Алексей Владимирович
Кафедра РАПС
Санкт-Петербург, 2024 г.
2.
Роль программного обеспечения компьютерных системПроцессор
Оперативная
память
В компьютерных системах решение прикладных задач, а также
управление эффективным функционированием процессора,
памяти и периферийных устройств осуществляется с помощью
программного обеспечения различного уровня.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
2
3.
Уровни программного обеспеченияПрикладные программы
Системное
ПО
Дополнительное системное ПО
Пользовательское окружение
ОС
ПО
Ядро ОС
Встроенное ПО (firmware)
Система команд
Аппаратная
платформа
(архитектура)
Микропрограмма
Микроархитектура
Цифровой логический уровень
Физические устройства
В компьютерных системах программное обеспечение делится на «жёстко
зашитое» (к нему относятся микропрограмма процессора и встроенное ПО
периферийных устройств) и «гибкое», загружаемое в оперативную память для
решения различных системных и прикладных задач.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
3
4.
Прикладное программное обеспечениеПрикладное ПО
Интерактивное
Консольные
приложения
Неинтерактивное
Приложения с GUI
Прикладное программное обеспечение – класс программ, предназначенный для
решения каких-либо практических задач, в том числе и предполагающих
непосредственное взаимодействие с пользователями.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
4
5.
Консольные приложенияКонсольные приложения используют терминальный режим работы – построчный
синхронный ввод/вывод. Работа пользователя с консольными приложениями, как
правило, программируется в виде последовательного ввода пользователем
команд и получения ответа от приложения. В современных операционных
системах реализованы эмуляторы терминалов, в которых запускаются и
выполняются консольные приложения. Размер и вид (шрифт, цвет) такого
терминала может гибко настраиваться поьзователем.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
5
6.
Приложения с графическим пользовательским интерфейсомПриложения с графическим пользовательским интерфейсом (GUI) используют,
как правило, асинхронный режим работы. Приложение выводит информацию в
различных зонах окна, пользователь с помощью клавиатуры и мыши может
воздействовать на различные элементы интерфейса. Действия пользователя
вызывают события, которые обрабатываются приложением.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
6
7.
Создание и загрузка программного обеспеченияАппаратное обеспечение
Оперативная память
команды
Процессор
Регистр
Регистр
Программное
обеспечение
…
Регистр
00000004
Регистр
АЛУ
00000003
00000002
00000001
данные
PC - программный счетчик
SP - указатель стека
00000000
В компьютерных системах гибкое программное обеспечение создаётся и
загружается в оперативную память с применением различных технологий и
другого программного обеспечения.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
7
8.
Создание программного обеспечения – программированиеПрограммирование
в машинных кодах
Программирование
на ассемблере
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;
}
Первые программы для компьютеров писались непосредственно в машинных
кодах. Затем появились языки низкого уровня – ассемблеры, ориентированные на
архитектуру определённых процессоров. Следующим шагом было создание языков
программирования высокого уровня, не зависящих от конкретных платформ. Кроме
программирования на языках применяются и другие технологии – графическое
программирование, использование искусственного интеллекта и др.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
8
9.
Парадигмы программированияПрограммирование
Императивное
Процедурное
Структурное
Объектноориентированное
Декларативное
Функциональное
Логическое
В ограничениях
Парадигма программирования – совокупность идей и понятий, определяющих
стиль написания компьютерных программ (подход к программированию).
Современные языки программирования в той или иной мере допускают
использование различных парадигм (мультипарадигменное программирование).
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
9
10.
Понятие языка программированияПрограмма
Память
Имя
Размер
Адрес
A
B
C
1
1
1
020
021
022
Данные
A = 5
B = 7
C = A+B
Переменные
Точка входа
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
Константы
5
7
Команды
Язык программирования
позволяет описывать данные и
действия над ними. Для
данных (переменных)
стремятся использовать имена,
для действий – символические
коды (в ассемблерах) или
знаки (в языках высокого
уровня).
Операторы
=
+
10
11.
Классификация языков программированияЯзыки программирования
Низкого уровня
Высокого уровня
Компиляция
Ассемблеры
Процедурные
Непроцедурные
Алгол, Кобол,
Фортран, ПЛ/1,
С, Паскаль
Интерпретация
Бейсик
Пролог
Языки программирования можно разделить по уровням (высокого/низкого), по
способу описания программы (процедурные/непроцедурные) и по способу
выполнения программы (компиляция/интерпретация).
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
11
12.
Языки программированияЯзык
Год
выпуска
FORTRAN
1957
Первый язык высокого уровня для научных и инженерных расчетов
ALGOL
COBOL
1958
1959
Универсальный алгоритмический язык широкого применения
Разработка бизнес-приложений
LISP
1960
Язык обработки списков для систем искусственного интеллекта
BASIC
1963
Язык для обучения программированию
PL/1
1964
Язык для научных, инженерных и бизнес-ориентированных вычислений
C
1968
Эффективный язык для системного и прикладного программирования
Pascal
1970
Язык общего назначения, часто используется для обучения программированию
Prolog
Ada
Smalltalk
1972
1980
1980
Язык и система логического программирования
Язык программирования для встроенных систем
Объектно-ориентированный язык программирования
C++
1985
Объектно-ориентированный язык программирования, созданный на базе языка С
Eiffel
1986
Objective-C
Java
C#
Python
1986
1995
2000
2008
Шевченко А. В.
Назначение
Объектно-ориентированный язык программирования с алголоподобным
синтаксисом
Объектно-ориентированный язык на базе C и Smalltalk
Объектно-ориентированный язык для виртуальной машины
Объектно-ориентированный язык для платформы .NET
Мультипарадигменный язык программирования
Информатика. Тема 6. Доступ к информации
12
13.
Пример программы на разных языках программированияПаскаль
program HelloWorld(output);
begin
writeln('Hello, world!')
end.
Фортран
PROGRAM HELLOWORLD
PRINT*, 'HELLO, WORLD!'
END
Пайтон
print("Hello world!")
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
Алгол
'BEGIN'
OUTSTRING
(1, '('HELLO, WORLD!')');
'END'
C++
#include <iostream>
int main()
{
cout << "Hello, world!\n";
return(0);
}
13
14.
Рейтинг TIOBE для языков программирования в 2025Согласно рейтингу TIOBE в августе 2025 г. наиболее популярными
языками программирования стали Python (26.1%), C++ (9.2%), C (9.0%),
Java (8.6%), C# (5.6%).
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
14
15.
Сравнение популярных языков программированияГибкость
C++
Java
Python
Эффективность
Применяемые в Python парадигмы упрощают программирование, что делает код
более понятным и одновременно добавляет гибкости языку. С другой стороны,
скорость выполнения кода на Python значительно ниже, чем скорость выполнения
аналогичного кода на C++ и обычно ожидается ниже, чем в Java. Согласно
исследованиям , Python показал себя более гибким, чем C++, а Java оказалась
компромиссным решением между производительностью C++ и гибкостью Python.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
15
16.
Программирование на ассемблереПрограмма на
ассемблере
Программа в
машинных кодах
MOV R5, R1
MUL #TA.SIZ,R1
INC R0
BNE 4$
TST R3
CMPB (R0)+,#’’
BEQ 2$
125426
045689
145477
052210
145665
024054
145043
Ассемблер
Программирование на ассемблере предполагает знание архитектуры конкретного
процессора (его системы команд, адресации и т. п.). В ассемблере используется
мнемоника для команд, регистров процессора и способов обращения к памяти.
Поскольку ассемблер является языком низкого уровня, то один оператор
программы на ассемблере компилируется в одну команду процессора.
Макроассемблер предоставляет дополнительные возможности по определению
имён, декларации макроопределений.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
16
17.
Компиляция ассемблерной программыАссемблер
Программа в
машинных кодах
1-й проход.
Размещение данных
Данные,
адреса
2-й проход.
Генерация машинного
кода для команд
Команды
Программа на
ассемблере
MOV R5, R1
MUL #TA.SIZ,R1
INC R0
BNE 4$
TST R3
CMPB (R0)+,#’’
BEQ 2$
Компиляция программы на ассемблере выполняется за два прохода. На первом
собирается информация о переменных (имена и типы), переменные размещаются в
памяти и определяются их адреса. На втором проходе генерируется машинный код
для команд программы, в котором для переменных используются определённые на
первом проходе адреса.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
17
18.
Программирование на языке высокого уровняПрограмма на
языке высокого
уровня
Программа в
машинных кодах
Компилятор
while(x > 0)
{
if(a < b)
{
a = a*a;
}
else
{
a = a/b;
}
}
Интерпретатор
Компилятор
Шевченко А. В.
125426
045689
145477
052210
145665
Информатика. Тема 6. Доступ к информации
Промежуточный код
Интерпретатор
18
19.
Компиляция программы на языке высокого уровняПрограмма на
языке высокого
уровня
while(x > 0)
{
if(a < b)
{
a = a*a;
}
else
{
a = a/b;
}
}
Компилятор
Программа в
машинных кодах
1-й проход.
Размещение данных,
определение функций
Данные,
адреса
2-й проход.
Генерация машинного
кода для операторов
Команды
Компиляция программы на языке высокого уровня выполняется также за два
прохода. На первом собирается информация о переменных (имена и типы) и
функциях, переменные размещаются в памяти и определяются их адреса. На
втором проходе генерируется машинный код для операторов языка.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
19
20.
Сборка программыПрограмма на
ассемблере
Ассемблер
Объектный
файл
Программа на
языке ВУ
Компилятор
Объектный
файл
Построитель
Программа на
языке ВУ
Компилятор
Объектный
файл
Объектная
библиотека
Модули программ могут разрабатываться на разных языках и
компилироваться в объектные файлы. Эти файлы, а также
объектные библиотеки собираются построителем (редактором
связей, линковщиком) в единый образ задачи с учётом ссылок.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
Образ задачи
20
21.
Образ задачи и адресное пространствоАдресное пространство
задачи
Объектный
файл
Образ задачи
Объектный
файл
…
0x00000004
Построитель
Данные
Объектный
файл
0x00000002
Код
Объектная
библиотека
0x00000003
0x00000001
0x00000000
Образ задачи строится построителем в некотором адресном пространстве, таким
образом создаётся модель размещения данных и кода программы в оперативной
памяти. Адресное пространство может быть привязано к физическим адресам
памяти компьютера, на котором будет выполняться программа, либо быть условным,
в этом случае говорят о виртуальном адресном пространстве.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
21
22.
Разметка адресного пространстваПрограмма
int A;
int B = 999;
void f()
{
int C;
Адресное пространство задачи
Динамическая
память (Heap)
Неинициализированные данные
Инициализированные данные
int *D = new int[8];
Код
*D = A+B+C;
Стек
...
Управляющие
структуры
}
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
0x00800000
0x00400000
0x00000000
22
23.
Файл образа задачиАдресное пространство задачи
Динамическая
память (Heap)
Файл образа задачи (.exe)
0x00800000
Данные
Неинициализированные данные (BSS)
Инициализированные
данные
Код
Код
Управляющие
структуры
0x00400000
Заголовок
Стек
Управляющие
структуры
Шевченко А. В.
0x00000000
Информатика. Тема 6. Доступ к информации
23
24.
Среды программированияРедактор
Дизайнер UI
Управление версиями
Компилятор
Менеджер проекта
Библиотека классов
Построитель
Интегрированная среда разработки (англ. Integrated Development Environment – IDE)
– комплекс программных средств, используемый программистами для разработки
программного обеспечения. Среда разработки включает в себя: текстовый редактор,
транслятор (компилятор и/или интерпретатор), средства автоматизации сборки,
средства для интеграции с системами управления версиями и инструменты для
конструирования графического интерфейса пользователя. Примеры сред: IntelliJ
IDEA, NetBeans, Eclipse, Qt Creator, Geany, Embarcadero RAD Studio, Code::Blocks,
Xcode, Dev-C++, Microsoft Visual Studio.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
24
25.
Среда программирования Microsoft Visual StudioMicrosoft Visual Studio
Visual Basic
Visual C++
Visual C#
JavaScript
Python
Microsoft Visual Studio – система разработки программного обеспечения от
компании Microsoft. Выпускается с 1997 г. В своем составе имеет интегрированную
среду разработки (IDE) и ряд других инструментов. Наряду с платными версиями,
имеется Visual Studio Community Edition – полнофункциональная бесплатная
интегрированная среда разработки для создания приложений под Android, iOS и
Windows, а также веб-приложений и облачных служб.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
25
26.
Среда программирования Embarcadero RAD StudioEmbarcadero RAD Studio
ObjectPascal
C++
Embarcadero RAD Studio – среда быстрой разработки приложений (RAD) от фирмы
Embarcadero Technologies. В составе среды имеются два основных инструмента –
Delphi (язык ObjectPascal) и С++Builder (язык С++). RAD Studio подерживает
кроссплатформенность приложений – один и тот же код может быть cкомпилирован
под Windows, Android, iOS, Mac OS X.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
26
27.
Среда программирования Qt CreatorQt Creator
C
C++
JavaScript
QML
Qt Creator – свободная кроссплатформенная IDE для разработки на С, C++, JavaScript и
QML. Включает в себя графический интерфейс отладчика и визуальные средства
разработки пользовательского интерфейса. Поддерживаются компиляторы GCC,
Clang, MinGW, MSVC, Linux ICC.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
27
28.
Выполнение задачиФайл образа задачи (.exe)
Данные
Оперативная память
Загрузка
Код
Динамическая
память (Heap)
0x00800000
Неинициализированные данные (BSS)
Управляющие
структуры
Инициализированные
данные
Процессор
Регистр
Регистр
Регистр
Регистр
Точка входа
Код
0x00400000
АЛУ
PC - программный счетчик
SP - указатель стека
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
Стек
Управляющие
структуры
0x00000000
28
29.
Понятие процессаОперативная память
Процессор
Регистр
Регистр
Регистр
Регистр
АЛУ
PC - программный счетчик
Динамическая
память (Heap)
Неинициализированные данные (BSS)
SP - указатель стека
Инициализированные
данные
Под процессом понимается выполнение
находящейся в оперативной памяти программы и
связанные с этим ресурсы: адресное пространство,
глобальные переменные, регистры процессора,
стек, открытые файлы и др. Состояние процесса (его
контекст) полностью определяется содержимым
регистров процессора. Это позволяет
приостанавливать выполнение процесса и
возобновлять его впоследствии.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
Код
Стек
Управляющие
структуры
29
30.
Приостановка и возобновление процессаПроцессор
Регистр
Регистр
Регистр
Регистр
Процессор
АЛУ
Регистр
Регистр
Регистр
Регистр
АЛУ
PC - программный счетчик
PC - программный счетчик
SP - указатель стека
SP - указатель стека
Сохранение контекста
Память
Восстановление контекста
Поскольку состояние выполнения процесса полностью определяется его
контекстом (регистрами процессора), то выполнение процесса может быть
прервано в любой момент времени и возобновлено в другой. Необходимым и
достаточным условием такой приостановки является сохранение контекста в
оперативной памяти (копирование регистров в память) и его восстановление
(копирование памяти в регистры).
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
30
31.
Понятие операционной системыПрикладные программы
Системное ПО
Операционная
система
Дополнительное системное ПО
Пользовательское окружение
Ядро ОС
Программное
обеспечение
Встроенное ПО (firmware)
Аппаратная
платформа
(архитектура)
Система команд
Основное назначение операционной системы (ОС) – управление ресурсами
компьютера (процессором, памятью и периферийными устройствами) и их
предоставление различным прикладным программам. Таким образом, ОС является
связующим звеном между аппаратной частью компьютера и прикладным ПО.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
31
32.
Функции операционной системыОсновные
Загрузка программ и их выполнение
Выполнение запросов программ
Управление процессором
Управление оперативной памятью
Управление периферийными устройствами
Поддержка пользовательского интерфейса
Сохранение информации об ошибках
Дополнительные
Параллельное выполнение задач (многозадачность)
Эффективное распределение ресурсов системы между процессами
Разграничение доступа различных процессов к ресурсам
Исключение взаимного влияния процессов
Взаимодействие между процессами: обмен данными, синхронизация
Защита системы от нежелательных действий
Многопользовательский режим работы и разграничение прав доступа
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
32
33.
Классификация операционных системОперационные системы
Однопользовательские
Однозадачные
Многозадачные
Многопользовательские
Пакетной
обработки
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
С разделением
времени
Реального
времени
33
34.
История операционных систем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
Информатика. Тема 6. Доступ к информации
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
34
35.
Рынок операционных систем по итогам 2024 г.По итогам 2024 г. наиболее популярными операционными системами на мировом
рынке были Windows (73%), OS X (14%) и Linux (4%).
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
35
36.
Компоненты операционной системыЗагрузчик
Ядро
Системные
библиотеки
Командный
процессор
Драйверы
Системные
утилиты
Загрузчик загружает ядро операционной системы в оперативную память.
Ядро – центральная часть операционной системы, обеспечивающая приложениям
координированный доступ к ресурсам компьютера, таким как процессорное время,
память, устройства ввода и вывода информации. Также обычно ядро предоставляет
сервисы файловой системы и сетевых протоколов.
Драйверы – часть операционной системы, обеспечивающая однотипную работу с
периферийными устройствами.
Командный процессор – интерпретатор языка команд операционной системы для
вызова системных и прикладных программ и управления ими.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
36
37.
Загрузка операционной системыОперативная
память
Поскольку оперативная память является энергозависимой, то после выключения
компьютера информация в ней не сохраняется. Соответственно, возникает задача
загрузки в память ядра операционной системы после включения питания
компьютера. Процесс загрузки – сложный многоступенчатый процесс, в котором
участвуют как аппаратные, так и программные средства.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
37
38.
Загрузка IBM PC-совместимого компьютера1. Включение питания
2. Копирование BIOS/UEFI в ОЗУ и передача ему управления
3. Тестирование оборудования (POST), настройки из ПЗУ
4. Поиск и загрузка в память загрузчика, передача ему управления
5. Загрузка ядра ОС, передача ему управления
После включения персонального компьютера из ПЗУ материнской платы
загружается загрузчик базовой системы ввода-вывода (BIOS), на который передается
выполнение по инструкции безусловного перехода, отображенной по адресу FFFF:0.
BIOS производит чтение 512 байт первого сектора диска в ОЗУ по адресу
0x00007C00, затем прочитанному коду передаётся управление. Этот код читает и
анализирует таблицу разделов жёсткого диска, а затем, в зависимости от вида
загрузчика, либо передаёт управление загрузочному коду активного раздела
жёсткого диска, либо самостоятельно загружает ядро с диска (например, сетевого
или съёмного) в оперативную память и передаёт ему управление.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
38
39.
Спящий режим и гибернацияСпящий режим
Гибернация
Спящий режим – энергосберегающий режим, при котором отключается
большинство устройств компьютера. Питание сохраняется для материнской платы и
оперативной памяти. Сбой питания в этом режиме может привести к потере данных.
Гибернация – энергосберегающий режим операционной системы компьютера, при
котором содержимое оперативной памяти сохраняется на энергонезависимое
устройство хранения данных перед выключением питания. В режиме гибернации
подача электроэнергии полностью прекращается. После включения питания
компьютера содержимое памяти восстанавливается.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
39
40.
Ядро операционной системыЯдро
операционной
системы
Управление
памятью
Управление
процессором
Управление
устройствами
ввода-вывода
Ядро – это часть кода операционной системы, которая постоянно находится в
оперативной памяти и обеспечивает управление основными ресурсами компьютера
(процессором, памятью и устройствами ввода-вывода) и их предоставление
прикладным программам. В функции ядра также входит обработка аппаратных
прерываний, взаимодействие с драйверами устройств, поддержка файловой
системы, сетевых протоколов и механизмов межпроцессного взаимодействия.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
40
41.
Программирование в физических адресахПрограмма
...
0
...
MOV #10, R1
...
100
10
Физическая память
...
0
...
MOV #10, R1
...
10
100
200
В первых компьютерах программы составлялись непосредственно в физических
адресах, задаваемых программистами. В данном примере команда MOV пересылает
содержимое ячейки с физическим адресом 10 в регистр процессора R1. Такой способ
программирования означает, что при выполнении программа может находиться
только в той области памяти, которая ей была предопределена заранее.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
41
42.
Статическое перемещение адресовПрограмма
...
0
...
MOV #10, R1
...
100
10
Физическая память
...
100
0
...
110
MOV #110, R1
...
200
Для решения проблемы «жёсткой» привязки программ к памяти в ранних ОС
применялось статическое перемещение адресов. При загрузке программы
выбирался свободный адрес, с которого программа размещалась в памяти (базовый
адрес), и для всех адресов программы добавлялся этот базовый адрес. Программа
как бы «перемещалась» в оперативной памяти.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
42
43.
Динамическое перераспределение памятиПрограмма
...
0
...
MOV #10, R1
...
200
Ограничительный регистр
100
Базовый регистр
100
10
Физическая память
...
100
0
...
110
+
MOV #10, R1
...
200
В суперкомпьютере CDC 6600, было применено динамическое перераспределение
памяти. Для этого в процессоре было выделено два специальных регистра –
базовый и ограничительный. Базовый регистр содержал начальный физический
адрес программы, ограничительный – конечный. При составлении программы
адреса указывались виртуальные, начиная с нулевого адреса. Процессор добавлял к
виртуальному адресу значение базового регистра и получал физический адрес. Если
физический адрес был меньше значения базового регистра или превышал значение
ограничительного регистра, то это означало ошибку адресации в программе.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
43
44.
Страничная организация памятиПрограмма
1
2
2
3
1
4
5
6
7
8
3
Оперативная память
Большинство современных ОС использует технологию страничной организации
памяти (paging). Эта технология заключается в разбиении виртуального адресного
пространства программы на блоки определенного размера – страницы. Физическая
память также разбивается на страницы такого же размера. Программа загружается в
память по страницам, причем страницы программы могут отображаться на любые
страницы памяти. Преобразование виртуальных адресов программы в физические
адреса производится специальным устройством – диспетчером памяти.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
44
45.
Последовательная загрузка страницПрограмма
1
2
1
2
3
2
4
5
6
3
1
7
8
Последовательность загрузки
4
Оперативная память
Точка входа
При запуске программы загружается страница, на которой находится точка
входа (стартовый адрес программы). Если процессор обращается к адресу,
который находится на незагруженной странице, то возникает так называемый
отказ страницы (page fault). В этом случае выполняется аппаратное прерывание,
требуемая страница загружается в память, и после выхода из прерывания
процессор повторно обращается к заданному адресу.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
45
46.
Пример страничной организации памяти для 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
Таблица страниц
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
9 А 4 С
Адрес
А 4 С
Смещение
46
47.
Пример страничной организации памяти для 32-битного адреса31
22 21
Номер
директория
12 11
Номер
страницы
0
Смещение
База
+
Адрес
Директорий
страниц
Таблицы страниц
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
47
48.
Трансляция виртуального адреса с использованием 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 %.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
48
49.
СвопингС т р а н и ц ы
Оперативная память
Файл выгрузки
При нехватке оперативной памяти для выполнения программ применяется свопинг –
выгрузка страниц из памяти в файл. В соответствии с заданным алгоритмом
«наименее ценные» страницы перемещаются в область свопинга. Обратная подкачка
страниц производится аналогично загрузке – в результате прерывания по отказу
страницы. Негативными моментами, связанными со свопингом, являются
невозможность использования SSD-накопителей (из-за ограниченного числа циклов
перезаписи); серьезное замедление работы системы при сильной фрагментации
файла выгрузки; проблемы безопасности.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
49
50.
Понятие реентерабельного кодаЗадача А
Код
Данные
Задача В
Стек
Код
Данные
Стек
int f(int a, int b)
{
int c = a+b;
int d = c/2;
Данные А
Стек А
Код
Данные В
Оперативная память
Стек В
return(d);
}
Страничная организация памяти позволяет совместное использование загруженных
страниц сразу несколькими программами. Эти страницы могут содержать совместно
используемый код. Такой код должен быть реентерабельным, или повторновходимым. Для написания реентерабельного кода на ассемблере имеется ряд
правил, например использование исключительно регистровой адресации.
Компиляторы с языков высокого уровня также могут генерировать реентерабельный
код, например этим свойством обладают компиляторы с языка С.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
50
51.
Разделяемые библиотекиЗадача А
Код
Данные А
Данные
Стек А
Разделяемая библиотека
Стек
Задача В
Код
Код
Код
Код
Код
Данные
Данные В
Стек
Стек В
Оперативная память
Системные библиотеки часто оформляются как разделяемые библиотеки (shared
library), которые могут загружаться в память отдельно от программы и совместно
использоваться многими программами.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
51
52.
МультипрограммированиеИспользование процессора
Занимает процессор
R
Процесс А
W
Процесс В
Готов
Процесс С
S
Ожидает в/в
Время
Одновременное выполнение нескольких программ (процессов) на одном процессоре в
многозадачных ОС выполняется с применением техники мультипрограммирования.
При этом процессор периодически переключается с выполнения одной программы на
выполнение других. Каждый процесс может находиться в одном из трёх состояний: R
(занимает процессор), S (ожидает завершения ввода-вывода), W (готов к выполнению).
Операционная система выбирает среди готовых к выполнению процессов наиболее
приоритетный и предоставляет ему процессор.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
52
53.
Переключение контекстаПроцессор
Регистр
Регистр
Регистр
Регистр
АЛУ
PC - программный счетчик
SP - указатель стека
Оперативная память
Процесс А
Код
Данные
Стек
Процесс В
Рег.
Код
Данные
Стек
Рег.
При переключении процессов ОС сохраняет контекст выполнения программы –
состояние регистров процессора, включая программный счетчик и указатель стека.
Контекст сохраняется в оперативной памяти в адресном пространстве программы
(область сохранения регистров). Для возобновления выполнения программы
достаточно загрузить в регистры процессора сохраненные значения – и процессор
продолжит работу над приостановленной программой.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
53
54.
Операционные системы с разделением времениПрограмма А
Программа В
Программа С
Ядро
Время
В ОС с разделением времени процессорное время делится на кванты, которые
задаются специальным устройством – системным таймером. По истечении кванта
времени ядро вызывает планировщик задач, который определяет, какая программа
будет выполняться в следующий квант времени. Планирование учитывает
приоритеты программ и время, уже затраченное на их выполнение. Основная
стратегия планировщика – максимальная общая производительность системы.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
54
55.
Операционные системы реального времениПрограмма А
Событие
Программа В
Программа С
Ядро
Время
В ОС реального времени в дополнение к механизмам разделения времени имеются
средства быстрого реагирования на внешние события и вызова приоритетной
программы, которая за приемлемый срок должна обработать это событие. Это
означает, что при наступлении события планировщик задач должен за минимальное
время предоставить необходимые ресурсы соответствующей программе и
обеспечивать их вплоть до завершения обработки события.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
55
56.
Операционные системы жёсткого и мягкого реального времениОС реального
времени
ОС жёсткого
реального времени
ОС мягкого
реального времени
ОС реального времени делятся на системы жёсткого и мягкого реального времени. В
первых гарантируется требуемое время ответа на любое событие, во вторых
гарантируется требуемое время ответа в среднем. Ситуация, в которой обработка
событий происходит за время, большее предусмотренного, в системе жёсткого
реального времени считается фатальной ошибкой. В системе мягкого реального
времени задержка реакции считается восстановимой ошибкой, которая может
привести к увеличению стоимости результатов и снижению производительности, но
не является фатальной.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
56
57.
МногопоточностьПроцесс
Поток 1
Поток 2
Поток 3
Время
Многие современные ОС поддерживают многопоточность – возможность
выполнения процесса параллельно несколькими потоками (thread), что является
эквивалентом многозадачности на уровне одного процесса. Все потоки процесса
имеют общее адресное пространство и общие дескрипторы файлов. Многопоточность
позволяет повысить производительность процесса за счет распараллеливания
процессорных вычислений и операций ввода/вывода.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
57
58.
Информация о процессах и потоках в WindowsШевченко А. В.
Информатика. Тема 6. Доступ к информации
58
59.
Управление периферийными устройствамиУстройство
Контроллер
Регистр данных
Регистр управления
Вектор прерывания
Процессор и память
В составе любого периферийного устройства есть электронный блок – контроллер
(или адаптер), который управляет устройством и взаимодействует с аппаратурой
компьютера. Контроллер имеет регистры для записи управляющих команд, данных
или результатов выполнения каких-либо действий.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
59
60.
Передача данных между контроллером и процессоромУстройство
Контроллер
Регистр данных
Регистр управления
1
Порт ввода-вывода
2
3= 1+2
Адрес в памяти
Существует три способа передачи данных между регистрами контроллера и
процессором. При первом способе каждому регистру контроллера назначается
номер порта ввода-вывода, для чтения и записи данных в порт используются
специальные команды процессора. При втором способе регистры контроллеров
устройств отображаются на адресное пространство оперативной памяти
компьютера. Третий способ является комбинацией первых двух.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
60
61.
Прямой доступ к памятиДля ускорения операций ввода-вывода в современных компьютерах
применяется прямой доступ к памяти (Direct Memory Access – DMA). Это
особенно важно для блочных устройств (диски, ленты), где идет передача
больших объемов данных. Чтобы не отвлекать процессор на передачу отдельных
байтов данных, используется специальный контроллер DMA.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
61
62.
Управление периферийными устройствами в WindowsКонтроллер DMA
Порты ввода/выводы
Вектора прерываний
Адреса регистров
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
62
63.
ВиртуализацияВиртуализация – это технология создания виртуальных версий компьютеров,
называемых виртуальными машинами. На одном физическом сервере может быть
запущено несколько изолированных виртуальных машин, со своими ресурсами и
операционными системами, которые работают как независимые системы.
Виртуализация позволяет эффективнее использовать ресурсы компьютера, управлять
IT-инфраструктурой, масштабировать её. Некоторые известные виртуальные машины:
KVM, Hyper-V, OpenVZ, VM/CMS, Vmware ESX, Xen.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
63
64.
ГипервизорыГипервизор – это программное обеспечение, которое абстрагирует и изолирует
оборудование и операционные системы и создает виртуальные машины с
собственной памятью, дисками и процессорами. Гипервизор управляет работой
виртуальных машин и предоставляет им доступ к физическим ресурсам. Имеется два
типа гипервизоров. Гипервизоры первого типа полностью заменяют собой
операционную систему. Гипервизоры второго типа работают поверх существующей
операционной системы.
Шевченко А. В.
Информатика. Тема 6. Доступ к информации
64
Программирование