Все о тюнинге авто

Основные принципы построения ос. Основные принципы построения операционных систем Основные принципы построения ос кратко

  1. принцип модульности . Модуль – функционально законченный элемент, выполняемый в соответствии с принятым межмодульным интерфейсом. Модуль выделяется по функциональному признаку. Модульная организация позволяет легко (из)заменять неправильно работающие модули в ОС. Чаще всего используются реентерабельные и привилегированные модули.
  2. принцип функциональной избирательности . Для организации эффективной работы ОС, необходимо выделить некоторые модули и хранить их в ОЗУ. Эти модули составляют ядро ОС. Ядро:
    1. Модули по управлению системы прерываний;
    2. Средство управления выполнения программ (загрузка, приостановка, остановка);
    3. Модули по управлению процессом (распределение процессорного времени), т.е. диспетчеры программ;
    4. Модули по управлению выделения памяти. В зависимости от ОС в ядро могут ещё входить другие модули;
    5. Транзитные модули (загружаются в ОЗУ по мере необходимости, при нехватке ОЗУ могут быть выгружены из памяти).
  3. принцип генерируемости ОС . Подразумевает собой возможность генерации ОС в зависимости от аппаратного обеспечения. Процесс генерации обычно производится один раз, перед достаточно долгим режимом эксплуатации. Для генерации необходимо наличие нескольких компонентов:
    1. Исходный код ОС;
    2. Компилятор с языка программирования на котором система написана;
    3. Специальная программа и входной язык для неё, который позволяет управлять процессом генерации.
    ОС с открытым системным кодом – Linux (UNIX), есть возможность тонкой настройки ядра для конкретного процессора.
  4. принцип функциональной избыточности . В состав ОС должно входит несколько типов ПО для выполнения одинаковых функций (поддержка разных файловых систем).
  5. принцип виртуализации . Позволяет представить ресурсы ОС в виде определённого набора планировщиков и мониторов и использует единую схему распределения ресурсов. Наибольшее проявление – концепция виртуальной машины (воспроизводит архитектуру реальной машины, но может обладать произвольными характеристиками).
  6. принцип независимости программ от внешних устройств . Связь программ с конкретным внешним устройством производится не на этапе трансляции, а на этапе выполнения программы. Получается выгода: не нужна лишняя «перекомпиляция».
  7. принцип совместимости . Способность выполнять программы для другой ОС или даже для другой аппаратной платформы.
    2 уровня совместимости:
    1. по выполняемому коду (бинарная). Условия совместимости:
      1. На уровне команд процессора (одна и та же платформа);
      2. Совместимость на уровне библиотечных вызовов, если являются динамично связываемыми.
    2. 2. по исходному коду. Требуется выполнение следующих условий:
      1. Наличие компилятора платформы, на котором написана программа;
      2. Совместимость на уровне системных вызовов;
      3. Совместимость на уровне библиотечных вызовов.
  8. принцип открытой наращиваемой ОС (открыт исходный код). Целостность ОС сохраняется (UNIX).
  9. принцип мобильности (переносимости). ОС должна легко переноситься на другую аппаратную платформу. Правила создания переносимых ОС:
    1. ОС должна быть написана на языке высокого уровня, для которой существует компилятор на аппаратной платформе. В основном, современные ОС пишут на Си.
    2. Необходимо избегать кода, который непосредственно работает с аппаратным обеспечением.
  10. принцип обеспечения безопасности и защиты :
    1. Защита системы от пользователя;
    2. Защита от несанкционированного доступа.

В 1983 г. придуманы критерии оценки надёжности ОС. Существуют 4 класса безопасности:

Класс D . Относятся системы, не удовлетворяющие системам предыдущих классов (небезопасный);

Класс C . Обеспечение защиты данных от ошибок пользователя. ОС должна иметь следующие средства:

  1. Средства секретного входа;
  2. Обязательно наличие избирательного контроля доступа;
  3. Средства учёта и наблюдения (аудит);
  4. Необходима инициализация памяти при её освобождении. Современные ОС относятся к этому классу.

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

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

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

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

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

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

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

  • 1. Единообразная по логике работы память (виртуальная) практически неограниченного объема. Организация работы с информацией в такой памяти производится в терминах обработки данных (в терминах работы с сегментами данных на уровне выбранного пользователем языка программирования);
  • 2. Произвольное количество процессоров (виртуальных), способных работать параллельно и взаимодействовать во время работы. Способы управления процессорами, в том числе синхронизация и информационные взаимодействия, реализованы и доступны пользователям на уровне используемого языка в терминах управления процессами;
  • 3. Произвольное количество внешних устройств (виртуальных), способных работать с памятью виртуальной машины параллельно или последовательно, асинхронно или синхронно по отношению к работе того или иного виртуального процессора, который инициирует работу этих устройств;
  • 4. Информация, передаваемая или хранимая на виртуальных устройствах, не ограничена допустимыми размерами. Доступ к такой информации осуществляется на основе либо последовательного, либо прямого способа доступа в терминах соответствующей системы управления файлами. Предусмотрено расширение информационных структур данных, хранимых на виртуальных устройствах.

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

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

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

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

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

Принцип обеспечения безопасности при выполнении вычислений является желательным свойством для любой многопользовательской системы. Правила безопасности определяют такие свойства, как защита ресурсов одного пользователя от других и установление квот по ресурсам для предотвращения захвата одним пользователем всех системных ресурсов. Обеспечение защиты информации от несанкци-онированного доступа является обязательной функцией операционных систем. В соответствии со стандартами Национального центра компьютерной безопасности США (NCSC - National Computer Security Center) безопасной считается система, которая «посредством специальных механизмов защиты контролирует доступ к информации таким образом, что только имеющие соответствующие полномочия лица или процессы, выполняющиеся от их имени, могут получить доступ на чтение, запись, создание или удаление информации». Иерархия уровней безопасности отмечает низший уровень безопасности как D, а высший - как А. В класс D попадают системы, оценка которых выявила их несоответствие требованиям всех других классов. Основными свойствами, характерными для систем класса (уровня) С, являются наличие подсистемы учета событий, связанных с безопасностью, и избирательный контроль доступа. На уровне С должны присутствовать:

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

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

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

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

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

В большинстве вычислительных систем операционная система является основной, наиболее важной (а иногда и единственной) частью системного программного обеспечения. С 1990-х годов наиболее распространёнными операционными системами являются системы семейства Windows и системы класса UNIX (особенно Linux и Mac OS).

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

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

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

Функции, структура, принципы построения ОС

ь Основные функции:

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

OS/360 использовалась на большинстве компьютеров IBM начиная с 1966, включая те компьютеры, которые помогали NASA отправить человека на Луну.

Дополнительные функции:

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

Компоненты операционной системы:

  • · Загрузчик
  • · Ядро
  • · Командный процессор
  • · Драйверы устройств
  • · Встроенное программное обеспечение

ь Структура операционной системы

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

В сетевой операционной системе отдельной машины можно выделить несколько частей (рисунок 1.1):

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

Рис. 1.1.

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

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

На рисунке 1.2 показано взаимодействие сетевых компонентов. Здесь компьютер 1 выполняет роль "чистого" клиента, а компьютер 2 - роль "чистого" сервера, соответственно на первой машине отсутствует серверная часть, а на второй - клиентская. На рисунке отдельно показан компонент клиентской части - редиректор. Именно редиректор перехватывает все запросы, поступающие от приложений, и анализирует их. Если выдан запрос к ресурсу данного компьютера, то он переадресовывается соответствующей подсистеме локальной ОС, если же это запрос к удаленному ресурсу, то он переправляется в сеть.

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

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


Рис. 1.2.

Однако более эффективным представляется путь разработки операционных систем, изначально предназначенных для работы в сети. Сетевые функции у ОС такого типа глубоко встроены в основные модули системы, что обеспечивает их логическую стройность, простоту эксплуатации и модификации, а также высокую производительность. Примером такой ОС является система Windows NT фирмы Microsoft, которая за счет встроенности сетевых средств обеспечивает более высокие показатели производительности и защищенности информации по сравнению с сетевой ОС LAN Manager той же фирмы (совместная разработка с IBM), являющейся надстройкой над локальной операционной системой OS/2.

ь Принципы построения операционных систем

Принцип модульности

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

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

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

Принцип функциональной избирательности

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

Принцип генерируемости ОС

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

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

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

Принцип функциональной избыточности

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

На этой страничке мы поговорим на такие темы, как: Модульный принцип построения компьютера, операционной системы.

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

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

Модульный принцип построения компьютера

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

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

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

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

Расширяемость

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

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

Изменения ОС обычно представляют собой приобретение новых свойств:

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

Принцип функциональной избирательности

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

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

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

Переносимость (мобильность)

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

Надежность, отказоустойчивость и совместимость

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

Принцип совместимости заключается в следующем:

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

Безопасность и производительность

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

  • Защита ресурсов одного пользователя от других и установление квот по ресурсам для предотвращения захвата одним пользователем всех системных ресурсов (например, таких как память).
  • Защита данных от несанкционированного доступа.

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

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

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

Архитектурные особенности проектирования операционных систем

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

1. Главная программа, которая вызывает требуемые сервисные процедуры;

2. Набор сервисных процедур, реализующих системные вызовы;

3. Набор утилит, обслуживающих сервисные процедуры.

Управление памятью

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

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

Символьные имена присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.

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

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

Управление вводом-выводом

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

Устройства ввода-вывода делятся на два типа: блок-ориентированные устройства и байт-ориентированные устройства .

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

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

Любое внешнее устройство обычно состоит из механического и электронного компонента. Электронный компонент называют контроллером устройства или адаптером . Механический компонент представляет собственно устройство. Некоторые контроллеры могут управлять несколькими устройствами. Если интерфейс между контроллером и устройством стандартизован, то независимые производители могут выпускать совместимые как контроллеры, так и устройства.

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

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

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

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

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

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

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

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

– работа с не дисковыми периферийными устройствами как с файлами;

– обмен данными между файлами, между устройствами, между файлом и уст­ройством (и наоборот);

– работа с файлами с помощью обращений к программным модулям системы управления файлами;

– защита файлов от несанкционированного доступа.

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