Файл: Комплекс управляющих и обрабатывающих программ.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.12.2023

Просмотров: 38

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


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

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

В Lazarus это делалось примерно так:

AssignFile(f,’C:\mycat\user11\t1.txt’);

Reset (f);- вот здесь устанавливается некий «статус» файла- открыт только в режиме чтения, и этот статус должен быть «понят» и «принят к сведению» ОС

При открытии файла ОС формирует некоторый набор данных, который ей необходим для работы с содержимым файла. Этот набор называется файловым дескриптором и имеет тип Handle. Этот дескриптор можно сформировать и программно на ЯВУ с помощью тех же системных вызовов (например, CreateFile, OpenFile и т.д.)

  1. Закрытие файла (например, CloseFile(f))- на эту ситуацию ОС тоже должна отреагировать, например, изменить статус доступа к файлу со стороны процесса (одного или нескольких)

  2. Создание нового файла- и здесь ОС должна «увидеть» новый абстрактный объект-файл, присвоить ему уникальный идентификатор (тот самый дескриптор) и при необходимости передавать этот дескриптор другим процессам(которые что-то с этим файлом «делают»- на низком уровне)

  3. Низкоуровневые операции чтения/записи- работа контроллеров с секторами жесткого диска, флеш-носителями…(обмен данными между файлами)

  4. Управление файловым указателем (с каждым открытым файлом связывается понятие файлового указателя- в каждый момент времени показывается следующий относительный адрес внутри файла, с которым можно произвести обмен данными



Архитектура файловой системы

Пользовательская программа (режим пользователя)

Запрос к ядру ОС на создание или открытие файла (API)- переход в режим ядра

Файлы с различным режимом доступа(последовательный, прямой доступ, индексированные файлы..)

Логический ввод-вывод (авторизация доступа к файлам, поддержка иерархической структуры файлов/каталогов)

Диспетчер (супервизор) базового ввода- вывода (выбор физического устройства, планирование распределения внешней памяти

Уровень физического ввода/вывода- обращение к таблице, хранящей сведения о файлах (FAT), «работа» алгоритмов выделения дискового пространства

Работа драйверов устройств (обработчики прерываний, обеспечивающих инициализацию выполнение и завершение операций ввода/вывода)

Работа с оборудованием (контроллеры диска, доступ к физическим блокам диска- цилиндры, головки, секторы)


В настоящее время – файловая система NTFS (New Technology File System)- сведения о файлах (логическое имя, владелец, права доступа, «цепочки» номеров кластеров, в которых хранится файл на носителе..) хранятся в MFT (Master File Table) – таблице

Процессы и потоки

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

С точки зрения ОС процесс- внутренняя единица работы, потребляющая процессорное время и другие ресурсы вычислительной системы- ЗАЯВКА на потребление системных ресурсов

Ресурсы:

- Программные (адресное пространство, драйверы, системные сервисы и службы..)

-Аппаратные (процессоры, основная память, дисковая память, порты ввода/вывода..)

Поток (нить, Thread)- наименьшая единица обработки, исполнение которой может быть назначено операционной системе. Чаще всего, поток- часть процесса, именно поток получает процессорное время

Процесс- «контейнер» для хранения потоков, выполняющихся внутри него



Многозадачность (multitasking)- способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько процессов (потоков). Эти процессы совместно используют не только процессорное время, но и другие ресурсы вычислительной системы. ОС должна поддерживать очередь заявок процессов на ресурсы.

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

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

Основные ресурсы, которыми владеют процессы (и потоки):

- образ исполняемого машинного кода (.com, .exe, байт- код Java- машины…)

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

-виртуальное адресное пространство- совокупность адресов памяти, которыми может манипулировать программный модуль процесса. Каждый процесс работает в своем виртуальном адресном пространстве, чтобы не допустить вмешательства в свою работу других процессов и не допустить прямого доступа к своим командам и данным

-дескрипторы ресурсов ОС (неотрицательное целое число- идентификатор процесса, состояние процесса, степень привилегированности процесса). Для получения дескриптора файла его необходимо открыть функцией CreateFile, а для получения дескриптора процесса (THandle) процесс необходимо создать системной функцией CreateProcess



-контекст процесса (состояние его операционной среды, которое необходимо знать, для того, чтобы процессор мог корректно продолжить выполнение процесса). Режим работы процессора , состояние регистров процессора, указатели на открытые файлы, информация о незавершенных операциях ввода-вывода, код ошибок выполняемых процессом системных вызовов..

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

Алгоритм создания процесса:

  1. Создать дескриптор и контекст процесса

  2. Включить дескриптор процесса в очередь готовых процессов

  3. Загрузить исполняемый код процесса в оперативную память

Алгоритмы планирования процессов

Невытесняющая многозадачность (non- preemptive multitasking)- способ планирования процессов, при котором активный процесс выполняется до тех пор, пока он сам не отдаст управление планировщику ОС для того, чтобы он выбрал из очереди другой готовый к выполнению процесс

Вытесняющая многозадачность (preemptive multitasking)-способ, при котором решение о переключении процессора с выполнения одного процесса на выполнение другого принимается планировщиком ОС, а не самой активной задачей.