Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АОПИ. Старое / АОПИ. Глава 1. Конспекты (31_03_19).rtf
Скачиваний:
67
Добавлен:
10.09.2019
Размер:
630.31 Кб
Скачать

Что рекомендуется знать?

  • Понятия физических и виртуальных адресов.

При написании любой программы автор либо явно указывает, по каким адресам должны размещаться переменные и команды (язык ассемблера), либо присвоение конкретных адресов доверяется системе программирования. Те адреса памяти, которые записаны в программе, принято называть виртуальными адресами. Каждой ячейке памяти компьютера соответствует ее адрес, который должен помещаться на шину адреса при каждом обращении к ячейке. Эти адреса называются физическими.

  • Какая часть системы занимается привязкой физических адресов к виртуальным?

Трансляцию виртуальных адресов в физические выполняет аппаратное обеспечение, называемое блоком управления памятью (MMU).

  • Какая часть системы занимается привязкой переменных к адресам?

Memory Management Unit (MMU) и Контроллер памяти — менеджер памяти как часть аппаратного обеспечения. Virtual Memory Manager (VMM) — менеджер памяти как часть операционной системы.

Поток — это операция, которая является составной частью процесса. Каждый процесс содержит как минимум один поток.

Преимущества потоков: 1. Внутри одного программного модуля (например, exe файла) может размещаться множество потоков, максимальное количество которых в большинстве ОС ограничивается только объемом оперативной памяти. 2. Потоки, принадлежащие одному процессу разделяют его адресное пространство ВАП (виртуальное адресное пространство) [виртуальных адресов], поэтому могут легко обмениваться данными посредством передачи, так называемых, указателей [домашнее задание: узнать, что это]. 3. Процессы не имеют общей памяти (адресного пространства), поэтому ОС должна или целиком копировать данные из области памяти одной задачи в область памяти другой., или предусмотреть специальные механизмы доступа к данным из области памяти другой задачи.

Домашнее задание: прочитать. Pipe

============================ ОТВЕТ НА ВОПРОС ============================

В программировании именованный канал или именованный конвейер — один из методов межпроцессного взаимодействия, расширение понятия конвейера в Unix и подобных ОС. Именованный канал позволяет различным процессам обмениваться данными, даже если программы, выполняющиеся в этих процессах, изначально не были написаны для взаимодействия с другими программами.

======================================================================

Как правило, контекст потока значительно меньше контекста процесса.

Время переключения между потоками значительно меньше времени переключения между процессами.

В связи с этим, параллельно выполняемые задачи стремятся компоновать в виде потоков, работающих в пределах одного процесса.

Недостатки потоков: 1. Как правило, потоки не могут подгружаться динамически, т. е. при добавлении нового потока необходимо ввести соответствующие изменения в исходный код и перекомпилировать приложение. Процессы, в отличие от потоков, подгружаемы, что позволяет динамически изменять функции системы непостредственно в ходе её работы. Кроме того, процессам соответствуют отдельные программные модули, которые могут быть разработаны сторонними специалистами или компаниями. Пример: библиотеки DLL. Тем самым обеспечивается дополнительная гибкость и возможность использования ранее разработанного ПО. 2. Потоки имеют доступ к областям данных друг друга, что может привести к ситуации, когда некорректно работающий поток повреждает данные другого потока. В отличие от этого, процессы защищены от такого рода воздействия, так как попытки записи не в свою память приводят к возникновению исключения.

Свойства задач: 1. Приоритет — целое число, которое присваивается задаче и характеризует её важность по отношению к другим задачам. Используется для определения того, какая из готовых к выполнению задач должна (начинать) выполняться в данный момент. Самый низкий приоритет — 0. Обычно резервируется за «пустой» задачей («задачей холостого хода»)., которая запускается при отсутствии готовых к выполнению задач.

2. Дескриптор (Handle). В дескрипторе прямо или косвенно (через указатели на связанные структуры) содержится информация о состоянии задачи, расположении образа задачи в оперативной памяти и на диске, о приоритете, идентификаторе пользователя, создавшего процесс, о родственных процессах (например, дочерних), о событии осуществления которых ожидает данный процесс и т. д. Дескриптор отдельных задач объединяется в стек (stack), образующий очередь задач. Каждый дескриптор содержит как минимум один указатель на другой дескриптор, соседний с ним в очереди. Такая организация очереди позволяет переупорядочивать, исключать и включать задачи, переводить задачи из одного состояния в другое, т. е. выполнять их диспетчеризацию.

3. Контекст. Содержит: 1) менее оперативную, но более объемную информацию о задаче, которая необходима для возобновления её выполнения с прерванного места — это содержимое регистров процессора; 2) коды ошибок, выполняемых процессором системных вызовов. 3) информацию о всех файлах, открытых в ходе выполнения данной задачи. 4) информацию о завершенных операциях ввода-вывода и других данных, описывающих состояние вычислительной среды в момент прерывания. Контекст, как и дескриптор, доступен только программам ядра, т. е. находится в ВАП (виртуальном адресном пространстве) ОС, но хранится не в области ядра, а непосредственно примыкает к образу задачи и перемещается вместе с ним (если необходимо) из оперативной памяти на диск. ОЗУ (оперативная память), ПЗУ (постоянное запоминающее устройство или диск) Домашнее задание: свопинг, подкачка, файл подкачки. Обычно контекст хранится в управляющем блоке TSB [Translation Storage Buffer — буфер хранения перевода]. Диспетчер задач (механизм ядра) в случае необходимости сохраняет контекст текущей активной (выполняемой) задачи и восстанавливает его при назначении прерванной задачи к выполнению. Такое переключение контекста является основным механизмом ОС при переходе от выполнения одной задачи к выполнению другой.

4. Состояния: — Активная задача (исполнение). Выполняется в текущий момент времени. — Готовая задача. Готова к выполнению и ожидает своей очереди. — Блокированная задача (ожидание). Выполнение задачи приостановлено до возникновения определенного события. a) Освобождение необходимого ресурса (например, получение доступа к файлу). б) Поступление ожидаемого сообщения (например, поступили результаты сортировки). в) Завершение интервала ожидания. 5. Возможность многократного запуска. Возможность запуска нескольких копий одной задачи на одной платформе. При этом для каждой такой копии создается управляющий блок.

В целях экономии памяти может быть предусмотрено совместное использование одного и того же исполняемого кода для всех запущенных копий. Для этого программа должна корректно осуществлять доступ к глобальным ресурсам и поддерживать реентерабельность, т. е. возможность без негативных последствий временно прервать выполнение задачи, а затем возобновить её выполнение.

Каждая задача в течение своего жизненного цикла проходит 4 фазы: 1. Создание. 2. Загрузка. 3. Выполнение. 4. Завершение.

Под созданием понимается формирование информационных структур, описывающих данную задачу, а именно [инф. структур] дескриптора и контекста, и включение дескриптора новой задачи в очередь задач. Эти информационные структуры составляют образ задачи.

Под загрузкой понимается загрузка образа задачи.

Файл — связанный список кластеров.

Систем. прогр. ––––––> ВА (внутренний адрес) –––MMU–––> ФА (физический адрес) MMU — memory management unit (блок управления памятью или устройство управления памятью).

Диспетчеризация. Диспетчер задач выполняет три функции: 1) Определение момента времени для смены выполняемой задачи (программный уровень). 2) Выбор задачи для выполнения из очереди готовых задач (аппаратный уровень). 3) Переключение контекста задачи (аппаратный уровень).

Дисциплины диспетчеризации. — FIFO ("first in, first out" — «первым пришёл — первым ушёл»). Первой выполяется задача, которая первой вошла в очередь и при этом она выполняется до тех пор, пока не завершится или не будет заблокирована (в ожидании определенного ресурса или события). После этого, управление передается следующей в очереди задачи. — Round Robin (циклическая или круговая многозадачность). В системе задается квант времени (100 мс), в течение которого процессор может быть занят непрерывным выполнением одной задачи. Если в течение этого времени выполнение задачи не заканчивается и не останавливается в ожидании ресурса или события, то прерывается с переключением процессора на следующую в очереди готовую задачу. — Приоритетная многозадачность. Как только в очереди появляется готовая задача с более высоким приоритетом по сравнению с активной, выполнение активной задачи прерывается и процессор переключается на задачу с более высоким приоритетом. — Адаптивная (равнодоступная) многозадачность. 1) Приоритет задачи, которая слишком долго не запускается на выполнение, повышается на единицу. 2) Приоритет задачи, которая слишком долго выполняется, уменьшается на единицу.

POSIX — стандарт, поддерживающий FIFO и Round Robin.