Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Шпоры по СПО - файл Шпоры по СПО.doc


Шпоры по СПО
скачать (132 kb.)

Доступные файлы (1):

Шпоры по СПО.doc451kb.23.06.2009 22:18скачать

содержание

Шпоры по СПО.doc


  1. Системные программы, их классификация (системы программирования, операционные системы, обслуживающие программы). Функции операционных систем.

Системные программы:

1) программы, которые решают языковую проблему общения с пользователем:

а) языки программирования;

б) библиотеки

  1. управляющие программы (ОС)

  2. обслуживающие (сервисные) программы, утилиты

ОС - это комплекс взаимосвязанных программ, предназначенных для повышения эффективности ЭВМ путём рационального управления его ресурсами и для обеспечения удобств пользователя путём предоставления «виртуальной машины».

Функции ОС:

  1. управление ресурсами вычислительной системы (процессами, памятью, УВВ, файлами, данными и т.д.): ОС ведёт учёт за ресурсами; по требованию процессов удовлетворяет запросы на ресурсы (распределяет м/у процессами); разрешает конфликты м/у процессами по ресурсам. Критерии: пропускная способность ВМ;время реакции на внешние события.

  2. предоставление пользователю расширенной виртуальной машины – предоставляется набор команд высокого уровня (открыть файл и т.н.). Достоинства:

а) реализуется через системные вызовы (API);

б) легче работать, легче программировать;

в) скрывает от программиста аппаратные особенности ВМ;

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

д) механизм системных вызовов – это способ выполнять критические действия по запросу пользовательских программ (переход из режима задач в режим ядра);

е) стандартизированное представление внешних устройств различных классов (представление устройств в виде файла - стандартные устройства).

  1. обеспечение интерфейса пользователя: может отсутствовать; может иметь вид командной строки; м.б. графическим.

  2. организация межмашинного взаимодействия (сетевые, распределённые ОС);

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

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

  5. обеспечение эффективного выполнения операций вв/выв;

  6. обеспечение отказоустойчивости и резервирования;

  7. обеспечение безопасности:

а) аутентификация - проверка истинности пользователя;

б) авторизация - проверка прав пользователя;

в) аудит - ведение журналов, протоколов с т. зр. безопасности;


  1. ^ История развития операционных систем.

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

  1. Нулевое поколение (40-е г.г.). В первых ВМ не было ОС, пользователи имели полный доступ к машинному языку, все программы писались непосредственно в машинных командах.

  2. Первое поколение (50-е г.г.). ОС были разработаны с целью ускорения и упрощения перехода с задачи на задачу. Это было начало систем с пакетной обработкой, которые предусматривали объединение отдельных задач в группы или пакеты.
    Запущенные в решение задача получала в свое распоряжение все ресурсы машины. После завершения задачи управление возвращалось ОС, которая приготавливала ВМ к решению следующей задачи. Пример: General Motors- IBM701.

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

  4. Третье поколение (60-70-е). ОС появилась с представлением фирмой IBM в 1964г семейства компьютеров System 360 (машины общего назначения). Эти ОС были многорежимными системами. Появились ОС UNIX (Bell Laboratories), OS/360, EC
    ЭВМ. Сложность проектирования отладки и поддержки ОС породила технологию конструирования программ - модульность, совместимость и мобильность ОС.

  5. Четвертое поколение (70-80-е). Сетевые ОС, клиент-серверная архитектура, данные как ресурсы, СУБД, защита данных при сетевой передаче, распределительная концепция виртуальных машин (пользователь имеет дело с функциональным
    эквивалентом компьютера). Появление ПК - благодаря появлению микропроцессоров Intel. ПК стали использоваться в качестве интеллектуальных терминалов для больших машин. Разделение производителей на производителей
    аппаратуры и программных средств. Появился язык C++, концепция ООП.

  6. Пятое поколение (90). Принцип распределенной обработки данных. Появление распределенных сетевых ОС, в которых основные функции реализуются на распределенных компьютерах в пределах сети процессора. Получили развитие и
    широкое распространение глобальные сети. Наблюдается повсеместное распространение ПК. Происходит развитие интерфейса пользователя в плане удобства. Развитие концепции виртуальных машин в плане совместимости м/у
    различными аппаратными платформами.

Тенденции развития ОС:

  1. Повышение функциональной сложности, насыщенности.

  2. Повышение степени абстрагирования от аппаратуры (мобильности).

  3. Дружественность к оператору.

Степень распределённости обработки.


  1. Ядро операционной системы. Функции ядра. Объекты ядра. Объекты ядра на примере ОС Windows. Микроядро.

Все операции, связанные с процессами выполняются под управлением той части ОС, которая называется ее ядром. Ядро - это небольшая часть кода ОС, но относится к числу наиболее интенсивно используемых компонентов системы, поэтому ядро резидентно размещается в основной памяти. Функции ядра: обработка прерываний, создание и уничтожение процессов, синхронизация, диспетчеризация, поддержка операций в/в, управление работой файловой системы. Вход в ядро осуществляется по прерываниям. Когда ядро реагирует на данное прерывание, оно запрещает другие. После идентификации поступившего прерывания, ядро передает его обработчику - специальному системному процессу. Запрет прерываний обеспечивает предотвращение повторного входа в не реентерабельное ядро. Объектами ядра называются блоки памяти, выделенные ядром и доступные только ядру. Системы создает и оперирует несколькими типами объектов ядра: каналами, мьютексами, семафорами, «почтовыми ящиками», процессами, файлами проецируемыми в память, событиями, файлами, потоками, и др. Объекты ядра имеют описатели (handle) - целое число или указатель на объект. Объекты, как правило, наследуются. Объекты можно создавать, уничтожать, открывать и закрывать по средствам системных вызовов ОС по просьбе внешней программы. Микроядро отличается от обычного ядра тем, что в нем содержится основные, более общие функции управления процессами, благодаря чему пользователь может сам добавлять к микроядру новые функции и расширять существующие. Таким образом, обеспечивается более эффективная защита ядра, более высокая производительность. Микроядро изолирует все Машинно-зависимые, команды, содержит ограниченный набору услуг с малым количеством системных функций. Следовательно, обеспечивает переносимость, расширяемость и надежность.


  1. ^ Методы вызова системных функций ядра в различных ОС.

Системные функции в ОС DOS вызываются через программные прерывания (регистр прерываний, код ошибки).

В Windows системные функции хранятся в библиотеках (DLL) и вызываются по средством API.

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

В QNX микроядро содержит всего 14 команд, занимает 8Кб (размещается в КЭШ) и работает очень быстро. Выполняет функции: планирование (управление загрузкой ЦП), обработка прерываний, сетевые службы самого низшего уровня. Общение с микроядром реализуется с помощью сообщений. Возможны надстройки ядра: менеджер процессов, менеджер внешних устройств, управление памятью и файловой системой.

Вызов системных функций скрыт от программистов, происходит при помощи стандартных функций.


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

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

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

Интерпретатор - это вид транслятора, который выполняет перевод непосредственно во время исполнения программы (BASIC, FOXPRO), что удобно для отладки, но быстродействие при этом очень низкое.

Языки высокого уровня: проблемно ориентированные, процедурно-ориентированные, объектно-ориентированные.

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

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


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

Языки и средства программирования различных уровней (редактор связей, загрузчик, отладчик, языки сценариев и визуального программирования), их особенности, примеры использования Когда нужно выполнять программу, ее загрузочный модуль, сформированный с помощью редактора связей, может быть загружен немедленно, т.е. без накладных затрат времени на повторное объединение отдельных частей программы. Загрузчики выполняют размещение команд и данных программы в ячейках основной памяти. Виды загрузчики:

  • Абсолютный - размещает в те ячейки, адреса которых указаны в программе на машинном языке.

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

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

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

Отладчик выполняет программы в заданном режиме с целью поиска, обнаружения и локализации ошибок. Примеры: Softlce, Debug (Windows), gdb, trace (Unix).

Языки сценариев (скриптов) - это языки сверхвысокого уровня. Shell (sh, bash, zsh), язык сценариев ВД (открыть, вставить, и т.п.), язык при общении с модемом. В качестве команд используются отдельные модули. Бывают как проблемно-ориентированные, так и общего назначения.
7. Этапы проектирования и выполнения программ.

  1. Алгоритмизация.

  2. Ввод программы в текстовом редакторе: необходимо подать, входные данные в виде текста исходной программы на вход компилятора.

  3. Получить от компилятора результаты его работы в виде набора объектных файлов.

  4. Подать, весь набор объектных файлов вместе с необходимыми библиотеками подпрограмм на вход омпоновщика.

  5. Получить от компоновщика единый файл программы (*.ехе) и подготовить ею к выполнению с помощью загрузчика.

  6. Поставить программу на выполнение, при необходимости использовать отладчик для проверки правильности выполнения программы и обнаружения и исправления ошибок.


8. Процессы и потоки управления (thread). Состояния процессов и потоков (выполнение, готовность, блокировка, приостановка). Статические и динамические приоритеты потоков.

Процесс — это программы после загрузки в память и запущенный на выполнение, при этом в ОС создаётся объект с идентификатором и параметрами этого процесса.

Поток управления - это текущее состояние процесса. Управление ресурсами с т. зр. многозадачности: вытесняющей (Windows, Unix, Mac, Os/2) - асинхронное планирование; кооперативной (NetWare, Win 3.1) - высокие требования к надёжности самих программ. Инициатором предоставления ЦПУ является не внешнее событие, а сами процессы -синхронное переключение. Недостаток кооперативной: если зависнет процесс, то зависнет вся система. Достоинство: не нужна искусственная синхронизация процессов.

Организация управления смены состояния процессов и потоков: однопоточный процесс, многопоточный - поток.

Рассмотрим 3 основные состояния процессов (потоков):

  1. Выполнение – данному процессу (потоку) предоставлен ЦПУ;

  2. готовность: если бы процесс мог сразу начать использовать процессорное время;

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

  4. приостановка (редкое): нехватка каких-то ресурсов.



Очередь бывает FIFO или приоритетная. Приоритет: статический и динамический. Статические приоритеты не изменяются и относятся к базовому уровню (IDLE, NORMAL, HIGH, REAL TIME). Механизмы динамических приоритетов реагируют на изменение состояний процесса. Начальное состояние приоритета, присваиваемое процессу, действует в течение короткого периода времени, после чего ОС назначает новое, более подходящее.

Приоритет выше для тех операций, кот больше времени проводят в состоянии блокировки. Повышение/понижение приоритета м.б. произведено ОС или самим процессом (Н-р, активные и пассивные окна).

Если у процесса низкий приоритет и он очень долго не выполняется, ОС повышает его приоритет.

Поток — это текущее состояние аппаратуры относительно потока/процесса. Поток = контекст.
^ 9. Операции над процессами и потоками. Родительские и дочерние процессы. Наследование объектов ядра.

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

  1. создание нового;

  2. завершение;

  3. управление приоритетами;

  4. приостановка;

  5. возобновление;

  6. переход в другое состояние.

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

Над процессами:

1) создание (чаще всего путём наследования):

а) создаётся новый объект ядра с идентификатором типа «процесс»;

б) объекту присваивается начальный уровень приоритета;

в) выделяется некоторый начальный ресурс (файловый дескриптор);

г) порождаются путём размножения наследуемого (в ОС UNIX fork());

д) инкрементирование счётчика процессов

2) завершение (уничтожение)

а) прекращается выполнение всех потоков;

б) созданные объекты процесса уничтожаются, а открытые им объекты ядра закрываются (файлы, память);

в) устанавливается код завершение, передаваемый в родительский процесс;

г) декрементируется счётчик процессов.
^ 10. Параллельные процессы (потоки). Независимые и асинхронные процессы (потоки). Разделяемые данные. Критические участки.

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

Когда процесс производит обращение к разделяемым данным, то говорят, что он находится в своём критическом участке. Необходимо в случае, если один процесс находится в своём КУ, исключить возможность вхождения для всех других процессов (потоков) в их КУ.

Комплекс мер по предотвращению этого называется взаимоисключением КУ (mutual exclude). Обеспечение взаимоисключения является одной из ключевых проблем параллельного программирования. Существует много способов решения этой проблемы: программные (алгоритм Деккера) и аппаратные (неделимая команда ЦП, н-р, testandset(x,y) или testandclr(x,y)); частные и глобальные; на уровне ОС реализуются примитивы взаимоисключения (семафор Дейкстры, критическая секция, мьютекс и событие).
^ 11. Предотвращение конфликтов между процессами (потоками), взаимоисключение критических участков. Реализация примитивов взаимоисключения (алгоритм Деккера, семафоры).

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

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




П1вн=да/нет П2вн=да/нет П1х=да/нет П2х=да/нет

(вн - внутри, х - хочет войти)




1. Алгоритм Деккера: не требует специальных команд

Первый метод: не гарантирует работу при одновременной попытке - решение поменять первые два блока и изменить смысл переменных - второй метод. Второй метод: когда оба хотят - бесконечное вкладывание процессов. Деккер ввел переменную «преимущество» Преим=1/2.



+ реализуется программно;

+ гарантирует от одновременного попадания и бесконечного вкладывания;

– усложняется для большего числа процессов ( >2 ).

  1. Аппаратный: testandset неделимая! = проверяет одну переменную и по условию устанавливает другую.

  2. Семафоры. Семафор — это специальная защищенная переменная, состояние которой можно менять двумя специальными неделимыми командами: занять/освободить семафор: p(s)/v(s) и 3-ая команда - проинициализировать семафор. Типы семафоров:

  1. бинарный (s={0 - занят, закрыт, 1 - свободен});

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

Команды p(s) - занять семафор: если s>0, то уменьшить на 1, иначе ждать на s. v(s) -освобождение: если кто-то ждет на семафоре, то одному из них разрешить прохождение, иначе прибавить 1. Последовательность использования: 1. p(s). 2. КУ. 3. v(s). 4. прочее. 5. зацикливание.


  1. Средства синхронизации потоков в ОС Windows (критические секции, мьютексы, семафоры, события).

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

1. Критическая секция - это объект, к которому должен обратиться поток перед получением эксклюзивного доступа к каким-либо общим данным. Критические секции наиболее просты, но применимы для синхронизации потоков лишь в пределах одного
процесса. Операции: создание (lnitialize_), вход (Enter_), выход (Leave_), удаление (Delete ).

  1. Мьютекс (Mutex) - это объект ядра, имеющий 2 состояния (занят/свободен). Каждый мьютекс имеет своего хозяина, только он может освободить мьютекс. Операции: создание (Create_) - возвращает дескриптор handle и выполняется одним потоком; открытие (Ореn_) -возвращает дескриптор handle; WaitForSingleObject (handle) - ожидание, освобождение после критического участка (Release_), удаление CloseHandle(handle).

3. Семафор - используется для учета ресурсов. Когда у семафора запрашивается ресурс, ОС проверяет свободен ли он, и если свободен, то уменьшает счетчик доступных ресурсов, не давая вмешиваться другому потоку. Семафор имеет множество состояний. О - занят, 1, 2, 3 - свободен. Операции: создание (Create_), открытие (Open_), WaitForSingleObject (handle)

– ожидание, удаление CloseHandle(handle).

  1. Событие - имеет 2 состояния (занят/свободен) и управляется любым потоком любого процесса. Используется для контроля за окончанием какой-либо операции. Существует 2 типа событий: со сбросом вручную и с автоматическим сбросом. Первые используется для оповещения об окончании операции сразу нескольких потоков. Вторые – единственного потока. При этом объект событие переводиться в свободное состояние. Функции для первого типа: SetEvent - свободно, ReSetEvent - занято, WaitForSingleObject (handle) - ожидание. Для второго типа: CreateEvent, CloseHandle.

5. Ожидаемый таймер - это объект ядра, который самостоятельно переходит в свободное состояние через определенный интервал времени. Операции создание (CreateWaitableTimer), настроить (SetWaitebleTimer). Нет в Win 9x.


  1. Тупики (deadlock) и способы борьбы с ними. Примеры тупиковых ситуаций. Четыре необходимых условия возникновения тупика. Предотвращение тупиков.

^ 14. Обход тупиков, алгоритм банкира. Обнаружение тупиков и восстановление системы.

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




Модель Холта для систем из 2х процессов

Для продолжения работы нужен ресурс Р2 для П1, а для продолжения П2 нужен Р1.

4 условия, необходимых для возникновения тупика (должны выполняться все 4):

  1. монопольное выделение какого-либо ресурса.

  2. условие ожидания дополнительных ресурсов с удержанием предоставленных;

  3. неперераспределяемость ресурса;

4) условие кругового ожидания.
Методы борьбы:

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

  2. Обход тупиков. В этом методе допускается, что вероятность возникновения туника мала. Состояние системы надёжное, если ОС может обеспечить всем потокам завершение заданий за конечное время, иначе состояние ненадёжное. Цель средств обхода тупиков заключается в том, чтобы можно было предусмотреть менее жёсткие ограничения, чем в случае предотвращения тупиков, а тем самым обеспечить лучшее использование ресурсов. Алгоритм работы ОС при обходе тупиков называется алгоритмом Банкира. Он имитирует действия банкира, который располагает определённым источником капитала. Он выдаёт ссуды и принимает платежи. ОС должна обеспечивать распределение некоторого фиксированного числа одиночных устройств м/у некоторым фиксированным числом пользователей информацией. Каждый пользователь заранее указывает максимальное число устройств, которое ему потребуется во время выполнения. ОС примет запрос, если максимальная потребность этого пользователя не более t. Пользователь может занимать / освобождать устройства по одному. Иногда пользователю придётся ждать выделения дополнительного устройства. Но ОС гарантирует, что ожидание будет конечным. Пользователь гарантирует, что устройства будут освобождены в течение конечного времени, что определяет надёжное состояние вычислительной системы. Ресурсы выделяются пользователю, когда после этого запроса система будет оставаться в надёжном состоянии. Пример:







выделено

максимум




ПI:

1

4




П2

4

6




ПЗ

5

8





















































выделено

максимум

П1:

8

10

П2

2

5

ПЗ

1

3
Состояние надёжно, т.к. завершится Ненадёжное - может возникнуть тупик

П2, а потом и П1 (резерв 2) (резерв 1)

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

  1. Обнаружение - определение и нахождение тех ресурсов, которые стали причиной тупика. Методы восстановление после обнаружения тупика:

а) завершить процессы или один из них:

б) приостановка процесса с высвобождением ресурса (!)

в) возвращение к некоторой контрольной точке.
^ 15. Планирование загрузки процессоров. Три уровня планирования. Цели и критерии планирования.

Расписание работы ЦП - это когда и каким именно процессам следует выделять процессорное время - планирование. Разделяют на 3 уровня:

а) верхний – какие программы станут процессами, а какие подождут (человек запускает программу);

б) промежуточный - какие процессы приостановить или восстановить – выравнивание колебания системной загрузки;

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

Цели:

  1. дисциплина планирования должна быть справедливой - одинаково относиться к процессам. Например, не допускать бесконечного откладывания;

  2. обеспечить максимальную производительность всей системы и минимальные накладные расходы;

  3. обеспечить приемлемое время реакции системы на внешнее событие;

  4. системы должна быть предсказуема по времени выполнения программы;

  5. балансирование использования ресурсов (использовать в первую очередь недогруженные ресурсы);

  6. не допускать резкого снижения производительности системы при повышении нагрузки.

7) учитывать приоритеты;
Критерии планирования:

  1. ограничивается ли процесс вводом/выводом;

  2. ограничивает ли процесс ЦП;

  3. является ли процесс пакетным или диалоговым;

  4. приоритетность процессов;

  5. насколько обязательна является быстрота реакции;

  6. насколько часто при выполнении процесса возникают прерывания по отсутствию нужных страниц;

  7. насколько часто данный процесс приостанавливается из-за переключения на процесс более высокого приоритета;

  8. сколько времени уже получил данный процесс;

9) сколько времени ещё требуется процессу для завершения.


  1. ^ Дисциплины планирования с переключением потоков (вытесняющая многозадачность). Проблема выбора длительности кванта.

Дисциплины планирования

Без переключения процессов

С переключением процессов

Для пакетной обработки заданий. Пример: очередь FIFO, первыми самые короткие процессы (SJF)

С синхронным (кооперативная многозадачность

С асинхронным (вытесняющая)

+ нет проблем с синхронизацией (Win 3.1, Novell)

– зависший процесс вешает всю систему

По таймеру

+ повышение надежности

взаимоисключения

Методы планирования с переключением:

  1. циклическое (RR): при циклическом (круговом) планировании диспетчеризация потоков осуществляется по принципу FIFO, но каждый раз потоку предоставляется ограниченное количество времени ЦП (квант). Если процесс не завершается до истечения выделенного ему кванта, ЦП предоставляется следующему ожидающему процессу, а незавершённый процесс переходит в конец списка.

  2. планирование по принципу SRT: квант времени предоставляется тому процессу, который скорее закончится (более высокий приоритет). Интерактивным - более высокий приоритет. Более низко приоритетным - больший квант времени для уменьшения накладных расходов.

Есть универсальный алгоритм - многоуровневые очереди с обратными связями (адаптивный механизм). Новый процесс входит в сеть очередей с конца верхней очереди; он перемещается по этой очереди по принципу FIFO. Если задание завершается и освобождается ЦП, то поток покидает очереди. Если tкв истекает до того, как процесс освободит ЦП, то этот поток перемещается в конец следующей очереди более низкого уровня. Этот процесс в следующий раз получит ЦП, когда он достигнет начала данной очереди, если при этом первая очередь будет пуста. Если и процесс будет продолжать использовать полный квант времени, то он продолжит переход в конец очереди следующего нижележащего уровня. В системе предусматривается некоторая очередь самого нижнего уровня, которая организована по принципу RR и в которой процесс циркулирует, пока не завершится. Квант времени при переходе процесса на более низкий уровень увеличивается, но процессы, находящиеся в очередях более высокого уровня имеют и более высокий приоритет.
Выполняющийся процесс прерывается, если поступил новый процесс в очередь более высокого уровня. Более высокий приоритет процессам, лимитируемым вводом/выводом (диалоговые). Если задание полностью нс использовало свой квант (ожидает внешнее событие), то получив событие, оно перемещается в самую высокую очередь.



Суть: новый в первую очередь, если он полностью использовал квант времени, то идёт ниже. «+»:

  • интерактивным процессам даётся самый высокий приоритет и самый низкий квант;

  • процессам на вычисление даётся низкий приоритет и большой квант;

  • короткие процессы получают больший проритет4

  • адаптивный

Проблема выбора длительности кванта времени: Заключается в альтернативе между бесконечно малым и большим квантом времени.

  1. Если квант большой, то время реакции увеличивается и меньше накладных расходов -> повышается общая производительность;

  2. если очень малый, то наоборот.

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

человеком.

Если все процессы являются вычислительными, то переключение не требуется.

^ 17. Явный и неявный параллелизм программ. Методы автоматического распараллеливания программ. Мультипроцессорные ОС.

Мультипроцессорные системы позволяют воспользоваться преимуществами параллелизма. Мультипроцессорные системы: + повышение производительности; + повышение надежности (отказоустойчивости); + снижение стоимости процессорных элементов.. Классификация по силе связи м/у ПЭ:

  • многомашинные - слабая связь (через локальную сеть);

  • мультипроцессорные - сильная связь (на прямую по системной шине);

  • системы с очень длинным командным словом.
    Подходы реализации параллелизма:




  • на параллельном языке программирования (используется реже), недостатки и сложности: человек мыслит последовательно, надо писать изощренные программы, при автоматизации низкая эффективность, очень сложно отлаживать;

  • деление на процессы (используется чаше).

Явный параллелизм – указываются команды, которые должны быть выполнены параллельно. Неявный параллелизм - скрыт в последовательности команд.

Пример 1: следующая команда не пользуется результатом предыдущей.

Пример 2: метод расщепление цикла:

for (i=0; i<4; i++) a[i]++;

эквивалентно на параллельном языке:

cobegin:

а[0]++;

а[1]++;

а[2]++;

а[3]++;

coend;

Пример 3: редукция высоты дерева – используются арифметические законы (ассоциативный, коммутативный, дистрибутивный):

p+(q*r)+s - 3 операции (p+s)+(q*r) - 2 операции

Пример 4: правило никогда не ждать – неизвестен результат заранее:

  1. а=b*с; независимо от предыдущей операции выполняется
    if(a)d=10; распараллеливание; если все нормально, то

  2. e=d*f; выполниться за 2 цикла, иначе перевычислим

и получим те же 3 цикла, что и в обычном случае. Это тяжело реализуется из-за конвейерной обработки.
Мультипроцессорные ОС:

master -> slave

симметричные ОС

ОС работает на одном ЦПУ, а на остальных выполняются прикладные задачи.

+ ОС не обязательно должна быть реентерабельной;

+ процессоры могут быть разнотипными.

+ все процессоры равноправны;

+ более эффективны, но сложны;

+ одна ОС на всех ЦПУ;

+ функции ядра реентерабельны;

+ динамично перераспределяется нагрузка.




  1. ^ Управление основной (оперативной) памятью. Стратегии выборки и размещения блоков памяти. Связное и несвязное распределение памяти. Защита памяти.

Организация и управление операционной памятью ВМ - один из самых важных факторов,

определяющих построение ОС.

Критерии:

  1. Сколько программ может одновременно находиться в памяти (1-а или несколько).

  2. Как память закрепляется за программой (статически или динамически).

  3. Как происходит загрузка программы в оперативную память: по фиксированным
    адресам (отводиться участок памяти с фиксированного адреса) или с перемещаемыми
    разделами (нет жесткой привязки к адресу: DOS).

  4. Должна ли программа располагаться в памяти непрерывно (связанное размещение:
    DOS) или можно частями (несвязанное).

Чтобы обеспечить интенсивное использование ресурсов, ими нужно эффективно управлять.

Стратегии управления оперативной памятью: выборки (Когда?), размещения (Куда?), замещения (На чье место?).

1. Стратегия выборки (Когда?) - когда следует втолкнуть очередной блок программ или данных в оперативную память:

а) выборка по запросу - как потребовались данные: просто, но прерывается процесс.

б) с упреждением - основана на прогнозировании работы процесса, так как программа имеет локальный характер:

  • в пространстве - данные лежат наверняка рядом;

  • во времени - в ближайшее время к этой ячейке скорее всего обратимся;

2. Стратегия размещения (Куда?) - определяет в какой (куда) из свободных блоков памяти разместить загружаемый блок:

а) выбрать первый случайный, подходящий по размеру свободный блок;

б) выбрать наиболее подходящий - это меньший подходящий;

в) выбрать наименее подходящий - больший блок (скорее всего останется после этого довольно большой свободный блок).

3. Стратегия замещения (На чье место?) - определяет какой блок надо выгрузить из оперативной памяти, чтобы освободить требуемый объем памяти.

Самые первые ОС требовали связанного распределения памяти. Каждая программа должна была занимать один сплошной блок. При несвязанном распределении программа разбивается на несколько блоков или сегментов, которые могут размещаться в ОЗУ в произвольном месте. Это обеспечивает эффективное использование памяти. При связанном распределении памяти защита реализуется при помощи граничного регистра ЦП, который содержит самый старший адрес программы. Если другая программа пытается войти в эту область, то команда будет перехвачена, а программа будет завершена с ошибкой. В мультипроцессорных системах защита памяти реализуется при помощи нескольких граничных регистров, указывающих нижние и верхние границы зоны, запрещенной для записи. Такие средства для зашиты должны быть заложены в архитектуру процессора: проверка разрешения записи данных в конкретную ячейку.


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

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

V - виртуальные адреса, в которых написана программа; R - реальные - где она выполняется. Существует два способа реализации: страничная и сегментная. 3 привязки к адресам:

  • программист привязывается вручную - не оптимально;

  • привязка во время загрузки программы в намять;

привязка во время выполнения (для виртуальной памяти) – динамическое преобразование адреса (DAT) - преобразование аппаратное внутри процессора, обладает искусственной смежностью (смежные в одной области памяти могут быть несмежными в физической памяти), позволяет не учитывать физические свойства аппаратуры. В результате этого ЭВМ рассматривается не как конкретная машина, а как виртуальная машина - логическое средство реализации алгоритма.



а) Если блоки одинакового размера, то это страницы (обычно от 512б до 16Кб, у Intel имеет размер 4Кб): удобно перемещать (подойдет любой свободный блок), удобно искать внутри блока). Для защиты при страничной организации виртуальной памяти: на уровне страниц, но много данных; ввести уровень привилегий.

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

в) комбинированный - сочетание страниц и сегментов: защита на уровне сегментов, перекачка на уровне страниц.

^ Страничная организация

Каждый адрес делиться на номер страницы р и смещение d.

V=(p,d) R=(p',d) p <=> p'

Этапы преобразования адреса (упрощенное динамическое преобразование): Процесс обращения по виртуальному адресу V=(p,d).

  1. В таблице отображения страниц ищется строчка с номеров р, из которой определяется находиться ли страница в реальной памяти или нет. Если да, то в каком р', а если нет, то в каком месте в файле подкачки ее искать и подгружаем ее.

  2. Непосредственное преобразование адреса и обращение к реальной памяти.

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



Дополнительно в ТОС может храниться:

  • признак наличия в памяти;

  • атрибуты защиты (3 бита защиты: rwx - чтение, запись, исполнение);

  • уровень защиты (кольца защиты, привилегии, 2 бита);

2 бита для стратегии замещения (обращения и записи).

Ассоциативная память (пp: внутри процессора кэш):



AП - ассоциативный признак, к примеру адрес в R. Защита страниц - есть уровень защиты (2 бита), и смотрится при обращении кольцо программы, если 0 - можно, иначе - нельзя. Также используются атрибуты защиты.


  1. ^ Сегментная организация виртуальной памяти. Защита сегментов. Смешанная (странично-сегменная) организация виртуальной памяти.

У ЦПУ есть 6 сегментных регистров: cs,ss,ds,rs - 16 битные, gs и fs. В виртуальной памяти в них находиться номер записи в таблице дескрипторов сегментов. V=(s,d), где s - номер сегмента, d - смещение в рамках этого сегмента.



Дополнительная информация:

  • уровень защиты (2 бита);

  • тип сегмента (код, данные, стек);

  • наличие в ОЗУ;

атрибуты защиты (rwx - чтение, запись, исполнение);

  • размер сегмента.
    14б*32б->до64Тбю

Защита осуществляется аналогично предыдущему способу.

При комбинированном способе вместо смещения используется реальный адрес из страничной организации. Сегменты содержат целое число страниц, необходимое, чтобы все страницы сегмента находились в первичной памяти одновременно, а смежные страницы виртуальной памяти не обязательно должны оказаться смежными в оперативной памяти. Применяется 3-х мерная адресация: V=(s,p,d), где s - номер сегмента, р - номер страницы, d -смещение в рамках страницы.



Процесс делает ссылку на V(s,p,d). Самые последние страницы по времени обращения имеют соответствующие строки в ассоциативной таблице. Если такая строка есть, то адрес страницы в оперативной памяти р' соединяется со смещением d, страницы г. Если же адреса нет, то выполняется полное прямое отображение.


  1. ^ Управление виртуальной памятью. Свойство локальности программ. Стратегии выборки, размещения и замещения страниц. Файл временного хранения страниц.

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

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

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

Стратегии выборки: по запросу и с упреждением. Стратегии размещения: случайный выбор.

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

1. Замещение случайно выбранной страницы:

+ малые издержки;

+ справедлива ко всем процессам;

- рассчитана на слепое везение (может выгрузим страницу, которая тут же нужна);

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

Замещение самой старой загруженной страницы, для чего в странице стоит счетчик или время нахождения в оперативной памяти (например, принцип FIFO):
– длительный поиск;

– самая старая может активно использоваться, а мы ее выгрузим;

3. LFU. Замещение реже всего используемой страницы. В таблице страниц содержится интенсивность обращения:

- если только что загружена, то информация о частоте обращения недостоверна;

4. NUR. Замещение не использовавшейся в последнее время страницы. Предполагается,
что к страницам, к которым не было в последнее время обращений, и не будет в
будущем. Наиболее оптимальна.

Есть отличие записи от чтения (на запись еще надо и сохранять): 3 состояния страницы - 2 бита: бит обращения (периодически автоматически сбрасывается), бит записи (не сбрасывается никогда):

00 - можно сразу замещать;

10 - если нет 00, то ищем такие;

01 - если нет вышеперечисленных, то ищем такие;

11 - если нет вышеперечисленных, то ищем такие;
Из многих одинаковых выбирается случайно.

5. Стратегия поддержки рабочего множества (подмножество страниц, к которым в
течение последнего Δt обращался какой-то процесс, причем со временем рабочее
множество процесса меняется). Стратегия стремится к тому, чтобы текущее рабочее
множество страниц процесса находилось в ОЗУ. Наиболее сложная и адаптивная.



При переходе между рабочими множествами, наблюдается временное увеличение

выделенного количества процессу страниц, так как ОС не сразу выгружает ненужные

страницы.

– при поступлении нового процесса непонятно, какое его рабочее множество.


  1. Шина ЭВМ. Активные и пассивные устройства на шине. Методы обмена информацией между ЭВМ и устройством: опрос состояния, прерывание, прямой доступ к памяти. Захват шины. Арбитраж шины.


Шина ЭВМ - это физический канал передачи элементарных сигналов для связи устройств между собой. Устройства могут быть master и slave. В каждый момент времени активным может быть только 1-о устройство master (задатчик), slave (исполнитель). Шины бывают 3-х типов: ШД, ША, ШУ.

Методы обмена информацией между ЭВМ и устройствами:

  1. В цикле опрашиваем регистр устройства и проверяем, хочет ли это устройство получить обслуживание.

+ простота реализации;

- потеря машинного времени;

2. Устройство само оповещает нас, что оно требует обслуживания путем выработки аппаратного прерывания. Если прерывания разрешены, то устройство будет немедленно обслужено подпрограммой обработки прерывания:

+ экономия машинных ресурсов;

– если прерывания запрещены, то обслуживание будет отложено, возможна потеря прерывания;

Подпрограмма обработки прерывания должна начинаться с сохранения содержимого регистров ЦП и сопроцессора. После завершения, она должна восстанавливать контекст работы ЦП.

Перенос данных из внешнего устройства и обратно происходит под управлением контроллера ПДП (DMA) или через порты ввода/вывода. При ПДП организуется блочный обмен данными, при этом прерывание происходит 1 раз - при завершении и передаче блока данных.

Захват цикла шины - это способ предотвращения конфликтов при одновременных попытках обращения к памяти со стороны ЦП и контроллера ПДП. Приоритет определяет арбитр. У контроллера ПДП более высокий приоритет, чем у ЦП.


  1. ^ Обработка прерываний. Контекст процесса (потока). Особенности операционных систем реального времени.

Подпрограмма обработки прерывания должна начинаться с сохранения содержимого регистров ЦП и сопроцессора, после завершения она должна восстановить контекст работы ЦП.

Контекст потока (процесса) - это информация о текущем состоянии процесса: регистр счетчика команд; регистр указателя стека; регистр сопроцессора Реальное время - обработка информации в соответствии с ей поступлением. По времени реакции на внешние события ОС делятся на:

  1. ОС с жестким реальным временем: реакция должна укладываться в жестко определенные временные рамки; требование реентерабельности (способность ядра к повторному использованию своего кода); время реакции - единицы микросекунд (н-р, ОС QNX, бортовые системы, промышленность);

  2. ОС с мягким реальным временем: функции ядра нереентерабельны гарантируется среднее время реакции на внешние события: единицы миллисекунд, (н-р, Unix, DOS);

ОС вне реального времени: не гарантируется своевременная обработка внешних событий; запросы от внешних устройств могут быть потеряны (н-р, Windows).


  1. ^ Назначение и функции базовой системы ввода/вывода BIOS, ее место по отношению к аппаратуре, операционной системе и прикладным программам.

Неотъемлемой частью ПО компьютера является базовая система ввода/вывода BIOS, которая хранится в постоянной памяти ROM BIOS. В ROM BIOS находится программа инициализации, называемая POST (Power On Self Test - самотестирование по включению), которая обеспечивает тестирование и запуск компьютера при включении, а также загрузку ОС. BIOS является самым нижним уровнем ПО, который обеспечивает изоляцию вышестоящих уровней от подробностей реализации аппаратурных средств. В ROM BIOS имеется также утилита CMOS Setup, обеспечивающая настройку аппаратных средств. Обращение к BIOS производится посредством стандартных системных вызовов.

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

Функции BIOS разделены наследующие группы:

  1. инициализация и начальное тестирование аппаратного обеспечения - POST;

  2. настройка и конфигурирование аппаратных средств и системных ресурсов - CMOS
    Setup;

  3. автоматическое распределение системных ресурсов - PnP DBIOS;

  4. идентификация и конфигурирования устройств PCI-PCI-BIOS;

  5. начальная загрузка- BootStrapLoader;

  6. обслуживание аппаратных прерываний от системных устройств (таймер, клавиатура,
    диски) - BIOS Hardware Interrupts;

  7. обработка базовых функций программных обращений (сервисов) к системным
    устройствам ROM BIOS Services;

  8. поддержка управляемости конфигурированием — DMI-BIOS;

поддержка управления энергопотреблением и автоконфигурация - АРМ и ЛСР1 BIOS.


  1. Управление внешней памятью. Планирование работы с жестким диском. Критерии планирования. Методы уменьшения времени доступа к данным при обращении к последовательным секторам.

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

Различают последовательный доступ (для архивирования данных) и прямой доступ (блоки по 512 байт - секторы). Время ожидания при обращении к диску определяется следующим образом:

t ожидания = t поиска цилиндра + t поиска сектора + t чтения + t передачи данных.

I ID - электронно-механические устройства.

Причины управления внешней памятью:

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

2) Способы хранения файлов на диске. Наиболее оптимально - несвязанное хранения данных на диске.

Критерии оценки работы с диском (качества управления):

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

  2. среднее время ответа (доступа к диску, меньше лучше);

3) дисперсия времени ответа (меньше лучше).
Процесс работы с HD:

  1. Переход к цилиндру (1ц, самое большое).

  2. Дождаться когда нужный сектор под головкой.

  3. Время чтения (tчт).

  4. Время передачи (tnep).

Существует 2 режима работы: чтение и запись последовательных секторов. На FAT применяется сочетание связанных и несвязанных методов. Кластер - куча секторов, идущих подряд. Способы уменьшения времени доступа к данным при обращении к последовательным секторам:

1) чередование секторов (interleaving): если время для подготовки к чтению следующего сектора такое, что происходит полный оборот диска, то лучше записывать не в соседний сектор, а через сектор; размещаем с чередованием через N.

2) сдвиг головок (skew head): первый сектор следующей поверхности располагается пораньше, чтобы успеть поменять головку при перемене поверхности;

3) сдвиг цилиндра (skew cylinder): на перемещение головки к следующему треку требуется время, следовательно, на следующей дорожке пишут на некоторый угол раньше.


  1. ^ Стратегии оптимизации поиска цилиндра жесткого диска при произвольном обращении.

1) FCFS (FIFO, C=come, S=served) - стратегия «первый пришел, первым и обслуживается»:

+все запросы равноправны - минимизация дисперсии;

– между запросами игнорируются позиционные взаимосвязи - при повышении активности производительность падает по другим показателям (головки будут дергаться: 1,3,1,3,1,...).

2) стратегия SSTE - первым обслуживается запрос с наименьшим временем поиска (который находится на" ближайшем цилиндре и ближе к положению головки).

+ пропускная способность и среднее время ответа лучше;

– дискриминируются самые крайние дорожки, дольше останутся дальние запросы неудовлетворенными - ухудшается дисперсия; - мала пригодна для интерактивных систем.

3) стратегия SCAN - сканирование в привилегированном направлении, которое может меняться: в первую очередь удовлетворяются те запросы, которые находятся по ходу головки (достаточно быстро достигаем крайних дорожек):

а) C-SCAN - циклическое сканирование: головка движется только в одном направлении, а затем скачком назад (минимум дисперсии).

б) N-STEP-SCAN - шаговое сканирование: все запросы, которые пришли при прямом ходе головки, обслуживаются при её обратном ходе.

Рекомендации: при малых нагрузках SCAN, при больших - C-SCAN.


  1. ^ Файловая система и ее функции. Буферизация ввода-вывода. Потоки ввода-вывода (stream). Стандартный ввод-вывод. Представление устройств в виде файлов.

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

  1. ФС должна предоставлять пользователям возможность создавать, модифицировать и уничтожать файлы;

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

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

  4. задавать удобные для пользователей структуры файлов;

  5. управлять передачей информации между файлами;

  6. в ФС должны быть предусмотрены средства сохранности и восстановления;

  7. файлы должны быть независимы от устройств (должны обращаться к своим файлам с помощью символических имён, а не через имена физических устройств);

  8. шифрование и дешифрование данных;

  9. ФС должна иметь дружественный интерфейс с пользователем.

буферизация позволяет производить вычисления одновременно с операциями ввода/вывода. В основной памяти выделяются определенные участки, где можно расположить несколько физических блоков файла сразу. Каждый из этих участков называется буфером. Наиболее распространённая система буферизации носит название двойной буферизации и работает так: существует 2 буфера. Сначала записи, формируемые работающим процессом, помещаются в 1-ый буфер, пока он не будет заполнен. После этого инициализируется передача блока данных из первого буфера во внешнюю память. Во время выполнения этой передачи процесс продолжает формировать записи, которые теперь помещаются во второй буфер. Когда второй буфер заполнится и завершится передача данных из первого буфера, инициализируется передача данных из второго буфера. Снова формируемые процессом записи помещаются в первый буфер. Такое переключение с буфера на буфер позволят выполнять операции ввода/вывода параллельно с вычислениями.

Потоки ввода/вывода:

Потоком называется абстрактное понятие, относящееся к любому переносу данных от источника к приёмнику данных.

Файлы - это последовательный поток байтов.

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

Функции нижнего уровня, функции файлового ввода/вывода.

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

  1. функция открытия файла open();

  2. чтение readQ;

  3. запись writeQ.

Представление устройств в идее файлов.

Файл с именем stdin - устройство стандартного ввода, stdout - вывода, печать - prn (lpt). Драйвер устройства общается с физическим устройством, а программа работает с файлами. Непосредственным общением с устройством заведует драйвер и BIOS.


  1. ^ Связное и несвязное размещение файлов на диске. Несвязное размещение файлов на примере файловой системы FAT.

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

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

Существует несколько способов реализации систем поблочного распределения:

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

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

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



FAT 12: используется на дискетах (для хранения номера блоков используется 12 разрядов);

FAT 16: 16 бит на номер блока. Используется для дисков большого объёма. Недостаток -большой размер кластера, а следовательно большая недоиспользуемость дискового пространства

FAT32: 32 бит на номер блока. Размер кластера в 2 раза меньше, чем у FAT16 - 4Кб, следовательно значительный выигрыш дискового пространства. Недостаток: большое количество мелких кластеров несколько замедляет работу системы вследствие значительной фрагментации фалов.


Скачать файл (132 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации