Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

1. Слежение за временем суток (увеличение на единицу счетчика при каждом импульсе сигнала времени часов).

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

3. Ведение учета использования процессора.

4. Обработка системных вызовов alarm, инициированных пользователем (пользовательских будильников).

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

6. Наблюдение, анализ и сбор статистики.

«Мягкие» таймеры

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

Проверка значений «мягких» таймеров происходит при обращении к ядру при следующих событиях:

НЕ нашли? Не то? Что вы ищете?

· системных вызовах;

· ошибках преобразования адреса TLB;

· страничном прерывании;

· прерывании ввода-вывода;

· временном отсутствии работы для процессора.

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

Клавиатура

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

Дисплей

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

Графические терминалы позволяют создать для пользователя более дружественный графический интерфейс пользователя, основными элементами которого являются окна, пиктограммы, меню, указывающее устройство. ПО графического интерфейса может быть реализовано либо на уровне пользователя (как это сделано в UNIX), либо включено в состав ядра ОС (как в случае Windows).

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

Первый подход реализован в системе X Windows (рис. 6.2).

Рис. 6.2. Взаимодействие терминала и сервера в системе X Windows

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

Система X Windows на самом деле не является полным графическим интерфейсом пользователя, а лишь определяет протокол взаимодействия между X-клиентом и X-сервером. Для предоставления полного графического интерфейса поверх X Windows запускаются другие уровни ПО:

· Xlib – набор библиотечных функций, необходимых для доступа к функциям X Windows, который образует низкоуровневый базис;

· Intrinsics (встроенные средства) - набор инструментальных средств (кнопки, полосы прокрутки и т. п.), представлен уровнем сверху над Xlib;

· Motif - предназначен для задания стандарта на графический интерфейс пользователя (наиболее популярный стандарт);

· X-клиентский процесс, называемый оконным менеджером, - занимается управлением окнами.

При запуске программы в системе X Windows устанавливается соединение с X-сервером с помощью надежного протокола (чаще всего TCP/IP), по которому передаются четыре типа сообщений:

· команды рисования от программы к рабочей станции;

· ответы рабочей станции на запросы программы;

· объявления о различных событиях, например ввод с клавиатуры или «мыши»;

· сообщения об ошибках.

В сумме X-протокол содержит сотни сложных сообщений для управления окнами, рисования геометрических фигур и отображения текста. В противовес ему можно отметить систему SLIM (Stateless Low-level Interface Machine), в основе которой находится терминал, содержащий лишь дисплей, клавиатуру и «мышь» без какого-либо пользовательского ПО. Терминалы такого типа называют также «тонкими» клиентами. В этом случае терминал хранит в своем буфере образ экрана, который он перерисовывает локально, но модифицирует его частично по командам, получаемым от сервера. В SLIM определено всего пять сообщений от сервера: SET (заполнить прямоугольник новыми пикселами), FILL (залить прямоугольник указанным цветом), BITMAP (отобразить приложенное к сообщению изображение с масштабированием), COPY (копировать прямоугольник из одной области буфера в другую), CSCS (преобразовать систему цветов из терминальной в телевизионную).

Лекция 7. Файловые системы ОС

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

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

· долговременное и надежное хранение информации (обеспечиваемое средствами энергонезависимого АО и надежного программного кода);

· совместное использование информации (естественное, легкое, но в то же время контролируемое и безопасное).

Эти цели реализуются средствами ФС. Файловая система – это часть ОС, включающая:

· совокупность всех файлов на диске;

· наборы структур данных, используемых для управления файлами (каталоги файлов, индексы, таблицы распределения блоков диска);

· комплекс системного ПО, реализующего различные операции над файлами (создание, чтение, запись, удаление, поиск и т. п.).

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

Именование файлов

Файлы являются абстрактным механизмом работы с информацией на диске. Важной характеристикой любого механизма абстракции является именование управляемых объектов. Точные правила именования файлов различаются от системы к системе, но чаще всего именем файла является строка некоторой длины (от 8 до 255 символов), содержащая символы определенного алфавита (например, латинского), цифры, а также специальные символы. В одних ФС различаются строчные и прописные символы, для других – наличие расширения у файла является обязательным (в случае Windows обработка файла напрямую зависит от его расширения), для третьих расширение является понятием достаточно условным. Подобное имя файла называется также простым именем и идентифицирует его в пределах одного каталога. Полное имя представляет собой цепочку простых имен всех каталогов, через которые проходит путь от корня до данного файла. Таким образом, полное имя является составным, в котором простые имена отделены друг от друга принятым в ОС разделителем. Файл может быть также идентифицирован относительным именем (которое также является составным), определяемым относительно текущего каталога.

Структура файла

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

Второй вариант организации представляет собой первый шаг по направлению к структуре (его развитием стали СУБД). Файл представляет собой последовательность записей фиксированной длины, каждая со своей внутренней структурой. Важным является то, что операции чтения-записи работают с минимальным неделимым блоком размером в одну запись. Данный подход обозначился в то время, когда обмен данных с ИВС происходил с помощью перфокарт с пробитыми отверстиями (на каждой помещалось 80 колонок, представляющих побитовое задание символов). ОС на мэйнфреймах оперировали файлами, состоящими из записей размером 80 символов (образов перфокарт). Подход применялся в ОС OS/360, DEC RSX, VMS.

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

Типы файлов

Многие ОС поддерживают различные типы файлов. Например, в системах Windows и UNIX проводится различие между регулярными (обычными) файлами и каталогами. В системе UNIX также различаются символьные и блочные специальные файлы. К регулярным файлам относят все те, которые содержат информацию пользователя. Каталоги – это системные файлы, обеспечивающие поддержку структуры файловой системы. Символьные специальные файлы имеют отношение к вводу-выводу и используются для моделирования последовательных устройств ввода-вывода, таких как терминалы, принтеры и сети. Блочные специальные файлы используются для моделирования дисков. Регулярные файлы являются либо ASCII-файлами (текстовыми файлами, воспринимаемыми пользователем без какого-либо преображения), либо двоичными файлами.

Атрибуты файла

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

Таблица 7.1: Некоторые атрибуты файлов

Атрибут

Значение

Защита

Кто и как может получить доступ к файлу

Создатель

Идентификатор пользователя, создавшего файл

Владелец

Текущий владелец

Флаг «только чтение»

0 –для чтения / записи, 1 – только для чтения

Флаг «скрытый»

0 – нормальный, 1 – не показывать в перечне файлов

Флаг «системный»

0 – нормальный, 1 – системный

Флаг «архивный»

0 – заархивирован, 1 – требуется архивация

Флаг ASCII/двоичный

0 – ASCII, 1 – двоичный

Режим доступа

0 – последовательный доступ, 1 – произвольный

Флаг «временный»

0 – обычный файл, 1 – после окончания работы процесса файл следует удалить

Флаги блокировки

0 – файл не заблокирован, отличный от нуля – доступ к файлу заблокирован

Время создания

Дата и время создания файла

Время последнего доступа

Дата и время последнего доступа к файлу

Время последнего изменения

Дата и время последнего изменения файла

Текущий размер

Количество байтов в файле

Операции с файлами

Работа с файлами в ОС может быть организована двумя способами. Первый из них требует наличия специализированного набора системных вызовов (create, open, write, read, append, delete, seek, get/set attributes и т. п.). Другой характеризуется тем, что работа с содержимым файла осуществляется путем его наложения на адресное пространство процесса, после чего чтение / запись производится операциями обращения к памяти. В этом случае набор системных вызовов для работы с файлами является более облегченным (map, unmap, delete, get/set attributes).

Организация иерархической ФС

Простейшая форма системы каталогов состоит в том, что имеется один каталог, в котором содержатся все файлы (данный подход был применен в ОС CP/M). Иногда его называют корневым каталогом, но поскольку он в таких системах единственный, то его название не существенно. Недостаток подобной системы заключается в том, что различные пользователи могут случайно задать для своих файлов одинаковые имена, что приведет к затиранию данных одного пользователя данными другого.

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

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

Для того чтобы уяснить принципы функционирования ФС, после рассмотрения прикладных аспектов организации необходимо перейти к ее изучению с точки зрения разработчика системы.

Физическая организация данных на диске

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

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

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

Структура ФС

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

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

Рис. 7.1. Возможная структура файловой системы

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8