Главная » Просмотр файлов » А. Робачевский - Операционная система UNIX

А. Робачевский - Операционная система UNIX (1114671), страница 45

Файл №1114671 А. Робачевский - Операционная система UNIX (А. Робачевский - Операционная система UNIX) 45 страницаА. Робачевский - Операционная система UNIX (1114671) страница 452019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 45)

Во многих случаях, вскорепосле этого, дочерний процесс делает системный вызов ехес(2) для запускановой программы, при этом существующее адресное пространство унич!тожается и создается новое. Таким образом создание фактической копииадресного пространства процесса, т. е. выделение оперативной памяти исоздание соответствующих карт отображения, является неоправданным.www.books-shop.comСоздание процесса229Для решения данной проблемы используются два подхода. Первый из них,предложенный в UNIX System V, называется "копирование при записи"или COW). Суть этого подхода заключается в том, что сег!менты данных и стека родительского процесса помечаются доступнымитолько для чтения, а дочерний процесс, хотя и получает собственные кар!ты отображения, разделяет эти сегменты с родительским.

Другими слова!ми, сразу после создания процесса и родитель и потомок адресуют одни ите же страницы физической памяти. Если какой!либо из двух процессовпопытается модифицировать данные или стек, возникнет страничнаяошибка, поскольку страница открыта только для чтения, а не для записи.При этом будет запущен обработчик ошибки ядра, который создаст дляпроцесса копию этой страницы, доступную для записи.

Таким образом,фактическому копированию подлежат только модифицируемые страницы,а не все адресное пространство процесса. Если дочерний процесс делаетсистемный вызов ехес(2) или вообще завершает свое выполнение, правадоступа к страницам родителя, имеющим флаг COW, возвращаются к ихпрежним значениям (т. е. до создания дочернего процесса), а флаг COWочищается.Другой подход используется в BSD UNIX. В этой версии системы был пред!ложен новый системный вызов — vfork(2). Использование этого вызова име!ет смысл, когда дочерний процесс сразу же выполняет вызов ехес(2) и за!пускает новую программу.

При вызове vfork(2) родительский процесс пре!доставляет свое адресное пространство дочернему и переходит в состояниесна, пока последний не вернет его обратно. Далее дочерний процесс выпол!няется в адресном пространстве родителя, пока не делает вызов ехес(2) илиexit(2), после чего ядро возвращает адресное пространство родителю и про!буждает его. С помощью vfork(2) можно добиться максимального быстродей!ствия, т. к.

в этом случае мы полностью избегаем копирования, даже длякарт отображения. Вместо этого адресное пространство родительского про!цесса предоставляется потомку передачей нескольких аппаратных регистров,отвечающих за трансляцию адресов. Однако vfork(2) таит в себе потенциаль!ную опасность, поскольку позволяет одному процессу использовать и дажемодифицировать адресное пространство другого.Для управления памятью процесса ядру необходимо соответствующим об!разом задать области.

При этом структуры pregion дочернего процесса,соответствующие разделяемым областям, указывают на те же структурыregion, что и для родителя. Для областей, совместное использование ко!торых недопустимо, ядро размещает отдельные структуры region для до!чернего процесса (изначально копируя их содержимое с родительского) иустанавливает соответствующие указатели. На рис. 3.15 представлена схемаэтих операций.

Заметим, что совместная работа и дублирование областейявляются отдельным механизмом, не связанным с рассмотренными вышеподходами, для совместного использования адресного пространства, на!пример COW. Так, после создания отдельной копииоблас!Ⱦɚɧɧɚɹɜɟɪɫɢɹɤɧɢɝɢɜɵɩɭɳɟɧɚɷɥɟɤɬɪɨɧɧɵɦɢɡɞɚɬɟɥɶɫɬɜɨɦ%RRNVVKRSɊɚɫɩɪɨɫɬɪɚɧɟɧɢɟɩɪɨɞɚɠɚɩɟɪɟɡɚɩɢɫɶɞɚɧɧɨɣɤɧɢɝɢɢɥɢɟɟɱɚɫɬɟɣɁȺɉɊȿɓȿɇɕɈɜɫɟɯɧɚɪɭɲɟɧɢɹɯɩɪɨɫɶɛɚɫɨɨɛɳɚɬɶɩɨɚɞɪɟɫɭpiracy@books-shop.com230Глава 3,управления процессамити она по!прежнему будет адресовать те же страницы памяти, что и соот!ветствующая область родителя.Рис. 3.15.

Создание областей нового процессаЗапуск новой программыЗапуск новой программы осуществляется с помощью системного вызоваНапомним, что при этом создается не новый процесс, а новое ад!ресное пространство процесса, которое загружается содержимым новойпрограммы. Если процесс был создан вызовомстарое адресноепространство возвращается родителю, в противном случае оно простоуничтожается. После возврата из вызова ехес(2) процесс продолжает вы!полнение кода новой программы.Операционная система UNIX обычно поддерживает несколько форматовисполняемых файлов.

Старейший из них —в разделе "Форматы ис!полняемых файлов" главы 2 также были рассмотрены форматы COFF иELF. В любом случае исполняемый файл содержит заголовок, позволяю!щий ядру правильно разместить адресное пространство процесса и загру!в него соответствующие фрагменты исполняемого файла.www.books-shop.comЗапуск новой программыПеречислим ряд действий, которые выполняет ехес(2) для запуска новойпрограммы:Производит трансляцию имени файла.

В результате возвращаетсяиндексный дескриптор, с помощью которого осуществляется доступк файлу. При этом проверяются права доступа.Считывает заголовок файла и проверяет, является ли файл исполняе!мым. Вызов ехес(2) также распознает скрипты, о которых говорилосьв главе 1. При этом он анализирует первую строку скрипта, котораяобычно имеет видВ этом случае ехес(2) запускаетпрограмму, указаннуюпередавая ей в качестве аргументаимя скрипта.

Если исполняемый файл (т. е. файл с установленныматрибутом х) не является бинарным и не содержит в первой строкеназвания интерпретатора, ехес(2) запускает интерпретатор по умол!чаниюиликак предписывает стан!дарт XPG4), передавая ему содержимое файла в качестве ввода.Если исполняемый файл имеет атрибуты SUID или SGID, ехес(2)соответствующим образом изменяет эффективные идентификаторыидля этогоСохраняет аргументы вызова ехес(2) и переменные окружения в ад!ресном пространстве ядра, поскольку адресное пространство процес!са будет уничтожено.Резервирует место в области свопинга для сегмента данных и стека.Освобождает старые области процесса и соответствующие областисвопинга. Если процесс был создан вызовом vfork(2), старое адресноепространство возвращается родителю.Размещает и инициализирует карты отображения для новых сегмен!тов кода, данных и стека.

Если сегмент кода является активным, на!пример, какой!либо процесс уже выполняет эту программу, даннаяобласть используется совместно. В противном случае область запол!няется содержимым соответствующего раздела исполняемого файлаили инициализируется нулями для неинициализированных данных.Поскольку управление памятью процесса построено на механизместраничногопо требованию, копирование происходитпостранично и только тогда, когда процесс обращается к страницам,отсутствующим в памяти.Копирует сохраненные аргументы и переменные окружения в новыйстек процесса.Устанавливает обработку всех сигналов на умалчиваемые значения,поскольку процесс теперь не имеет требуемых обработчиков. Установ!ки для игнорируемых и заблокированных сигналов не изменяются.Напомним, что этом случае EUID и EGID не наследуются от родительского процесса, априсваиваются равными идентификаторами GID исполняемого файла.www.books-shop.com232Глава 3.управления процессамиИнициализирует аппаратный контекст процесса.

В частности, послеэтого указатель инструкций адресует точку входа новой программы.В случае, когда программа использует динамические библиотеки, соответ!ствующий раздел исполняемого файла (для файла формата ELF данныйраздел имеет тип INTERP) содержит имя редактора связей динамическойбиблиотеки. В этом случае редактор связей должен быть запущен до нача!ла выполнения основной программы для связывания с программами тре!буемых динамических библиотек. Таким образом точка входа в программуустанавливается на точку входа в редактор связей.

После завершения своейработы редактор связей, в свою очередь, запускает программу самостоя!тельно, анализируя заголовок исполняемого файла. Стадии запуска новойпрограммы проиллюстрированы на рис. 3.16.Рис. 3.16. Запуск новой программы: а) Адресное пространство процесса до вызоваб) Уничтожение старого адресного пространства; в) Новое адресное простран%ство процесса; г) Новое адресное пространство процесса при использовании динами%ческих библиотекwww.books-shop.comВыполнение режиме233Выполнение в режиме ядраСуществуют всего три события, при которых выполнение процесса пере!ходит в режим ядра — аппаратные прерывания, особые ситуации и сис!темные вызовы.

Во всех случаях ядро UNIX получает управление и вызы!вает соответствующую системную процедуру для обработки события. Пе!ред вызовом ядро сохраняет состояние прерванного процесса в системномстеке. После завершения обработки, состояние процесса восстанавливает!ся и процесс возвращается в исходный режим выполнения. Чаще всего эторежим задачи, но если, например, прерывание возникло, когда процессуже находился в режиме ядра, после обработки события он останется вэтом режиме.Отметим существенную разницу между прерываниями и особыми ситуа!циями.

Аппаратные прерывания генерируются периферийными устройст!вами при наступлении определенных событий (например, завершениедисковой операции ввода/вывода или поступление данных на последова!тельный порт) и имеют асинхронный характер, поскольку невозможноточно сказать, в какой момент наступит то или иное прерывание. Болеетого, эти прерывания, как правило, не связаны с текущим процессом, авызваны внешними событиями. Именно поэтому, обработка прерыванийпроисходит в системном контексте, при этом недопустим доступ к адрес!ному пространству процесса, например, к его u!area.

Характеристики

Тип файла
PDF-файл
Размер
8,11 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6472
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее