Правильно для маленькой программы и недопустимо для большой системы. • Аналогия: строительство будки для собаки и строительство небоскрёба

Вид материалаПрограмма
Файловая система
Сетевые утилиты
Процесс – последовательный поток выполнения в его собственном
Предсказуемость выполнения
Использование ресурсов
Тип процесса
Суммарное время работы процесса
Взаимодействие потоков и процессов при помощи сигналов.
Действие по умолчанию
Выполнение пользовательского обработчика
Подобный материал:
1   2   3   4
компоненты операционной системы,Утилиты(РИС)

• Операционная система состоит из 4-х основных компонент.

Ядро – базовая программа, которая управляет аппаратными средствами и

выполнением других программ.

Оболочка – обеспечивает функционирование интерфейса пользователя.

Она принимает от пользователя команды и посылает их в ядро для

исполнения.

Файловая система – представляет собой систему хранения файлов на

запоминающих устройствах.

Утилиты – специализированные программы, такие как редакторы,

компиляторы, коммуникационные программы, посредством которых

выполняются стандартные действия пользователя.

• Взаимодействие всех компонент осуществляется через ядро.

Утилиты

• Набор стандартных текстовых редакторов (ed, vi, emacs).

Обработка текста. Технологии «word processing» (KWord, OpenOffice) и

«text processing» (tex/latex, sgml, groff)

Фильтр – программа преобразования информации, считанной со

стандартного устройства ввода, и выдачи результата преобразования на

стандартное устройство вывода (cat, head, tail, sort, awk, cut)

Сетевые утилиты используются для связи с другими пользователями,

удалённого доступа к другим вычислительным системам, поддержки

электронной почты и выхода в Internet (write, talk, telnet, rlogin, ssh, mail,

ftp,wget).

Средства разработки программ – компилятор, отладчик, ассемблер,

компоновщик, профилирование, стандартные библиотеки. (gcc/g++, gdb,

gprof, as)

24) Виртуальная файловая система ОС Linux(РИС)

• Linux поддерживает много различных файловых систем (ext3, reiserfs, vfat,

ntfs, iso9660 и т. д.).

• Проблема доступа программ к файлам: каждая файловая система имеет

свою организацию хранения файлов, что вынуждает включать в прикладную

программу поддержку всех известных файловых систем.

• Решение указанной проблемы – виртуальная файловая система (ВФС).Все

операции над файлами – абстрактные, драйвер определённой файловой

системы обеспечивает конкретную реализацию операций над файлами в

соответствии со структурой хранения файлов (рис 10).

• Прикладные программы взаимодействуют только с виртуальной файловой

системой. Поступивший запрос перенаправляется к соответствующему

драйверу файловой системы.

• Аналогия с идеями объектно-ориентированного программирования: ВФС –

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

конкретные ФС – производные классы.

• С целью повышения быстродействия ВФС оперирует кэшами данных,

каталогов, inode. При некорректном завершении работы операционной

системы содержимое кэшей не будет перенесено на устройства хранения

информации.

25)Организация взаимодействие пользователя с системой.

• Оболочка обеспечивает интерфейс между ядром и пользователем.

• Оболочка интерпретирует команды вводимые пользователем и посылает их

в ядро.

• Примеры оболочек: Bourne, Korn, C-shell. Наиболее распространённой

является оболочка bash – Bourne Again Shell.

• Альтернатива интерфейсу командной строки – графический

пользовательский интерфейс (GUI) X Window. Он является препроцессором

для оболочки. Команды пользователя поступают от GUI в оболочку, и только

через неё в ядро. Пример оконных менеджеров: KDE, Window Maker,

fvwm95, Fluxbox.

• Консольная надстройка над командной строкой – Midnight Commander.

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

над файлами.

26)Концепция процесса.Состояние прцесса и механизм смены

состояний.(РИС)

• Программа - набор машинных команд и данных, сохранённых в

исполняемом образе на диске. Это статический объект.

• Процесс – активная единица. Он изменяется по мере выполнения

процессором машинных команд. Это динамический объект.

Процесс – последовательный поток выполнения в его собственном

адресном пространстве. Отсутствует конкуренция внутри него и память

принадлежит только ему.

• Кроме команд и данных процесс включает в себя значения регистров

процессора, стеки с временными данными, параметрами функций, адреса

возврата.

• Аварийное завершение одного процесса не приводит к краху другого.

• Процессы могут взаимодействовать, используя средства межпроцессного

взаимодействия.

• Процесс – единица распределения ресурсов. ОС распределяет ресурсы

между процессами.


Состояния процесса.(РИС)

• Типичная ситуация – одновременное выполнение нескольких процессов. В

вычислительной системе с одним процессором только один процесс может

выполняться в фиксированный момент времени. Обеспечение

многозадачности в такой системе осуществляется путём поочерёдного

предоставления процессора процессам. Эту задачу решает диспетчер.

• Процесс во время своего существования может находиться в нескольких

состояниях. Смена состояния процесса вызывается событиями.

• Основные состояния процесса: выполнение, готовность, ожидание.

Процесс выполняется, если ему в данный момент выделен ЦП. Процесс

готов, если он мог бы сразу использовать ЦП, предоставленный в его

распоряжение. Процесс заблокирован, если он ожидает наступления

некоторого события для возможности продолжения выполнения.

• Примеры событий: приём байта с COM-порта, наступление определённого

момента времени, завершение операции другим процессом.

• Возможные переходы процесса из одного состояния в другое показывает

диаграмма переходов из состояния в состояние (рис 16).

• Дополнительные состояния процесса – рождение, закончил выполнение.

При рождении процесс получает адресное пространство, стек, системные

ресурсы и т.д. Уточнённая диаграмма переходов.

• Описание процесса в системе содержится в структуре блок описания

процесса (рис 17). Включает в себя: регистровый, системный (состояние,

информация для планирования, данные об адресном пространстве, сведения

об открытых файлах) и пользовательский контексты (код и данные из

адресного пространства).

27) Операции над процессами.Диаграмма смены состояний процесса.(РИС)

• Основные операции над процессом - «создание-завершение»,

«приостановка-запуск», «блокирование-разблокирование», «изменение

приоритета».

• Создание процесса (потомка) осуществляется другим процессом

(родителем). Процесс может иметь несколько потомков (дочерних

процессов). Все процессы объединены в иерархическую структуру.

Иерархию процессов можно увидеть с помощью утилиты pstree. Именование

процессов осуществляется целочисленными идентификаторами.

• Создание процесса осуществляется клонированием – созданием точной

копии родительского процесса. Новый процесс использует тот же

программный код и наследует копию всех данных родительского процесса.

Системный вызов fork(). Исполнение программы начнётся с точки создания

процесса, а не с начала программы.

• Копии процесса разделяют некоторые ресурсы, в том числе программный

код, который защищён от записи. Этим достигается экономия.

• Вместо непосредственного копирования данных используется механизм

«копирование-по-записи» (рис 19). Копирование блока памяти

осуществляется только при попытке записи в него одним из процессов.

• Операция мутации процесса. Исполняемый образ процесса может быть

замещён другим образом (программой). Системный вызов: exec(...). Не

существует возврата в старый образ из этого вызова при его успешном

завершении.

• Завершение процесса выполняется с помощью системного вызова exit().

Проблема «управления» (поведение, принадлежность) дочерних процессов

при завершении родительского. В ОС Linux дочерние процессы продолжают

своё выполнение, а их родителем становится процесс на вершине иерархии –

процесс init.

32) Методы планирования процесса.(РИС)

• Приоритет – числовая характеристика процесса, показывающая его

«важность». Приоритет принимает значения от 0 (наименьший) до N

(наибольший).

• ОС может присваивать приоритеты автоматически или они могут

назначаться извне.

• Статический приоритет – постоянный. Малые накладные расходы на их

поддержку. Недостаток: невозможность реакции на изменения в

окружающей обстановке с целью корректировки приоритетов.

• В ядре статические приоритеты меняются в диапазоне от 0 до 99.

Назначается процессу при создании и изменяется через системный вызов.

• Динамический приоритет – частый пересчёт его значения, начальное

значение действует лишь в короткий интервал времени. Преимущество:

повышается реактивность системы. Длительное использование процессора

приводит к понижению приоритета процессу.

• Методики диспетчеризации процессов: совместная и вытесняющая

многозадачность.

• Вытесняющая многозадачность – сама система решает в каком порядке,

как долго и какие будут выполняться процессы. Диспетчер передаёт

процессор по собственному усмотрению без разрешения процессов.

• Совместная многозадачность – сами процессы обеспечивают

освобождение процессора с помощью операции – уступка управления.

Проблема: процесс может монополизировать процессор и тем самым

блокировать нормальную работу системы.

• Linux использует вытесняющую многозадачность с элементами

совместной.

30)Планировании процессов.Цели и критерии планирования.

Уровни планирования

• Операционная система ответственна за распределение времени

центрального процессора между процессами. Эта задача называется

диспетчеризацией процессов (планирование загрузки процессоров).

• Планирование на верхнем уровне (планирование допуска) определяет,

каким заданиям будет разрешено конкурировать за ресурсы системы.

Вошедшее задание становится процессом.

• Планирование на промежуточном уровне (планирование нагрузки)

определяет, каким процессам можно состязаться за захват центрального

процессора путём приостановки и активизации процессов.

• Планирование на нижнем уровне (планирование выделения) выделяет

процессу процессор. За его исполнение ответственен диспетчер

(планировщик).

• Диспетчер работает с высокой частотой, вследствие чего всегда находится

в оперативной памяти.

Цели планирования

• Планирование должно быть справедливым. Права процесса на ресурсы не

должны ущемляться в пользу других процессов.

• Обеспечение максимальной пропускной способности системы (количество

обслуживаемых процессов в единицу времени). Улучшается эффект

«параллельности» выполнения процессов (рис 21).

Предсказуемость выполнения – одно и тоже задание должно выполняться

приблизительно за одно время при прочих равных условиях. Повышается

надёжность работы системы и упрощается анализ её работоспособности.

• Требование минимизации накладных расходов (использование ресурсов

системы самой системой). Пример таких расходов – использование

процессора диспетчером.

• Стремление к сбалансированному использованию ресурсов отдавая

предпочтение процессам, которые будут занимать недогруженные ресурсы.

Приводит к повышению коэффициента использования системных ресурсов.

• Обеспечение приемлемого времени ответа для пользователей. В

противном случае система будет невостребованной.

Критерии планирования

Важность процесса. Для более важных процессов должны создаваться

лучшие условия выполнения, чем для процессов менее важных.

Использование ресурсов. Предпочтение должно отдаваться процессам,

занимающим ключевые ресурсы. Пример: низкоприоритетный процесс

удерживает ресурс, который необходим процессу с высоким приоритетом.

Тип процесса. Диалоговые процессы и процессы, требующие быстрой

реакции, как правило, должны иметь преимущество перед пакетными

процессами. Последние допускают значительные задержки.

Суммарное время работы процесса. Две точки зрения:

1. предпочтение должно оказываться процессу, который получил меньше

времени.

2. чем больше времени получил процесс, тем ближе он к завершению. Чем

быстрее он закончит свою работу, тем быстрее освободятся ресурсы и

время для других процессов.

29) Схема прерываний и их обработки ядром операционной системы.

Понятие прерывания(РИС)

• В состав вычислительной системы входит большое количество устройств,

которыми надо управлять.

• Синхронное управление – выдаётся запрос на выполнение операции,

ожидание завершения запроса, продолжение работы системы. Недостаток:

неэффективность – большую часть времени система простаивает.

• Асинхронное управление – с помощью прерываний. Создаётся запрос и

выполняется другая задача. По завершении выполнения запроса устройство

сигнализирует процессору. Требование: аппаратная поддержка устройств с

такой схемой работы.

• Центральный процессор соединён с различными устройствами. Через эти

соединения в него поступают сигналы – аппаратные прерывания.

• Прерывание – событие, генерируемое внешним по отношению к

процессору устройством. Виды прерываний: наступление события,

требующего немедленной реакции, завершение операции ввода-вывода.

• Каждое аппаратное прерывание имеет свой номер, определяющий

источник прерывания.

Обработка аппаратного прерывания.

• Аппаратное прерывание – асинхронное событие. Оно возникает вне

зависимости от того, чем сейчас занят процессор.

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

соответствующего устройства. Прикладные программы не имеют

непосредственного доступа к аппаратным прерываниям.

• При возникновении прерывания выполняется переключение контекста.

Вычислительная система выполняет обработку в контексте ядра (рис 20).

• По завершении обработки выполняется переключение контекста, возможно

с передачей управления другому процессу.

33) Понятие потока выполнения.Сравнительный анализ потоков и процессов.

• Процесс – единица выделения ресурсов. Процессы инертны. Каждый

процесс всегда состоит, по крайней мере, из одного потока выполнения. Этот

поток создаётся автоматически при инициализации процесса.

• Поток выполнения (thread – «тред») – единица исполнения (распределения

процессорного времени). Процесс может иметь несколько потоков. Любой

процесс можно «расщепить» на несколько параллельных потоков, которые

выполняются независимо и совместно используют выделенные процессу

ресурсы.

• Поток выполняется строго последовательно и имеет свой собственный

программный счётчик, стек, значения регистров процессора. Поток

находится в одном из допустимых состояний.

• Ядро Linux поддерживает потоки в виде легковесных процессов. Потоки

одного процесса выполняются в одном адресном пространстве. Они

разделяют все переменные приложения.

• Издержки на переключение контекста между потоками одного процесса

невелики, по сравнению с переключением контекстов разных процессов.

34)Понятие асинхронного параллельного процесса.Проблематика

Разработкимногопоточных приложений.Синхронизация потоков.

• В текущей и следующей теме под словом «процесс» понимается «процесс

или поток», а при обсуждении специфичных для потоков вопросов явно

используется слово «поток».

• Процессы называются параллельными, если они существуют

одновременно.

• Параллельные процессы могут быть независимыми или

взаимодействующими.

• Взаимодействующим процессам в некоторые моменты времени может

требоваться синхронизировать свои действия (запрос на выполнение

операции, обмен данными). Такие процессы являются асинхронными.

Синхронизация – использование специальных неделимых (атомарных)

операций для кооперации между асинхронными параллельными процессами.

• Параллельная обработка – поле современных исследований и

практической деятельности.

• Проблемы разработки параллельных алгоритмов: критерий возможности

выполнения операций параллельно, надёжное и безопасное взаимодействие

процессов, отладка параллельных программ.

Синхронизация «готовность данных».

• Задача: вычисление корней уравнения ax2bxc , в предположении

существования этих корней.

x1,2=−b±b2−4⋅ac

2⋅a

• Последовательный алгоритм вычисления корней требует 11 шагов.

• Алгоритм с параллельными вычислениями требует 6 шагов. Идея:

объединяем то, что может быть выполнено без дополнительных

промежуточных действий.

• Проблема готовности промежуточных результатов вычислений при

распараллеливании (шаг 1).(РИС)

Синхронизация «выполнение одним из многих».(РиС)

• Задача о покупке молока: если один из супругов по возвращении с работы

обнаруживает, что молоко закончилось, то необходимо сходить в магазин и

купить его.

• Возможна ситуация, при которой молоко будет куплено обоими супругами.

• Источник проблемы: субъекты действуют независимо. Решение проблемы:

синхронизация действий (кооперация).

• Вариант: использование записки. Новая проблема: на написание и

оставление записки требуется время.

35) Взаимодействие потоков и процессов при помощи сигналов.

Понятие сигнала

• Процессы могут принимать сигналы. Сигнал – традиционный способ

асинхронной связи между процессами.

• Сигнал может быть послан ядром ОС, пользователем из оболочки, другим

процессом. Процесс может послать сигнал сам себе.

• Посылкой сигнала процессу сообщается о наступлении определённого

события.

• Примеры сигналов(РИС)

Обработка сигналов

• Существует несколько вариантов реакции процесса на поступление

сигнала.

Действие по умолчанию – выполняется, если процесс явно не задал другого

варианта реакции. Для большинства процессов действием по умолчанию

является завершение.

Игнорирование – эффект «отсутствия» сигнала. Процесс продолжает своё

нормальное выполнение.

Выполнение пользовательского обработчика. Нормальное выполнение

процесса прерывается и осуществляется вызов обработчика. По завершении

обработки продолжается нормальное выполнение.

• Обработчик является обычной функцией с одним целочисленным

параметром типа int и возвращающей значение типа void.

typedef void (*sighandler_t)(int);

• Задание обработчика handler для сигнала signum осуществляется

системным вызовом signal со следующим прототипом:

sighandler_t signal(int signum, sighandler_t handler);

• Обработка процессом сигнала может быть отложена (заблокирована).

• Сигналы