Главная страница
Навигация по странице:

  • Управление памятью в операционных системах.

  • Реализация процессов в операционной системе Unix.

  • Реализация процессов в операционной системе Windows.

  • Процесс загрузки операционной системы Windows.

  • Формат исполняемых файлов PE.

  • Инсталляция операционной системы FreeBSD.

  • Ответы на ОС. Вопросы на экзамен


    Скачать 0.7 Mb.
    НазваниеВопросы на экзамен
    АнкорОтветы на ОС
    Дата12.04.2023
    Размер0.7 Mb.
    Формат файлаdocx
    Имя файлаОтветы на ОС.docx
    ТипДокументы
    #1057874
    страница2 из 3
    1   2   3

    Потоки и процессы в операционных системах.

    Режим ядра — код, который выполняется в нулевом кольце защиты процессора (ring0) с максимальными привилегиями.

    Режим пользователя — код, исполняемый в третьем кольце защиты процессора (ring3), обладает пониженными привилегиями.

    Системный вызов осуществляет переход из режима ядра в режим пользователя с помощью вызова инструкций.

    Поток (thread) — это, сущность операционной системы, процесс выполнения на процессоре набора инструкций, точнее говоря программного кода. Общее назначение потоков — параллельное выполнение на процессоре двух или более различных задач. Как можно догадаться, потоки были первым шагом на пути к многозадачным ОС.

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

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

    - Регистры процессора.

    - Указатель на стек потока/процесса.

    Как я уже упомянул, потоки могут быть созданы не только в режиме ядра, но и в режиме пользователя. Планировщиков потоков в ОС может быть несколько:

    - Центральный планировщик ОС режима ядра, который распределяет время между любым потоком в системе.

    - Планировщик библиотеки потоков. У библиотеки потоков режима пользователя может быть свой планировщик, который распределяет время между потоками различных процессов режима пользователя.

    - Планировщик потоков процесса. Уже рассмотренные нами волокна, ставятся на выполнение именно таким способом.

    1. Управление памятью в операционных системах.

    Под памятью (memory) здесь подразумевается оперативная память компьютера. В отличие от памяти жесткого диска, которую называют внешней памятью (storage), оперативной памяти для сохранения информации требуется постоянное электропитание. Функциями ОС по управлению памятью в мультипрограммной системе являются:

    - Отслеживание свободной и занятой памяти;

    - Выделение памяти процессам и освобождение памяти по завершении процессов;

    - Вытеснение кодов и данных процессов из оперативной памяти на диск (полное или частичное), когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место;

    - Настройка адресов программы на конкретную область физической памяти.

    Помимо первоначального выделения памяти процессам при их создании ОС должна также заниматься динамическим распределением памяти, то есть выполнять запросы приложений на выделение им дополнительной памяти во время выполнения. После того как приложение перестает нуждаться в дополнительной памяти, оно может возвратить ее системе.

    Для идентификации переменных и команд на разных этапах жизненного цикла программы используются символьные имена (метки), виртуальные адреса и физические адреса:

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

    - Виртуальные адреса, называемые иногда математическими, или логическими адресами, вырабатывает транслятор, переводящий программу на машинный язык.

    - Физические адреса соответствуют номерам ячеек оперативной памяти, где в действительности расположены' или будут расположены переменные и команды.

    Совокупность виртуальных адресов процесса называется виртуальным адресным пространством. Диапазон возможных адресов виртуального пространства у всех процессов является одним и тем же. Например, при использовании 32-разрядных виртуальных адресов этот диапазон задается границами 0000000016и FFFFFFFF16. Тем не менее каждый процесс имеет собственное виртуальное адресное пространство — транслятор присваивает виртуальные адреса переменным и кодам каждой программе независимо.



    Распределение памяти фиксированными разделами:

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



    Распределение памяти динамическими разделами:

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



    Перемещаемые разделы:

    Одним из методов борьбы с фрагментацией является перемещение всех занятых участков в сторону старших или младших адресов, так, чтобы, вся свободная память образовала единую свободную область (рис. 5.10). В дополнение к функциям, которые выполняет ОС при распределении памяти динамическими разделами* в данном случае она должна еще время от времени копировать содержимое разделов из одного места памяти в другое, корректируя таблицы свободных и занятых областей:



    Свопинг и виртуальная память:

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

    Свопинг (swapping) — образы процессов выгружаются на диск и возвращаются в оперативную память целиком.

    Виртуальная память (virtual memory) — между оперативной памятью и диском перемещаются части (сегменты, страницы и т. п.) образов процессов.

    1. Реализация процессов в операционной системе Unix.

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

    С точки зрения понимания термина процесса в ОС Unix данное понятие можно определить двояко. В первом случае процесс можно определить как объект, зарегистрированный в таблице процессов. Таблица процессов является одной из специальных системных таблиц, которая, очевидно, является программной таблицей. Второе определение объявляет процессом объект, порожденный системным вызовом fork().

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

    В современных реализациях UNIX для большинства аппаратных архитектур используется страничная организация виртуальной памяти. В этом случае всё адресное пространство процесса разбивается на участки одинакового размера (страницы). В 32-разрядной архитектуре объём адресного пространства процесса равен 4 гигабайтам. Так как число процессов в системе потенциально не ограничено, очевидно, что суммарный размер адресного пространства, необходимого всем процессам, вполне может превысить размеры физической памяти. Конечно, большая часть программ оперирует довольно небольшим объёмом памяти.

    Каждому процессу соответствует контекст, в котором он выполняется. Контекст процесса системного уровня в ОС UNIX состоит из «статической» и «динамических» частей. Статическая часть контекста процесса системного уровня включает следующее:

    - Идентификатор процесса (PID - уникальный номер, идентифицирующий процесс)

    - Идентификатор родительского процесса (PPID)

    - Состояние процесса (инициализация, исполнение, приостановка, ожидание ввода-вывода, завершение)

    - Идентификаторы пользователя

    - Приоритет процесса

    - Таблица дескрипторов открытых файлов

    - Другая информация, связанная с процессом

    1. Реализация процессов в операционной системе Windows.

    Процесс создается тогда, когда другой процесс делает вызов CreateProcess интерфейса Win32. Этот вызов запускает процедуру (пользовательского режима) из kernel.dll, которая осуществляет вызов NtCreateUserProcess в ядре, чтобы за несколько этапов создать процесс:

    1. Преобразуется имя исполняемого файла (заданное в виде параметра) из маршрута Win32 в маршрут NT. Если исполняемый файл имеет только имя (без маршрута в виде каталогов), то его поиск ведется в тех каталогах, которые перечислены в качестве каталогов по умолчанию (они включают и те, которые содержатся в переменной окружения PATH, но не только их).

    2. Собираются все параметры создания процесса и передаются (вместе с полным маршрутом к исполняемой программе) собственному интерфейсу NtCreateUserProcess.

    3. Работая в режиме ядра, NtCreateUserProcess обрабатывает параметры, а затем открывает образ программы и создает объект сегмента, который может использоваться для отображения программы на виртуальное адресное пространство нового процесса.

    В ранних версиях Windows основная часть алгоритма создания процесса была реализована в процедуре пользовательского режима, которая должна была создавать новый процесс при использовании нескольких системных вызовов и за счет выполнения другой работы с помощью исходных API-интерфейсов NT, поддерживающих реализацию подсистем. Эти действия были перенесены в ядро, чтобы ограничить возможность родительского процесса манипулировать дочерним процессом в случаях, когда дочерний процесс выполняет защищенную программу, например программу, реализующую DRM для защиты фильмов от пиратства.

    1. Процесс загрузки операционной системы Windows.

    После нажатия кнопки включения или перезагрузки управление берет на себя Базовая система ввода/вывода (Basic Input/Output System - BIOS). BIOS — это программа, записанная в постоянной энергонезависимой памяти компьютера -ПЗУ (английская аббревиатура - CMOS). BIOS производит тестирование и инициализацию всех устройств и, если они прошли успешно, считывает MBR по абсолютному адресу. Затем помещает считанный код главного загрузчика в оперативную память и передает ему управление.

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

    Получивший управление загрузчик операционной системы инициирует загрузку ядра ОС в память.

    Запускается сама операционная система.

    Как видно из вышесказанного, при загрузке компьютера используются абсолютные адреса, т.е. номера жестких дисков, цилиндров, головок, секторов, блоков. Выполнение этапов загрузки происходит по жестко заданной цепочке. Для успешной загрузки ОС необходимо, чтобы все участники цепочки находились на своих строго определенных местах: главный загрузчик и основная таблица разделов в загрузочном секторе диска, загрузчик(и) ОС и таблицы разделов в остальных разделах диска.

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

    1. Формат исполняемых файлов PE.

    Исполняемый файл (англ. executable file) — файл, содержащий программу в виде, в котором она может быть (после загрузки в память и настройки по месту) исполнена компьютером.

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

    Файл PE состоит из нескольких заголовков и секций, которые указывают динамическому компоновщику, как отображать файл в память. Исполняемый образ состоит из нескольких различных областей (секций), каждая из которых требует различных прав доступа к памяти;

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

    Любой PE-файл состоит из нескольких заголовков и нескольких (от 1 до 96) секций. Заголовки содержат служебную информацию, описывающую различные свойства исполняемого файла и его структуру. Секции содержат данные, которые размещаются в адресном пространстве процесса во время загрузки исполняемого файла в память.

    PE-файлы являются файлами с относительной загрузкой, т. е. теоретически могут размещаться в пространстве адресов 0x00000000 - 0xFFFFFFFF с любого адреса, называемого базовым адресом. Поскольку базовый адрес заранее неизвестен, структура PE-файлов основана на понятия RVA (relative virtual address, относительный виртуальный адрес). RVA представляет собой смещение от базового адреса исполняемого файла до данного адреса. Иными словами, для получения линейного адреса в виртуальной памяти процесса нужно сложить RVA с базовым адресом.

    1. Инсталляция операционной системы FreeBSD.

    ШАГ 1. ЗАГРУЗКА ОБРАЗА

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

    ШАГ 2. ЗАПИСЬ ОБРАЗА НА ДИСК

    Далее вам нужно записать полученный образ на диск или на флешку. Вы можете использовать один из известных вам методов для этого. Например, в Linux вы можете использовать Unetbootin или Etcher, а в Windows есть Rufus.

    Далее вставьте носитель в компьютер и измените настройки BIOS так, чтобы загрузка выполнялась из вставленного носителя.

    ШАГ 3. МЕНЮ ЗАГРУЗЧИКА

    В первом меню загрузчика вам не нужно менять никаких параметров. Просто нажмите "Enter" для продолжения работы:

    ШАГ 4. ВЫБОР ДЕЙСТВИЯ

    Дальше загрузиться псевдографический интерфейс, в нем выберите пункт "Install" для установки системы:

    ШАГ 5. РАСКЛАДКА КЛАВИАТУРЫ

    Выберите вашу раскладку клавиатуры, по умолчанию используется английская, в большинстве случаев лучше ее оставить:

    ШАГ 6. ИМЯ ХОСТА

    Введите имя хоста для новой системы:

    ШАГ 7. ВЫБОР ПРОГРАММ

    На следующем экране вам предстоит выбрать компоненты системы, которые вы хотите установить FreeBSD 11 на свой компьютер. Для того, чтобы отметить компонент нажмите "Пробел". Для сервера достаточно оставить библиотеки совместимости lib32 и Ports.

    Когда завершите, нажмите "Enter".

    ШАГ 8. АВТОМАТИЧЕСКАЯ РАЗМЕТКА ДИСКА

    Дальше нужно выполнить разметку диска. Вы можете довериться установщику и выполнить автоматическую разметку или же сделать все вручную. Если у вас есть несколько жестких дисков, которые необходимо подключить, лучше использовать ZFS. Но мы рассмотрим на примере UFS.

    Далее вам нужно будет подтвердить использование всего диска для установки системы. Все данные на нем будут уничтожены.

    Затем выберите таблицу разделов. Если ваш диск больше 2 Тб или вы используете UEFI вместо BIOS, то вам лучше использовать GPT, в всех остальных случаях более предпочтительно MBR. Даже будет лучше если вы отключите защищенную загрузку и будете использовать MBR:

    В следующем окне система покажет вам созданные разделы. В случае MBR будет создано два раздела - корень и раздел подкачки. Используйте "Tab" для выбора кнопки "Commit", а затем нажмите "Enter":

    ШАГ 9. УСТАНОВКА FREEBSD

    Дальше будет запущена установка FreeBSD 11 с флешки или другого носителя, в зависимости от скорости работы вашего компьютера и жесткого диска, установка может занять от 10 до 30 минут.

    ШАГ 10. ПАРОЛЬ СУПЕРПОЛЬЗОВАТЕЛЯ

    Когда установка завершится, система предложит вам ввести пароль для суперпользователя. Установщик спросит пароль два раза, но он не будет отображаться на экране:

    ШАГ 11. НАСТРОЙКА СЕТИ

    Дальше выберите сетевой интерфейс, через который вы собираетесь получать доступ в интернет.

    Выберите "Yes", чтобы выполнить настройку ip адреса IPv4:

    Вы можете выбрать вариант получения адреса по DHCP или настроить его вручную:

    Настройку адреса IPv6 можно пропустить:

    Последний этап настройки сети - настройка DNS серверов. Лучше всего добавить, кроме стандартного, DNS сервер от Google - 8.8.8.8:

    ШАГ 12. РЕГИОН

    Выберите ваш географический регион, вашу страну

    ШАГ 13. НАСТРОЙКА ДАТЫ

    На следующем этапе нужно ввести текущую дату и время, если они были неверно получены из сети:

    ШАГ 14. АВТОЗАГРУЗКА

    Дальше нужно выбрать какие сервисы будут загружаться по умолчанию при старте системы. Например, SSH, NTP и Powerd. Последний позволяет автоматически регулировать частоту процессора в зависимости от нагрузки на систему.

    ШАГ 15. ДОПОЛНИТЕЛЬНЫЕ ОПТИМИЗАЦИИ

    Эти опции позволяют усилить безопасность вашей системы. Отключите доступ к буферу ядра для непривилегированных пользователей. Отключите отладку, включите очистку /tmp во время загрузки, отключите сокет Syslogd и Sendmail если вы не планируете использовать почтовый сервер:

    ШАГ 16. ДРУГИЕ ПОЛЬЗОВАТЕЛИ

    Дальше установщик спросит вас не желаете ли вы добавить к системе еще пользователей. Выберите "yes" и введите всю необходимую информацию о пользователе. Безопаснее всего оставить все поля по умолчанию, для этого достаточно нажимать "Enter":

    В качестве оболочки вы можете выбрать Bourne shell (sh) или tcsh. Когда завершите, просто наберите "Yes":

    Дальше система спросит вас хотите ли вы добавить еще пользователей, и если в этом нет необходимости, нужно ответить "no":

    ШАГ 17. ЗАВЕРШЕНИЕ УСТАНОВКИ
    1. 1   2   3


    написать администратору сайта