Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры к ГОСамчасть2.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.88 Mб
Скачать
  1. Файловая система ос: состав, управление, типы файловых систем; логическая и физическая организация файла, методы доступа, операции над файлами, отображаемые файлы.

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

Файловая система включает:

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

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

  • комплекс системных программных средств, реализующих управление файлами, в частности: создание, уничтожение, чтение, запись, именование, поиск и другие операции над файлами.

Управление

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

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

Типы файловых систем:

FAT-16,FAT-32, NTFS, HPFS,NFS и др.

Файловая система FAT-16 – старая файловая система MS-DOS. В ней используются 16-разрядные дисковые адреса, что ограничивает размер дискового раздела двумя Гигабайтами.

Файловая система FAT-32 – используются 32-разрядные дисковые адреса и поддерживаются дисковые разделы размером до 2 Тбайт.

Файловая система NTFS- используются 64-разрядные дисковые адреса и теоретически может поддерживать дисковые разделы размером до 264 байт (по техническим причинам их размер ограничен меньшими размерами).

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

Логическая организация файла

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

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

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

«-» - во время создания файла заранее не известна его длина, а значит не известно, сколько памяти надо зарезервировать для этого файла;

«-» - при таком порядке размещения неизбежно возникает фрагментация, и пространство на диске используется не эффективно, так как отдельные участки маленького размера (минимально 1 блок) могут остаться не используемыми.

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

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

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

Связанный списка индексов -с каждым блоком связывается некоторый элемент - индекс. Индексы располагаются в отдельной области диска . Если некоторый блок распределен некоторому файлу, то индекс этого блока содержит номер следующего блока данного файла.-> для доступа к произвольному месту файла достаточно прочитать только блок индексов, отсчитать нужное количество блоков файла по цепочке и определить номер нужного блока; данные файла занимают блок целиком, а значит имеют объем, равный степени двойки.

Методы доступа и операции над файлами

В разных файловых системах может быть определен свой список дифференцируемых операций доступа. Этот список может включать следующие операции: создание файла, уничтожение файла, открытие файла, закрытие файла, чтение файла, запись в файл, дополнение файла, поиск в файле, получение атрибутов файла, установление новых значений атрибутов, переименование,

выполнение файла, чтение каталога.

Различают два основных подхода к определению прав доступа:

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

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

Отображаемые в память файлы

По сравнению с доступом к памяти, традиционный доступ к файлам выглядит запутанным и неудобным. Некоторые ОС обеспечивают отображение файлов в адресное пространство выполняемого процесса. Это выражается в появлении двух новых системных вызовов: MAP (отобразить) и UNMAP (отменить отображение). Первый вызов передает операционной системе в качестве параметров имя файла и виртуальный адрес, и операционная система отображает указанный файл в виртуальное адресное пространство по указанному адресу.

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

Хотя отображение файлов исключает потребность в выполнении ввода-вывода и тем самым облегчает программирование, этот способ порождает и некоторые новые проблемы.

«-» -для системы сложно узнать точную длину выходного файла

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

«-» - файл может быть больше, чем сегмент, и даже больше, чем все виртуальное адресное пространство. Единственный способ ее решения состоит в реализации вызова MAP таким образом, чтобы он мог отображать не весь файл, а его часть. Хотя такая работа, очевидно, менее удобна, чем отображение целого файла.

  1. Основные идеи и сущность ООП: использование объекта в качестве основной компоненты программы и децентрализация управления, реализуемая представлением программы совокупностью взаимодействующих объектов, моделирование поведения объектов реального мира, наглядное представление объектов, создание и использование АТД, производные АТД.

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

ООП — это программирование, сфокуси­рованное на данных, причем данные и поведение неразрывно связаны. Вместе дан­ные и поведение представляют собой класс, а объекты являются экземплярами клас­са. ООП рассматривает вычисления как моделирование поведения. То, что модели­руется, является объектами, представленными вычислительной абстракцией.

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

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

Принципы ООП:

  1. Абстракция - расширяемость типов - способность добавлять типы, определяемые пользователем для того, чтобы дополнить ими встроенные типы. Один из принципов ООП заключается в том, чтобы типы, определяемые пользователем, должны обладать теми же привилегиями, что и встроенные типы;

  2. Инкапсуляция - свойство языка программирования, позволяющее пользователю не задумываться о сложности реализации используемого программного компонента, а взаимодействовать с ним посредством предоставляемого интерфейса, а также объединить и защитить жизненно важные для компонента данные. При этом пользователю предоставляется только интерфейс — спецификация объекта.

  3. Наследование. Классы могут быть организованы в иерархическую структуру с наследованием свойств. Дочерний класс наследует атрибуты родительского класса.

  4. Полиморфизм. Объекты реагируют на одно и тоже сообщение строго специфичным для них образом.

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

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

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

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

Есть уверенность, что использование ООП принесет дивиденды в нескольких от­ношениях. Решение будет более модульным, следовательно, более понятным и про­стым для модификации и обслуживания. Кроме того, такое решение будет более при­годно для повторного использования. Например, если в программе нужен стек, то он легко заимствуется из существующего кода. В обычном процедурном языке програм­мирования такие структуры данных часто «вмонтированы» в алгоритм и не могут экспортироваться.

Абстрактный тип данных – определяемые пользователем расширения исходных типов языка. АТД состоит из набора значений и операций, которые могут влиять на эти значения. Значения описываются полями класса, а операции – методами.

22. Основные концепции ООП: инкапсуляция и расширяемость типов, семантика объекта - данные как отражение состояния объекта и методы как средства обеспечения взаимодействия объектов; представление данных, классификация методов - конструкторы, деструкторы, селекторы, модификаторы; классы и абстрактные типы данных, наглядное представление классов, объекты как экземпляры классов, основные действия с объектами - создание, инициализация, обработка, разрушение.

Свойства ООП:.

  1. Моделирование действий из реального мира;

  2. Инкапсуляция - способность отличать внутреннее состояние объекта и поведение от его внешнего состояния и поведения;

  3. Абстракция (расширяемость типов) способность добавлять типы, определяемые пользователем для того, чтобы дополнить ими встроенные типы. (типы, определяемые пользователем, должны обладать теми же привилегиями, что и встроенные типы);

  4. Наследование - способность создавать новые типы, повторно исп-я, описание существующих типов;

  5. Полиморфизм с динамическим связыванием - способность объектов быть ответственными за интерпретацию вызова функции.

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

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