Правильно для маленькой программы и недопустимо для большой системы. • Аналогия: строительство будки для собаки и строительство небоскрёба
Вид материала | Программа |
- Учебно-методический комплекс по дисциплине «инженерная геодезия» для студентов 3 курса, 610.25kb.
- Пособие и методические указания к выполнению курсовой работы, 639.04kb.
- Конспект лекций по дисциплине «Теплоснабжение» для студентов 4 и 5 курсов всех форм, 22.36kb.
- План для самостоятельной работы по специальности спо 270802 «Строительство и эксплуатация, 104.67kb.
- Строительство комплекса зданий производственной базы и фондохранилища - завершение, 194.75kb.
- «Войсковая часть 7408 г. Нижний Новгород, строительство и реконструкция военного городка, 1125.35kb.
- Дисциплина учебного плана подготовки специалиста Специальность 271101. 65 «Строительство, 18.47kb.
- Рабочая программа дисциплины опд ф. 09 «Инженерная геология» для специальности 270102, 214.97kb.
- Анализ рынка рекламы г. Москвы Введение, 1831.97kb.
- Положение о республиканской научно-практической конференции для обучающихся «Строительство:, 61.05kb.
• Операционная система состоит из 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)Понятие асинхронного параллельного процесса.Проблематика
Разработкимногопоточных приложений.Синхронизация потоков.
• В текущей и следующей теме под словом «процесс» понимается «процесс
или поток», а при обсуждении специфичных для потоков вопросов явно
используется слово «поток».
• Процессы называются параллельными, если они существуют
одновременно.
• Параллельные процессы могут быть независимыми или
взаимодействующими.
• Взаимодействующим процессам в некоторые моменты времени может
требоваться синхронизировать свои действия (запрос на выполнение
операции, обмен данными). Такие процессы являются асинхронными.
• Синхронизация – использование специальных неделимых (атомарных)
операций для кооперации между асинхронными параллельными процессами.
• Параллельная обработка – поле современных исследований и
практической деятельности.
• Проблемы разработки параллельных алгоритмов: критерий возможности
выполнения операций параллельно, надёжное и безопасное взаимодействие
процессов, отладка параллельных программ.
Синхронизация «готовность данных».
• Задача: вычисление корней уравнения ax2bxc , в предположении
существования этих корней.
x1,2=−b±b2−4⋅a⋅c
2⋅a
• Последовательный алгоритм вычисления корней требует 11 шагов.
• Алгоритм с параллельными вычислениями требует 6 шагов. Идея:
объединяем то, что может быть выполнено без дополнительных
промежуточных действий.
• Проблема готовности промежуточных результатов вычислений при
распараллеливании (шаг 1).(РИС)
Синхронизация «выполнение одним из многих».(РиС)
• Задача о покупке молока: если один из супругов по возвращении с работы
обнаруживает, что молоко закончилось, то необходимо сходить в магазин и
купить его.
• Возможна ситуация, при которой молоко будет куплено обоими супругами.
• Источник проблемы: субъекты действуют независимо. Решение проблемы:
синхронизация действий (кооперация).
• Вариант: использование записки. Новая проблема: на написание и
оставление записки требуется время.
35) Взаимодействие потоков и процессов при помощи сигналов.
Понятие сигнала
• Процессы могут принимать сигналы. Сигнал – традиционный способ
асинхронной связи между процессами.
• Сигнал может быть послан ядром ОС, пользователем из оболочки, другим
процессом. Процесс может послать сигнал сам себе.
• Посылкой сигнала процессу сообщается о наступлении определённого
события.
• Примеры сигналов(РИС)
Обработка сигналов
• Существует несколько вариантов реакции процесса на поступление
сигнала.
• Действие по умолчанию – выполняется, если процесс явно не задал другого
варианта реакции. Для большинства процессов действием по умолчанию
является завершение.
• Игнорирование – эффект «отсутствия» сигнала. Процесс продолжает своё
нормальное выполнение.
• Выполнение пользовательского обработчика. Нормальное выполнение
процесса прерывается и осуществляется вызов обработчика. По завершении
обработки продолжается нормальное выполнение.
• Обработчик является обычной функцией с одним целочисленным
параметром типа int и возвращающей значение типа void.
typedef void (*sighandler_t)(int);
• Задание обработчика handler для сигнала signum осуществляется
системным вызовом signal со следующим прототипом:
sighandler_t signal(int signum, sighandler_t handler);
• Обработка процессом сигнала может быть отложена (заблокирована).
• Сигналы