ОСиС. Структура ядра Linux 2
Скачать 68.57 Kb.
|
Содержание:Тема: «Структура ядра Linux» 2 Тема: «Потоковый редактор Sed» 5 Тема: «Ссылка» 6 Тема: «Тип адресов» 7 Тема: «Резервное копирование» 8 Тема: «Топология резервного копирования» 11 Тема: «Процессы. Модель процессов. Иерархия процессов» 12 Тема: «Процессы» 19 Тема: «Виды памяти» 20 Тема: «Гарантированное планирование» 22 Тема: «Приоритетное планирование» 23 Тема: «Многоуровневые очереди с обратной связью» 24 Тема: «Типы адресов» 27 Тема: «Синхронизация потоков. Гонки потоков. Семафоры.» 30 Тема: «Структура ядра Linux»Ядро – это центральная часть ОС, которая обеспечивает приложения координированным доступом к ресурсам компьютера. Также ядро предоставляет сервисы файловой системе и сетевым протоколам. Ядро представляет собой низкий уровень абстракции для доступа к системным ресурсам за счёт использования механизмов меж процессного взаимодействия между приложениями и системными вызовами. Монолитное ядро – представляет собой набор абстракции оборудования. Все части монолитного ядра работают в едином адресном пространстве. Это такая схема операционной системы, при которой все компоненты её ядра являются единым целым используют общие структуры данных и взаимодействую с собой через процедуры. Это самая первая организация ОС. Большинство Linux систем построено на монолитном ядре. Достоинства: Высокая скорость работы. Упрощённая разработка модулей. Недостатки: Когда выпускается новое оборудование, для того чтобы это оборудование заработало, необходимо было перекомпилировать ядро. Такая схема работает в одном адресном пространстве, а соответственно сбой в одном из компонентов нарушает работоспособность всей системы. Модульное ядро – современная, усовершенствованная модификация монолитного ядра ОС. Модульное ядро, как правило, не требует полной перекомпиляции при изменении состава оборудования, вместо этого модульные ядра предоставляют тот или иной механизм подгрузки модулей ядра, поддерживающих требуемое аппаратное обеспечение. При этом, подгрузка модулей может быть как динамическая, так и статическая. Микроядро – представляет собой элементарные функции управления процессами и минимальный набор абстракции для работы с оборудованием. Большая часть работы осуществляется с помощью специальных пользовательских процессов, которые называются сервисами. Основное назначение микро ядерной структуры, является размещение почти всех драйверов и сервисов в процессор, иногда с явной невозможностью загрузки любых модулей, расширений в микроядро. Достоинства: Существенно упрощает процесс отладки микроядра. Устойчивость к сбою оборудования, ошибкам компонентов системы. За счёт высокой модульности ядра. Такой подход позволяет загружать\выгружать драйвера без перезагрузки. Недостатки: Передача данных между процессами требует накладных расходов. Классические микроядра представляют собой небольшой набор системных вызовов, которые основаны на сервисах операционной системы. Сервисные процессы активно используются при решении задач связанных с запуском программ по расписанию, ведению журналов, централизованной проверки пароля, хранение паролей в специально ограниченной области памяти. Экзо ядро – ядро ОС, которое представляет лишь функции для взаимодействия между процессами, в том числе безопасное выделение и освобождение ресурсов. Обеспечивает возможность доступа к устройствам, на уровне контроллеров для эффективного решения задач, которые не свойственны ОС. Нано ядро – архитектура ядра ОС, в рамках которой крайне упрощённо ядро выполняет только одну задачу - обработку прерываний, выставленных установленным оборудованием. Гибридное ядро – это модифицированное микроядро, позволяющее для ускорения работы запускать несущественные части в пространстве ядра. Оно призвано объединить преимущества монолитного ядра и микроядра. Как правило, каждое микроядро предоставляет доступ к исполнительным процессам соответствующего приложения межпроцессорного взаимодействия. Основные функции ядра: Диспетчеризация. Обработка прерываний. Операция ввода/вывода. Организация взаимодействия между процессами. Переключение процессов из состояния в состояние. Поддержка механизма возврата, вызова при обращении к процедурам. Поддержка определённых функции по ведению учёта работы. Поддержка файловой системы. Приостановка и активизация процессов. Распределение или перераспределение памяти. Синхронизация процессов. Создание и уничтожение процессов. Тема: «Потоковый редактор Sed» Locate – поиск файла где бы он не был. Find – также для поиска но путь длинный. Тема: «Ссылка»Ln имя_файла ссылка В некоторых системах заранее фиксируется объём для самой ОС, доступ к этой области для приложений закрыт. Другой способ, применяемый … которые основаны на управлении памятью через запросы. Защита памяти ОС состоит в том, чтобы не позволить выполняемому процессу записывать или читать данные из памяти, назначенной другому процессу, эта функция реализуется программными модулями ОС во взаимодействии с аппаратными средствами. Тема: «Тип адресов» Символьные имена - присваиваются при написании программ. Виртуальные адреса – их вырабатывает транслятор и присваивает виртуальные адрес символьным именам. Обычно программа имеет нулевой отсчёт. Физический адрес – соответствует номерам ячеек оперативной памяти и указывает, где в действительности расположены или будут расположены переменные и команды. Совокупность виртуальных адресов создаёт виртуальное адресное пространство. Тема: «Резервное копирование»Система резервного копирования основана на стратегии сохранения и восстановления информации. Резервное копирование происходит от английского слова backup и в процессе резервного копирования ставятся 2 основные задачи: Восстановление данных Доступ к информации за прошлые периоды Классическим примером резервного копирования является образ патриции сервера. Есть несколько факторов, по которым отличают резервную копия для быстрого восстановления от архива: Быстрота доступа к данным. Скорость доступа к длительно хранящемуся архиву в большинстве случаем не критично. Обычно необходимость поднять данные возникает в момент сверки документов. Возврата к предыдущем версиям. Аварийное восстановление подразумевает восстановление необходимых данных и как следствие работоспособность сервиса. Эта процедура должна занимать кратчайшие сроки, а, следовательно, скорость доступа к резервной копии является важным показателем. По периоду хранения данных. У архивных копии он достаточно длительный, в некоторых случаях регламентируется не только требования бизнеса, но и законодательства. У аварийных копии он сравнительно не большой. Обычно создают одну или две резервные копии с максимальным интервалом времени в зависимости от потребности предприятия. Состав копируемой информации. В архивной копии должны содержаться только пользовательские и бизнес-данные за указанный период. В копии для аварийного восстановления помимо этих данных обязательно должны быть образы системы. Существует несколько видов резервного копирования: Дифференциальное копирование. Отличается от инкрементного тем, что копируются данные с последнего момента выполнения Full backup и эти данные помещаются в архив нарастающих итогов. Это достигается тем, что при использовании первого метода, архивный гит не сбрасывается. В силу т ого, что каждая новая копия созданная таким образом содержит данные из предыдущей это более удобно для полного восстановления данных на момент аварии. В данном случае нужно будет только 2 копии: полное копирование и дифференциальное. Инкрементное копирование. В отличие от полного копирования в этом случае копируются не все данные (файлы, сектора, разделы), а только те, что были изменены с момента последнего копирования. Для выяснения времени копирования применяются различные методы. Устанавливаются атрибуты файла, указывающие, когда файл был изменён и сбрасываются даты изменения файла программы резервного копирования. Другой способ ведения журнала: создание резервных копии с перечислением состава резервного копирования. Ценность инкрементного копирования резко уменьшается, если не проводить периодически полное резервное копирование. При восстановлении системы необходимо произвести восстановление из последних копии созданных с помощью Full Backup, а потом поочерёдно накатить данные из инкрементных копии в порядке их создания. Поэтапное восстановление возвращает и нужные удалённые файлы за этот период, поэтому после восстановления с использование информации по инкрементному восстановлению, пользователь должен будет самостоятельно просмотреть все восстановленные файлы и принять решение по удалению ранее удалённых файлов. Полное резервное копирование (Full backup). Является главным и основополагающем методом создания резервных копий, при котором выбранный массив копируется целиком. Это наиболее полный и надёжный вид резервного копирования, но при этом является самым затратным. В случае необходимости сохранить несколько копий данный общий массив будет увеличиваться пропорционально количеству создаваемых копий. Для предотвращения такого нерационального использования применяются алгоритмы сжатия в сочетании с другими методами резервного копирования, а именно: дифференциальным и инкрементным. Таким образом, такой способ резервного копирования позволяет нам при восстановлении затратить значительно меньше времени. Также этот метод избавлен от инкрементного, когда при полном копировании в процессе восстановления буду восстановлены и старые файлы. Однако такое копирования проигрывает инкрементному в сохранении дискового пространства. Тема: «Топология резервного копирования» Децентрализованная схема. Ядром данной схемы является общий сетевой ресурс. Для функционирования такой схемы необходим набор программ для резервного копирования, которые время от времени выгружает информацию с сервера и рабочих станции на этот ресурс. Данные программы установлены на каждом сервере и работают независимо друг от друга. Плюсом такой системы является простота её реализации и дешевизна. Минусом является неповоротливость самой системы, так как программы установлены независимо друг от друга, поэтому такая схема применяется только в небольших сетях. Централизованное резервное копирование. Здесь используется иерархическая модель, работающая по принципу клиент-сервера. В классическом варианте на каждый компьютер устанавливается специальные программы-агенты, а на сервер – серверный модуль программного пакета. Эти системы имеют специализированную консоль управления, и схема выглядит следующим образом: с консоли создаётся задание для копирования или восстановления, а сервер даёт агентам необходимые инструкции для выполнения указанных операции. Такая схема позволяет: При необходимости перенаправить информацию о создании резервной копии на любой пользовательский компьютер. Централизованным образом устанавливать время начала копирования для всех пользовательских машин. Ресурс копирования выбирается с одного места. Тема: «Процессы. Модель процессов. Иерархия процессов»Процессом называется программа в момент её выполнения. Модель процессов – всё функционирующее на компьютере программное обеспечение, включая ОС и организованное в виде набора последовательных процессов. Процессом является выполняемая программа, включая текущее значение счётчиков команд, регистров и переменных. С позиции данной абстракции у каждого процесса есть собственный виртуальный ЦП. Переключение между процессами и называется многозадачностью или мультипрограммированием. Процесс – активность некоторого рода, то есть существует программа, входные и выходные данные и состояние. Одномоментно процесс может находиться только в одном состоянии. Системе необходимо удостовериться в наличии необходимых процессов. Созданию процесса способствует 4 основных события: Выполнение изданного системного запроса на создание процесса. Инициализация Инициализация пакетного задания. Создание пользователем запроса на инициализацию процесса. Обычно при загрузке ОС создаются несколько процессов, некоторые из них являются высокоприоритетными, то есть обеспечивают взаимодействие с пользователем и выполняющим процессом по созданию связи с ядром. Все остальные процессы являются фоновыми они никак не связаны с пользователем и выполняют особые функции. Процессы могут создаваться не только в момент загрузки системы, но новый процесс может быть создан по просьбе текущего процесса. В Linux система существует только 1 системный запрос, направленный на создание нового процесса. Этот процесс направлен на создание дубликата вызываемого процесса. После выполнения запроса двум процессам: родительскому и дочернему соответствует одинаковое область памяти строки окружения и одни и те же открытые файлы. Смысл такой структуры организации заключается в том, что дочерний процесс успевает обработать описание файла после процесса fork (), чтобы выполнить перенаправление стандартных устройств ввода/вывода и не допустить возникновение состояния ошибки, когда к одному и тому же ресурсу будут обращаться 2 процесса: fork () и дочерний. В Linux и Windows системах после создания нового процесса родительский и дочерние процессы имеют собственные различные адресные пространства. В Linux системах адресное пространство дочернего процесса является копией родительского, а сами адресные пространства – различны и перезаписываемая память совместно не используется. В Windows начальное адресное пространство родительского и дочернего процессов отличаются с самого начала. Завершение процесса. После того как процесс создан он начинает выполнять свою работу и завершается по одному из следующих событий: Выход по неисправимой ошибке. Выход по ошибке. Обычный выход. Уничтожение другим процессом, непреднамеренно. В Linux системах процесс образует группу процессов, сигнал, посылаемый пользователем будет доставлен всем членам группы. Каждый из процессов может перехватывать сигнал игнорировать его или выполнить какое-либо действие, предусмотренное по умолчанию. В Windows системе не существует иерархии процессов, все процессы равноправны единственное проявление иерархии процессов – создание процесса, в котором родительский процесс получает специальный маркер позволяющий контролировать дочерний процесс, этот маркер можно передать другому процессу, но в этом случае происходит нарушение иерархии. Состояние процессов. Хотя процессы являются независимыми со своим внутренним счётчиком команд, всегда есть необходимость взаимодействия с другими процессами. В связи с этим, каждый дискретный момент процесс занимает одно из следующих состояний: Выполнение Готовность Завершение Ожидание Создание Для корректной работы ОС и запущенных приложений, необходимо выполнять планирование процессов. Уровни планирования. Существует 2 вида планирования в вычислительных системах: Планирование заданий Планирование использования ЦП Планирование заданий выступает в качестве долгосрочного планирования процессов, отвечает за порождение новых процессов в системе, позволяет определить степень мультипрограммирования, если степень мультипрограммирования не соответствует функциональным возможностям системы, то можно предпринять действия по корректировке количества запущенных процессов, если система имеет постоянную степень мультипрограммирования, то есть среднее количество процессов в ПК не меняется, то новые процесс появляются только после завершения ранее загруженных, поэтому долгосрочное планирование осуществляется крайне редко. В некоторых ОС долгосрочное планирование сведено к минимуму или вообще отсутствует. Основной метод – использование краткосрочного планирования процессов. Краткосрочное планирование осуществляется не реже одного раза в 100 миллисекунд. Выбор нового процесса оказывает влияние на функционирование системы до наступления нового аналогичного процесса, то есть в течение короткого промежутка, а, следовательно, требует от ОС или пользователя более подробный истории вызова событий. Критерии планирования и требования к алгоритму. Выбор конкретного алгоритма определяется классом задач, решаемых вычислительной техникой. Для этого необходимо, чтобы были соблюдены следующие критерии: Сократить полное время выполнения, то есть обеспечить минимальное время между стартом процесса и постановкой задания в очередь для загрузки и её завершения. Сокращение времени ожидания. Сокращение времени отклика. Справедливость – гарантия… использования времени процессора и не допустить возникновения ситуации, когда процесс одного пользователя занимает процессор, а другой процесс фактически не приступил к исполнению. Эффективность – постараться занять процессор на 100% рабочего времени. Не позволяя ему простаивать в ожидании. Независимо от поставленной цели планирования необходимо, чтобы алгоритмы обладали следующими свойствами: Были предсказуемы. Чтобы одни и те же процессы выполнялись одно и то же время. Имели минимальные накладные расходы. Масштабируемость. Поддержание работоспособности при увеличении нагрузки. Равномерно загружали ресурсы. Параметры планирования. Все параметры планирования подразделяются на 2 группы: статическая и динамическая. Статические параметры не изменяются в ходе функционирования вычислительной системы. Динамические подвержены постоянным изменениям. Алгоритмы досрочного завершения или загрузки процессов позволяют распределить ограниченное количество ресурсов и дать ответ о возможности запуска того или иного приложения или задания на имеющихся аппаратных ресурсах системы. Алгоритмы долгосрочного планирования, используя в своей работе статические и динамические параметры ВЧ, позволяют предотвратить запуск трудоёмких процессов в системах, обладающих слабыми вычислительными возможностями. Альтернативой является применение алгоритма краткосрочного и среднесрочного планирования. Для среднесрочного планирования важна будет являться следующая информация: сколько времени прошло со времени выгрузки процессов, сколько памяти занимает процесс. Сколько процессорного времени было уже предоставлено процессу. Вытесняющее и не вытесняющее планирование. Процесс планирования осуществляется частью операционной системы, которая называется планировщик. Планировщик может принимать решения о выборе для исполнения нового процесса из числа находящихся в состоянии готовности в следующих случаях: Когда процесс переводится из состояния исполнения в состояние завершения. Когда процесс переводится из состояния исполнения в состояние ожидания. Когда процесс переводится из состояния ожидания в состояние готовность. При переводе из состояния исполнения в состояние готовность. В первых двух – процесс находится в состоянии исполнения и не может дальше исполняться и для выполнения всегда необходимо выбрать новый процесс. При 3 и 4 – планирование может не проводиться, процесс, который исполнялся до прерывания может продолжить своё выполнение после обработки прерывания. Если планирование осуществляется только в первом случае, говорят, что имеет место, не вытесняющее планирование. Термин вытесняющее планирование используется во всех противных случаях. Простейшим алгоритмом планирования, является алгоритм «Первым пришёл – первым обслужен». Когда процесс переходит в состояние готовность, он помещается в конец этой очереди. Выбор нового процесса для исполнения осуществляется из начала очереди с удалением ссылки на этот процесс. Очередь подобного типа имеет в программировании специальное наименование «FIFO». Модификации алгоритма «FIFO» является алгоритм, получивший название «Ray Robin» (RR) – алгоритм, реализованный в режиме вытесняющего планирования, который представляет собой множество готовых процессов, которые выполняются циклически. Планирование процессов построено на 2 вариантах: 1. Время непрерывного использования процессора, требующее к процессору меньше или равно продолжительности кванта времени. Тогда процесс по своей воле освобождает процессор до истечения кванта времени. На исполнение выбирается новый процесс из начала очереди и таймер начинает отсчёт кванта заново. 2. Продолжительность остатка текущего процесса больше кванта времени. Тогда по истечению кванта, процесс прерывается таймером и помещается в конец очереди процессов, готовых к исполнению, а процессор выделяется к процессу находящегося в начале очереди. Тема: «Процессы»PID – идентификатор процесса. PRI – номер приоритета. NI – указывает насколько изменили заданный приоритет. ls | xargs –n1 --max-procs=4 gzip (команда архивирования) parallel – распределение процессов. Тема: «Виды памяти»Существует 3 вида памяти: Автоматическая; Динамическая; Статическая; Статическая память – выделение памяти до начала исполнения программы. Во многих языках программирования для размещения объекта в статической памяти, достаточно задекларировать его в глобальной области видимости. Автоматическая память – является самой основной, автоматически выделяет аргумент и локальные переменные, функции и другие виды метаинформации при вызове функции и освобождает память при выходе из неё. Стек как структура данных работает по принципу «Последний пришёл – первый вышел», другими словами, удалять добавлять значение в стеке можно только с одной и той же стороны.
Когда одна функция вызывает другую, последняя функция… Динамическое выделение памяти по требованию приложения. Статическая и автоматическая память выделяются единоразово перед запуском программы. При их нехватке, тогда, когда модель не подходит, используется динамическая память. Приложения при необходимости может запросить у ОС, через локатор или напрямую через системный вызов. После распределения памяти, в распоряжение программы… для возвращения файла обратно в allocator необходим только сам указатель. Тема: «Гарантированное планирование»При интерактивной работе n пользователей может примениться алгоритм гарантированного планирования, его сущность заключается в том, что каждый пользователь получает в своё распоряжение одну n-ую часть процессорного времени. Основной недостаток гарантированного планирования – это невозможность предугадать поведение приложения, которым управляет пользователь. Достоинством является то, что ни одно приложение не будет несправедливо обделено процессорным временем. Трудности возникают в том случае, когда время необходимое на выполнение конкретного процесса будет значительно больше, чем одна n-ая часть процессорного времени выделенное ему. Если таких процессов окажется одномоментно большое количество, то это может приводить к остановке работы всего вычислительного комплекса. Поэтому при выборе такого вида планирования обязательно необходимо учитывать длительность запускаемых процессов. Если время процесса меньше или равно времени процессора, выделенного данному процессу, то такой процесс называется не вытесняющий. Когда приоритеты процессов не изменяются с течением времени, то такие процессы называются статическими. Эти процессы не реагируют на изменение ситуации в вычислительном комплексе и соответственно не поддаются оперативному управлению. Тема: «Приоритетное планирование»При этом методе каждому процессу присваивается определённое число, называемое приоритетом, в соответствие с которым ему выделяется определённое числовое значение приоритета. Процессы с одинаковым приоритетом планируется в порядке «Первый пришёл – первый обслужился». При этом в качестве аргумента значения приоритета выступает оценка продолжительности следующего процесса, или следующего кванта времени процесса. Чем меньше это значение, тем выше приоритет, который будет присвоен процессу. Планирование с использованием приоритетов может быть: Вытесняющим Не вытесняющим При вытесняющим планировании, процесс с более высоким приоритетом, появившийся в очереди готовых процессов, вытесняет исполняющийся процесс с более низким приоритетом. В случае не вытесняющего планирования он просто становится в очередь готовых процессов. Когда приоритеты процессов не изменяются с течением времени, такие процессы называются статическими. Статическому приоритету не очень важна процедура корректировки исполнения процесса. Как правило, такие процессы (статические) переводятся в определённую группу и запускаются только в период простоя процессора. Тема: «Многоуровневые очереди с обратной связью»Здесь, для каждой группы процессов создаётся своя очередь процессов, которая находится в состоянии готовности. Этим группам присваиваются фиксированные приоритеты и переход из группы в группу невозможен. При таком подходе процесс не постоянно приписан к определённой очереди. Может мигрировать из очереди в очередь. Это перемещение осуществляется на основе вытесняющего приоритетного механизма. Перемещение процессов из очереди с низким приоритетом в очередь с высоким приоритетом осуществляется в следующих случаях: Автоматически при наступлении контрольного события. В случае незапланированного вмешательства внешнего воздействия. На основании управленческого сигнала от администратора. Основные параметры, влияющие на выбор вида планирования: Алгоритм планирования действий внутри очереди. Алгоритм планирования действий между очередями. Количество очередей для процесса, находящихся в состоянии готовности. Потоки помещения созданного процесса в одну из очередей. Правила перевода процессов из одной очереди в другую. Потоки – модель процесса базируется на двух концепциях: Выполнение программы. Группировка ресурсов. Процесс, как способ объединения ресурсов в одну группу, а именно: Адресное пространство. Аппаратные средства. Цель приложения. А с другой стороны процесс можно рассматривать как поток исполняемых команд без анализа его результативности. У потока есть счётчик команд, который отслеживает порядок выполнения действий. У него есть регистры для хранения текущих переменных, есть стек, в котором находится протокол выполнения процесса. Здесь же на каждую процедуру вызванную, но не вернувшуюся отводится отдельный фрейм. Потоки создают возможность одновременного выполнения одной и той же среде нескольких программ, при этом программы могут быть независимы. Несколько потоков работающих параллельно в одном процессе позволяют создавать многопоточность. Потоки, разделяя адресное пространство, позволяют осуществлять доступ к открытым файлам различному устройству ввода/вывода и рационально использовать квант времени процессора. В связи с этим их иногда называют упрощёнными процессами. При запуске многопоточного процесса, в системе с одним процессором – потоки работают поочерёдно. Модель потока может находится в нескольких состояниях: Выполнение Готовность Завершение Ожидание Создание Действующий поток взаимодействует с процессором, блокированный поток ожидает некоторого события. Поток в состоянии готовности будет запущен только когда до него дойдёт очередь. Переход между потоками осуществляется только при завершении процесса. Тема: «Типы адресов»Каждый процесс имеет своё собственное виртуальное адресное пространство. Транслятор – присваивает всем переменным и кодам программы независимые виртуальные адреса. Общее адресное пространство является всегда общим, одним и начинается с 00000000(16)/FFFFFFFF(16) (для 32 бит). Совпадение виртуальных адресов переменных и команд различных процессов не приводит к конфликту так как переменные одновременно присутствуют в памяти в различных ячейках физической памяти. В операционных системах виртуальное адресное пространство представлено в виде линейной последовательности виртуальных адресов и такой способ отображения адресного пространства называют плоским. В данном случае виртуальных адресом является единственное число, представляющее собой смещение относительно начала. Адрес такого типа называют линейным виртуальным адресом. Другим способом представления адресного пространства является представление в виде сегментов. Здесь смещение представляет собой упорядоченную пару. Виртуальный адрес состоит из номера сегмента и смещения внутри сегмента. Каждый сегмент состоит из определённого количества страниц. Минимальный размер страницы 4 кб. Размерность сегмента варьируется в зависимости от тех задач, которые решает вычислительный комплекс в данный момент. Задачей ОС является отображение индивидуальных виртуальных адресов, всех выполняемых одновременно процессов на общую физическую память, при этом ОС отражает либо всё виртуальное адресное пространство, либо только её часть. Существует два принципиально разных подхода к изменению виртуальных адресов в физические: Замена виртуального адреса на физический, выполняется один раз для каждого процесса во время начала загрузки и остаётся неизменным на протяжении всего времени, пока приложение работает. Для работы этим способом ОС имеет специальную программу, которая называется перемещающий загрузчик. Способ заключается в том, что программа загружается в память в неизменном виде виртуальных адресах. То есть операнд команд, инструкции, адреса переходов имеют те же значения, которые выбрал транслятор. При загрузке ОС создаётся начальный адрес смещения, который в последующем при загрузке задачи ОС фиксирует смещение действительного расположения программного кода. Необходимо отличать понятие виртуальное адресное пространство приложения от максимального возможного виртуального адресного пространства системы. Виртуальное адресное пространство и виртуальная память – это различные механизмы управления памятью одновременно. Виртуальное адресное пространство процесса делиться на две непрерывные части: Системную Пользовательскую ОС осуществляет системные процессы, которые создаются для решения задач ОС. В этих процессах отсутствуют сегменты прикладной программы, но системные процессы могут расположить свои сегменты в общей части виртуального адресного пространства. Обратное невозможно. Индивидуальные сегменты не могут располагаться в системных. Ко всем сегментам пользовательской части виртуального адресного пространства применяется механизм страничной памяти. Исключение могут составлять только специализированные ОС. Системная часть виртуальной памяти включает область подвергаемую страничному вытеснению и область на которую страничное вытеснение не распространяется. В не вытесняемые области размещаются модули ОС, требующие быстрой реакции или постоянного присутствия в памяти. Остальные модули подвергаются страничному вытеснению. Простейший способ управления оперативной памятью заключается в разбиении на несколько областей фиксированной величины, которые называются разделы. Такое разбиение может быть выполнено вручную при загрузке ОС или после её установке, но только 1 раз. Очередной новый процесс, который поступает на выполнение, помещается либо в общую очередь, либо в очередь к некоторому разделу. Система управления памятью должна выполнять следующие задачи: Сравнить объём памяти, требуемой для поступившего процесса с наличием свободного раздела оперативной памяти, и выбирает подходящий результат. Осуществляет загрузку программы в один из разделов и настройку адресов. На этапе трансляции программы можно задать раздел, в который нужно поместить программу. Это позволяет не использовать перемещаемый загрузчик. Этот способ имеет главный недостаток – жёсткое распределение памяти. Более лучшим способом считается динамическое распределение памяти, но недостатком является фрагментация. Тема: «Синхронизация потоков. Гонки потоков. Семафоры.» В многопоточном режиме процессы запускаются один за другим. Поток может создавать новый поток вызывая библиотечную процедуру. Параметром, как правило, является имя процедуры. Иногда возникает иерархия потоков с отношениями типа: родительский-дочерний поток. Существуют процедуры, позволяющие одному потоку подождать пока другой поток завершит какое-либо действие оповестив об этом заинтересованный поток. Потоки усложняют программную модель, так как используют большое количество структур данных. В этой ситуации память может быть выделена дважды. Необходимость использования потоков. Основной причиной является выполнение большинством приложении большого числа действий некоторые из которых, время от времени, блокируются. Для решения этой проблемы необходимо разбить приложение на несколько последовательных потоков с передачей параметра указывающий на номер вызываемой процедуры. В том случае, когда имеется одновременная потребность выполнения большого объёма вычислений, поток позволяет совмещать эти виды деятельности во времени. Для этого существует процедура синхронизации процессов и потоков. Синхронизацией называют согласование скоростей выполнения процессов и потоков во времени, за счёт приостановки одного потока до наступления некоторого события, а затем запуск этого потока вновь. Если вопросы не решены, то это может привести к неправильному решению задач, а в системе возникают гонки процессов или потоков. Ситуации, когда два и более потока обрабатывают общие данные и конечный результат зависит от скорости работы потоков называются гонками. Для борьбы с этим явлением выделают критические секции, в которых находятся критические данные, то есть данные при несогласовании изменений которых могут возникнуть нежелательные эффекты и критические области в программе, которые работают с этими данными. Для исключения этого эффекта необходимо обеспечить, чтобы в каждый момент времени в этой критической области находился только один поток. Этот приём называется взаимоисключением и используется так называемые блокирующие переменные. Каждому набору критических данных ставится в соответствие двоичная переменная, которой поток присваивает значение 0, когда входит в критическую секцию и значение 1, когда её покидает. Если поток использует пул ресурсов, то набор одинаковых внешних устройств надо отличать по какому-либо принципу, для этого используется семафоры Дейкстры, то есть переменная, которая принимает несколько значений. Для управления одинаковых по структуре потоков, но разнесённых во времени и взаимосвязанных между собой, применяют переменные мьютексы, которые определяют порядок и время запуска однородных потоков. |