- •1. Классификация программного обеспечения
- •1. Базовое программное обеспечение
- •2. Трансляторы
- •3. Языки программирования
- •4. Инструментальные средства (утилиты)
- •5. Прикладное программное обеспечение
- •2. Основные задачи ос
- •3. Типы ос
- •4. Базовая система ввода/вывода (bios)
- •5. Файловая система. Типы файловых систем. Их особенности.
- •6. Загрузчик ос
- •Addr1 - addr2
- •7. Ядро ос
- •8. Основные функции ядра
- •9. Драйвер ос
- •10. Типы драйверов
- •11. Типы многозадачности, их особенности
- •12. Понятие суперпроцесса
- •13. Потоки
- •Листинг 2. Окончание процедуры инициализации ядра Linux
- •14. Семафоры
- •15. Встроенные функции ос. Встроенные команды ос
- •16. Внешние команды
- •17. Понятие пользователя. Понятие идентификатора пользователя
- •18. Понятие группы. Понятие идентификатора группы
- •19. Виртуальная память. Swap
- •20. Историческое развитие ос
- •21. Ос unix
- •22. Типы unix
- •23. Особенности bsd. Особенности System 5
- •24. Ядро unix
- •25. Типы драйверов unix
- •26. Потоки в unix
- •27. Управление процессами в unix
- •28. Режимы ядра в Unix
- •29. Файловая система в unix
- •30. Реализация безопасности в unix на уровне файловой системы
- •31. Реализация безопасности в unix на уровне ос
- •32. Понятие пользователь, группа в unix
- •33. Бесправный пользователь. Пользователь ресурса. Пользователь ос
- •34. Понятие ресурса
- •35. Понятие консоли.
- •36. Основные команды в unix
- •37. Сеть в unix
- •38. Ос ms-dos
- •39. Особенности реализации ms-dos, как составной части unix
- •40. Реализация ядра в ms-dos
- •41. Реализация драйверов в ms-dos
- •42. Реализация потоков в ms-dos
- •43. Управление процессами в ms-dos
- •44. Ограничение на использование оп
- •45. Файловая система в ms-dos
- •46. Реализация безопасности в ms-dos
- •47. Реализация многозадачности в ms-dos
- •48. Встроенные команды ms-dos
- •49. Внешние стандартные команды ms-dos
- •50. Графическая оболочка X- Window
- •51. Графическая оболочка Windows
- •52. Ос Windows nt
- •53. Ядро Windows nt
- •54. Драйверы в Windows nt
- •55. Реализация многозадачности в Windows nt
- •56. Файловая система в Windows nt
- •57. Режимы использования оп в Windows nt
- •58. Реализация безопасности в Windows nt на уровне файловой системы
- •59. Реализация безопасности в Windows nt на уросне ос
- •1. Пользователи, ресурсы и операции доступа
- •2. Локальные, глобальные и специальные группы
- •3. Встроенные группы пользователей и их права
- •4. Возможности пользователей
- •5. Управление профилями пользователей
- •6. Аудит
- •7. Репликация каталогов в сети Windows nt
- •60. Сеть в Windows nt
- •1. Однодоменная сеть Windows nt
- •2. Многодоменная сеть Windows nt
Addr1 - addr2
Если ADDR1 и ADDR2 являются именами, перемещаемыми внутри одного и того же сегмента SEGM (их адресные значения определяются относительно начала сегмента), то адресное выражение является абсолютным, так как его значение: SEGM+ADDR1 - (SEGM+ADDR2) не зависит от адреса сегмента. Для такого выражения элемент Таблицы перемещений не строится.
Если ADDR1 является именем, перемещаемым внутри сегмента SEGM, а ADDR2 - абсолютный адрес, то выражение является простым перемещаемым. В кодовое представление этого выражения записывается разность между относительным адресом в сегменте ADDR1 и абсолютным значением ADDR2. Для такого выражения строится элемент Таблицы перемещений:
адрес SEGN + длина
Загрузчик прибавит к содержимому кода адрес сегмента SEGM.
Если ADDR1 является внешним именем, а ADDR2 - абсолютный адрес, то выражение также является простым перемещаемым. В кодовое представление этого выражения абсолютное значение ADDR2. Элемент Таблицы перемещений для такого выражения содержит:
адрес ADDR1 + длина
Если ADDR1 и ADDR2 являются внешним именем, то выражение является сложным перемещаемым. В кодовое представление этого выражения записывается 0. Для такого выражения строятся два элемента Таблицы перемещений:
адрес ADDR1 + длина
адрес ADDR2 - длина
При загрузке к нулевому значению записанному по адресу адрес будет прибавлен адрес внешней точки ADDR1, а затем вычтен адрес внешней точки ADDR2.
Запись окончания формируется Ассемблером при обработке директивы END, она содержит стартовый адрес программы. Естественно, эта запись должна быть заполнена только в одном из объектных модулей, составляющих программу.
Алгоритм работы Непосредственно Связывающего Загрузчика
Наиболее простой алгоритм работы Загрузчика - двухпроходный.
На вход Загрузчика обязательно подается список объектных модулей, из которых составляется программа. Этот список может быть параметром программы-Загрузчика или находиться в отдельном файле. На первом проходе Загрузчик просматривает все объектные модули по списку и решает 2 задачи:
определяет общий объем области памяти, необходимый для программы и размещение объектных модулей в этой области;
составляет Глобальную таблицу внешних имен программы.
Структура элемента Глобальной таблицы - такая же, как и Таблицы внешних символов каждого модуля. В нее заносятся только входные точки всех модулей. Поскольку Загрузчик уже знает, в каком месте области памяти, выделяемой для программы, будет размещаться тот или иной модуль, он заносит в Глобальную таблицу адреса входных точек относительно начала всей программы.
В конце 1-го прохода Загрузчик выделяет память и, уже зная фактический начальный адрес программы в памяти, корректирует все адреса в Глобальной таблице внешних символов.
На 2-ом проходе Загрузчик снова читает все объектные модули по списку. При этом он уже размещает коды модуля в памяти и формирует для каждого модуля Таблицу внешних символов (локальную для модуля) и Таблицу перемещений. Адресные поля в этих таблицах он заполняет или корректирует с учетом фактического адреса модуля в памяти и содержимого Глобальной таблицы внешних символов. Затем он выполняет обработку Таблицы перемещений, используя для коррекции адресных кодов в программе значения из Локальной Таблицы внешних символов.
Алгоритм выполнения 1-го прохода - следующий:
|
Алгоритм выполнения 2-го прохода - следующий:
|
Этапы загрузки ОС
Первый этап загрузки ОС. В системном блоке компьютера находится постоянное запоминающее устройство (ПЗУ, постоянная память, ROM-Read Only Memory - память с доступом только для чтения), в котором содержатся программы тестирования блоков компьютера и первого этапа загрузки ОС. Они начинают выполнятся с первым импульсом тока при включении компьютера. На этом этапе процессор обращаются к диску и проверяет наличие на определенном месте (в начале диска) очень небольшой программы - загрузчика. Если эта программа обнаружена, то она считывается в ОЗУ и ей передается управление.
Второй этап загрузки ОС. Программа - загрузчик, в свою очередь, ищет на диске базовый модуль ОС, переписывает его память и передает ему управление.
Третий этап загрузки ОС. В состав базового модуля входит основной загрузчик, который ищет остальные модули ОС и считывает их в ОЗУ. После окончания загрузки ОС управление передается командному процессору и на экране появляется приглашение системы к вводу команды пользователя. Заметим, что в оперативной памяти во время работы компьютера обязательно должны находится базовый модуль ОС и командный процессор. Следовательно, нет необходимости загружать в оперативную память все файлы ОС одновременно. Драйверы устройств и утилиты могут подгружаться в ОЗУ по мере необходимости, что позволяет уменьшать обязательный объем оперативной памяти, отводимый под системное программное обеспечение.