Разработка виртуальных лабораторных работ средствами эмулятора Emu8086
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?рый полностью блокирует работу системы.
Избежать этого при двухуровневой защите не представляется возможным, поэтому драйвера надо будет тщательно программировать. В нашей работе драйверам мы уделим очень много внимания, поскольку от этого в основном зависит общая производительность системы.
Системные вызовы - это интерфейс между процессами и ядром (читайте-железом). Никаких других методов взаимодействия процессов с устройствами компьютера быть не должно. Системных вызовов достаточно много, на Linux их 190, на FreeBSD их порядка 350, причем большей частью они совпадают, соответствуя стандарту POSIX (стандарт, описывающий системные вызовы в UNIX). Разница заключается в передаче параметров, что легко будет предусмотреть. Естественно, мы не сможем сделать ядро, работающее одновременно на Linux и на FreeBSD, но по отдельности совместимость вполне реализуема.
Прикладным программам абсолютно безразлично, как системные вызовы реализуются в ядре. Это облегчает для нас обеспечение совместимости с существующими системами.
Ядро системы при распределении памяти оперирует 4-х килобайтными страницами.
Страницы могут использоваться самим ядром, для нужд драйверов (кэширование, например), или для процессов.
Программа или процесс состоит из следующих частей:
Сегмент кода. Может только выполняться, сама программа его не прочитать, не переписать не может! Использовать для этого сегмента swap не нужно, при необходимости код считывается прямо из файла;
Сегмент данных состоит из трех частей:
Константные данные, их тоже можно загружать из файла, так как они не меняются при работе программы;
Инициализированные данные. Участвует в процессе свопинга;
Не инициализированные данные. Так же участвует в свопинге;
Сегмент стека. Так же участвует в свопинге.
Но, обычно, системы делят сегмент данных на две части: инициализированные данные и не инициализированные данные.
Все сегменты разбиваются на страницы. Сегмент кода имеет постоянный размер. Сегмент данных может увеличиваться в сторону больших адресов. Сегмент стека, поскольку растет вниз, увеличивается в сторону уменьшения адресов. Страницы памяти для дополнительных данных или стека выделяются системой по мере необходимости.
Очень интересный момент:
При выполнении программы операционная система делает следующие действия:
Готовит для программы локальную таблицу дескрипторов;
Готовит для программы каталог страниц, все страницы помечаются как не присутствующие в памяти.
Все.
При передаче управления этой программе процессор генерирует исключение по отсутствию страницы, в котором нужная страница загружается из файла или инициализируется.
Еще один интересный момент:
Когда в системе загружается две или более одинаковых программы - нет необходимости для каждой из них выделять место для кодового сегмента, они спокойно могут использовать один код на всех.
Лабораторная работа № 1.
Загрузка операционной системы
Цель работы: Создать загрузочный диск для операционной системы.
Теоретические понятия.
Какие функции выполняет операционная система?
Операционная система должна выполняет следующие функции:
Обеспечивать загрузку пользовательских программ в оперативную память и их исполнение;
Обеспечивать управление памятью. В простейшем случае это указание единственной загруженной программе адреса, на котором заканчивается память, доступная для использования, и начинается память, занятая системой.
Обеспечивать работу с устройствами долговременной памяти, такими как магнитные диски, ленты, оптические диски и т.д.
Предоставлять более или менее стандартизированный доступ к различным периферийным устройствам.
Предоставлять некоторый пользовательский интерфейс.
Что такое загрузочный монитор и каково его предназначение?
Загрузочным монитором называется записанная в ПЗУ программа, которая находиться по тому адресу, по которому процессор передает управление в момент включения питания и производит первичную инициализацию процессора, тестирование памяти и обязательного периферийного оборудования, и, наконец, начинает загрузку системы
В чем отличие загрузочного монитора от консольного монитора?
В отличие от загрузочного монитора, консольный монитор позволяет просматривать содержимое памяти по заданному адресу, записывать туда данные, запускать какую-то область памяти как программу. На консольном мониторе можно даже писать программы, почти с таким же успехом, как на ассемблере.
Приведите определение первичного загрузчика.
Первичным загрузчиком (загрузочный сектор, boot-сектор) - это содержимое нулевого сектора нулевой дорожки диска, с которого производится загрузка. Первичный загрузчик, пользуясь сервисами загрузочного монитора, ищет на диске начало файловой системы своей родной ОС, находит в этой файловой системе файл с определенным именем, считывает его в память и передает этому файлу управление.
Что такое бутстрап?
Бустрап - это последовательное исполнение втягивающих друг друга загрузчиков возрастающей сложности.
Как происходит загрузка операционной системы?
Загрузка операционной системы может происходить по-разному. В простейшем случае, первичный загрузчик, пользуясь сервисами загрузочного монитора, ищет на диске начало файловой системы своей родной ОС, находит в этой файловой системе файл с определенным именем (ядро ОС), считывает его в память и передает этому фа