Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
last_lections_OS.docx
Скачиваний:
5
Добавлен:
19.04.2015
Размер:
38.89 Кб
Скачать

Настройка адресов программы на конкретную бласть озу

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

4.3.1 Абсолютная загрузка

- состоит в том , что программа всегда загружаеться с одного и того же адреса это возможно в следующих случаях – 1 система исполняет в каждый момент времени только 1 процесс,

- 2 – система может предоставить каждому процессу свое адресное пространство.

Подобный программный модуль называеться абсолютный загрузочный модуль. Абсолютная загрузка используется например в системе ЮНИКС на 32-х разрядных процессорах.

4.3.2 Относительная загрука

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

Если для адресации команд и операндов используется абсолютная адресация, то подобная перенастройка выливается в процесс редактирования всех используемых в программе абсолютных адресов. Т.е если мы захотим «сдвинуть» программу в памяти так, чтобы она начиналась не с адреса 800Н а с адреса 900Н, то мы должны будем найти все команды с абсолютными адресными полями и прибавит ко всем этим полям разность нового и старого адресов. Если же в программе используется относительная адресация, то задача значительно упрощается. В этом случае для перемещения программы ОС нужно только изменить значение базовых (сегментных регистров) и программа даже «не узнает» что она агружена с другого адреса.

4.3.3 Позиционно независимый код.

Кроме рассмотренных ранее основных способов адресации сущ-вует весьма интересная разновидность относительной адресации, когда адрес получается сложением адресного поля команды и значения счетчика команд. Очевидно что программа в которой используется только такая адресация можно грузить с любого адреса без всякой перенастройки.Такой код называется позиционно – независимым. Позиционно – независимые программы очень удобны для загрузки, но к сожелению их написание накладывает довольно жесткие ограничения на стиль программирования. Например нельзя пользоваться статически инициальзируемыми переменными указательного типа, кроме того на многих процессорах позиционно – независимый код вообще невозможен – эти процессоры не поддерживают соответствущий режим адресации для данных. Возникает серьезное неудобство при сборке программы из нескольких модулей. Поэтому такой стиль программирования используют только в особых случаях.

5.0.0 Файловые системы

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

5.1. Логическая организация ФС.

5.1.1 Формат имен файлов

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

5.1.2 Тип файла

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

5.1.3 Операции над файлами

Операции над файлами могут быт разделены на 3 группы:

- операции обмена данными между файлом и прикладной программой (чтение/запись);

- операции над файлом как единым целым (открытие/закрытие, копирование, обьединение, перемещение, удаление);

- служебные операции (изменение атрибутов, владельца, права доступа, и т.п);

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

Операции чтения – один параметр задает буфер , куда нужно поместить прочитанные данные, другой указывает скоько данных надо прочитать, системы считывает требуемое число байт из файла начинаяс указателя чтения записи в этом файле и перемещает указаетль к концу считанной последовательности, если файл окончился раньше, считывается столько данных, сколько оставалось до его конца, операция возвращает кол-во считанных байтов. Если файл был открыт только для записи операция возвратит ошибку. 3 – Операция записи в файл – 1 параметр задает начало буфера данных, другой параметр указывает сколько данных надо записать. Система записывает требуемое число байт в файл, начиная с указателя чения записи в этом файле. Перезаписывая хранившиеся после указателя данные и перемещает указатель к концу записанного блока. Если файл окончился раньше, его длинна увеличивается. Операция возвращает кол-во записанных байт. Если файл был открыт только для чтения операция возвратит ошибку. Дополнительные операции над файлом : операции над самим файлом и над дескриптором открытого файла. Например в ПОСИКСЕ дублирование дескриптора. В результате получается 2 дескриптора, связанных с одним и тем же файлом. Операция обрезания файла для заданной длинны (truncate) , или блокировки участка файла.(например в СУБД). Отображение участка файла в виртуальное адресное пространство процесса. (позволяет выполнять команды которые наход в файле). Параметр этой операции задает права доступа к отображенному участку (на чтение на запись и выполнение).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]