Основы программирования
Первой системой, построенной таким образом была простая пакетная система THE, которую построил Дейкстра и его студенты в 1968 году. Система имела 6 уровней. Уровень 0 занимался распределением времени процессора, переключая процессы по прерыванию или по истечении времени. Уровень 1 управлял памятью — распределял оперативную память и пространство на магнитном барабане для тех частей процессов… Читать ещё >
Основы программирования (реферат, курсовая, диплом, контрольная)
Операционные системы.
1. Функции и задачи ОС.
Операционная система (ОС), являясь основой общесистемного ПО, обеспечивает функционирование и взаимосвязь всех компонентов компьютера и предоставляет пользователю доступ к его аппаратным возможностям.
ОС — это набор программ, обеспечивающий организацию вычислительного процесса на ЭВМ.
Основные задачи:.
1) увеличение пропускной способности ЭВМ (за счет организации непрерывной обработки потока задач с автоматическим переходом от одной задачи к другой и эффективного распределения ресурсов ЭВМ по нескольким задачам);
2) уменьшение времени реакции системы на запросы пользователями ответов от ЭВМ;
3) упрощение работы разработчиков программных средств и сотрудников обслуживающего персонала ЭВМ (за счет предоставления им значительного количества языков программирования и разнообразных сервисных программ).
Функции ОС:.
1) управление данными;
2) управление задачами (заданиями, процессами);
3) связь с человеком-оператором. В различных ОС эти функции реализуются в различных масштабах и с помощью различных технических, программных, информационных методов и средств.
2. Одноранговые сетевые ОС.
В одноранговых сетях все компьютеры равны в правах доступа к ресурсам друг друга. Каждый пользователь может по своему желанию объявить какой-либо ресурс своего компьютера разделяемым, после чего другие пользователи могут его эксплуатировать. В таких сетях на всех компьютерах устанавливается одна и та же ОС, которая предоставляет всем компьютерам в сети потенциально равные возможности. Одноранговые сети могут быть построены, например, на базе ОС LANtastic, Personal Ware, Windows for Workgroup, Windows NT Workstation.
В одноранговых сетях также может возникнуть функциональная несимметричность: одни пользователи не желают разделять свои ресурсы с другими, и в таком случае их компьютеры выполняют роль клиента, за другими компьютерами администратор закрепил только функции по организации совместного использования ресурсов, а значит, они являются серверами, в третьем случае, когда локальный пользователь не возражает против использования его ресурсов и сам не исключает возможности обращения к другим компьютерам, ОС, устанавливаемая на его компьютере, должна включать и серверную, и клиентскую части. В отличие от сетей с выделенными серверами, в одноранговых сетях отсутствует специализация ОС в зависимости от преобладающей функциональной направленности — клиента или сервера. Все вариации реализуются средствами конфигурирования одного и того же варианта ОС. Одноранговые сети проще в организации и эксплуатации, однако, они применяются в основном для объединения небольших групп пользователей, не предъявляющих больших требований к объемам хранимой информации, ее защищенности от несанкционированного доступа и к скорости доступа. При повышенных требованиях к этим характеристикам более подходящими являются двухранговые сети, где сервер лучше решает задачу обслуживания пользователей своими ресурсами, так как его аппаратура и сетевая операционная система специально спроектированы для этой цели.
3. Понятие процесса.
Основными понятиями управления прохождением задач в ЭВМ являются процесс, задача, работа, программа, ресурс и т. д.
Процесс — минимальный программный объект, обладающий собственными системными ресурсами (запущенная программа). Это программный модуль, выполняемый в центральном процессоре (CPU).
Процессор — любое устройство в составе ЭВМ, способное автоматически выполнять допустимые для него действия (процессоры, каналы и устройства, работающие с каналами).
Классификация процессов:.
1) по временным характеристикам различают:
— интерактивные;
— пакетные;
— реального времени.
2) по генеалогическому признаку различают:
— порождающие;
— порожденные.
3) по результативности различают:
— эквивалентные;
— тождественные;
— равные.
4) по времени развития делятся:
— последовательные;
— параллельные;
— комбинированные.
5) по месту развития:
— внешние;
— внутренние.
6) по принадлежности к ОС:
— системные;
— пользовательские.
7) по связности различают:
— взаимосвязанные;
— изолированные;
— информационно независимые;
— взаимодействующие;
— взаимосвязанные по ресурсам;
— конкурирующие.
Порядок взаимосвязи процессов определяется правилами синхронизации.
Процессы могут находится в отношении:
— предшествования;
— приоритетности;
— взаимного исключения.
Не следует смешивать понятие процесса и программы. Программа — это план действий, а процесс — это само действие, поэтому понятие процесса включает в себя:
— программный код;
— данные;
— содержимое стека;
содержимое адресного и других регистров процессора.
Каждый процесс представлен в ОС набором данных, называемых таблица управления процессом (PCB — process control block). В PCB процесс описывается набором значений, параметров, характеризующих его текущее состояние и используемых ОС для управления прохождением процесса через компьютер.
4. Планирование процессоров.
Стратегии планирования процессора:
1. Первый пришел — первый обслуживается — first come — First served (FCFS). FCFS является наиболее простой стратегией планирования процессов и заключается в том, что процессор передается тому процессу, который раньше всех других его запросил.
Когда процесс попадает в очередь готовых процессов, УТП (PSB) присоединяется к хвосту очереди.
Среднее время ожидания для стратегии FCFS часто весьма велико и зависит от порядка поступления процессов в очередь готовых процессов.
Стратегии FCFS присущ так называемый «эффект конвоя». В том случае, когда в компьютере имеется один большой процесс и несколько малых, то все процессы собираются в начале очереди готовых процессов, а затем в очереди к оборудованию. Таким образом, он приводит к снижению загруженности как процессора, таки периферийного оборудования.
2. Стратегия «наиболее короткая работа выполняется первой» SJF — Shortest Job First. Одним из методов борьбы с «эффектом конвоя» является стратегия, позволяющая процессу из очереди выполняться первым.
5. Файловые таблицы FAT16, FAT32.
Файл — область памяти, выделенная для хранения массива данных. В файлах могут храниться программы на алгоритмических или машинных языках. Исходные данные для работы программ и результаты и результаты заполнения программ, тексты и графические изображения. В настоящее время в ОС для ПК используются десятки файловых систем. В файловой системе MS-DOS используются:
— FAT16;
— FAT32;
— FAT12 (для дискет).
FAT — это таблица размещения файлов, т. е. у каждого файла есть свой адрес, который записан в эту таблицу.
FAT16 — на запись адреса отводится 16 бит. С их помощью можно выразить 216 = 65 536 разных адресов. Если размер диска 2 Гб., то на каждый адрес приходится 32 Кб.
Если же 2,5 Гб., то тогда на каждый адрес приходится более 64 Кб, но это не допустимо.
FAT32 — для этой таблицы размеры кластеров следующие:
Объем диска;
Размер кластера;
До 8 Гб;
8 — 16 Гб;
16 — 32 Гб;
свыше 32 Гб;
4 Кб;
8 Кб;
16 Кб;
32 Кб.
Кластеры выдаются одному файлу в любом свободном месте дисковой памяти и не обязательно являются смежными. Файлы хранящиеся в разбросанных по диску кластерах называются фрагментированными.
6. Основные свойства файлов.
Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги.
Обычные файлы в свою очередь подразделяются на текстовые и двоичные. Текстовые файлы состоят из строк символов, представленных в ASCII-коде. Это могут быть документы, исходные тексты программ и т. п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют ASCII-коды, они часто имеют сложную внутреннюю структуру, например, объектный код программы или архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип файлов — их собственные исполняемые файлы.
Специальные файлы — это файлы, ассоциированные с устройствами ввода-вывода, которые позволяют пользователю выполнять операции ввода-вывода, используя обычные команды записи в файл или чтения из файла. Эти команды обрабатываются вначале программами файловой системы, а затем на некотором этапе выполнения запроса преобразуются ОС в команды управления соответствующим устройством. Специальные файлы, так же как и устройства ввода-вывода, делятся на блок-ориентированные и байт-ориентированные.
Каталог — это, с одной стороны, группа файлов, объединенных пользователем исходя из некоторых соображений (например, файлы, содержащие программы игр, или файлы, составляющие один программный пакет), а с другой стороны — это файл, содержащий системную информацию о группе файлов, его составляющих. В каталоге содержится список файлов, входящих в него, и устанавливается соответствие между файлами и их характеристиками (атрибутами).
В разных файловых системах могут использоваться в качестве атрибутов разные характеристики, например:
— информация о разрешенном доступе;
— пароль для доступа к файлу;
— владелец файла;
— создатель файла;
— признак «только для чтения» ;
— признак «скрытый файл» ;
— признак «системный файл» ;
— признак «архивный файл» ;
— признак «двоичный/символьный» ;
— признак «временный» (удалить после завершения процесса);
— признак блокировки;
— длина записи;
— указатель на ключевое поле в записи;
— длина ключа;
— времена создания, последнего доступа и последнего изменения;
— текущий размер файла;
— максимальный размер файла.
Каталоги могут непосредственно содержать значения характеристик файлов, как это сделано в файловой системе MS-DOS, или ссылаться на таблицы, содержащие эти характеристики, как это реализовано в ОС UNIX (рисунок 2.31). Каталоги могут образовывать иерархическую структуру за счет того, что каталог более низкого уровня может входить в каталог более высокого уровня.
7. Тенденции в структурном построении ОС.
Для удовлетворения требований, предъявляемых к современной ОС, большое значение имеет ее структурное построение. Операционные системы прошли длительный путь развития от монолитных систем к хорошо структурированным модульным системам, способным к развитию, расширению и легкому переносу на новые платформы.
Монолитные системы.
В общем случае «структура» монолитной системы представляет собой отсутствие структуры. ОС написана как набор процедур, каждая из которых может вызывать другие, когда ей это нужно. При использовании этой техники каждая процедура системы имеет хорошо определенный интерфейс в терминах параметров и результатов, и каждая вольна вызвать любую другую для выполнения некоторой нужной для нее полезной работы.
Для построения монолитной системы необходимо скомпилировать все отдельные процедуры, а затем связать их вместе в единый объектный файл с помощью компоновщика (примерами могут служить ранние версии ядра UNIX или Novell NetWare). Каждая процедура видит любую другую процедуру (в отличие от структуры, содержащей модули, в которой большая часть информации является локальной для модуля, и процедуры модуля можно вызвать только через специально определенные точки входа).
Многоуровневые системы.
Обобщением предыдущего подхода является организация ОС как иерархии уровней. Уровни образуются группами функций операционной системы — файловая система, управление процессами и устройствами и т. п. Каждый уровень может взаимодействовать только со своим непосредственным соседом — вышеили нижележащим уровнем. Прикладные программы или модули самой операционной системы передают запросы вверх и вниз по этим уровням.
Первой системой, построенной таким образом была простая пакетная система THE, которую построил Дейкстра и его студенты в 1968 году. Система имела 6 уровней. Уровень 0 занимался распределением времени процессора, переключая процессы по прерыванию или по истечении времени. Уровень 1 управлял памятью — распределял оперативную память и пространство на магнитном барабане для тех частей процессов (страниц), для которых не было места в ОП, то есть слой 1 выполнял функции виртуальной памяти. Слой 2 управлял связью между консолью оператора и процессами. С помощью этого уровня каждый процесс имел свою собственную консоль оператора. Уровень 3 управлял устройствами ввода-вывода и буферизовал потоки информации к ним и от них. С помощью уровня 3 каждый процесс вместо того, чтобы работать с конкретными устройствами, с их разнообразными особенностями, обращался к абстрактным устройствам ввода-вывода, обладающим удобными для пользователя характеристиками. На уровне 4 работали пользовательские программы, которым не надо было заботиться ни о процессах, ни о памяти, ни о консоли, ни об управлении устройствами ввода-вывода. Процесс системного оператора размещался на уровне 5.
В системе THE многоуровневая схема служила, в основном, целям разработки, так как все части системы компоновались затем в общий объектный модуль. Дальнейшее обобщение многоуровневой концепции было сделано в ОС MULTICS. В системе MULTICS каждый уровень (называемый кольцом) является более привилегированным, чем вышележащий. Когда процедура верхнего уровня хочет вызвать процедуру нижележащего, она должна выполнить соответствующий системный вызов, то есть команду TRAP (прерывание), параметры которой тщательно проверяются перед тем, как выполняется вызов. Хотя ОС в MULTICS является частью адресного пространства каждого пользовательского процесса, аппаратура обеспечивает защиту данных на уровне сегментов памяти, разрешая, например, доступ к одним сегментам только для записи, а к другим — для чтения или выполнения. Преимущество подхода MULTICS заключается в том, что он может быть расширен и на структуру пользовательских подсистем. Например, профессор может написать программу для тестирования и оценки студенческих программ и запустить эту программу на уровне n, в то время как студенческие программы будут работать на уровне n+1, так что они не смогут изменить свои оценки. Многоуровневый подход был также использован при реализации различных вариантов ОС UNIX. Хотя такой структурный подход на практике обычно работал неплохо, сегодня он все больше воспринимается монолитным. Модель клиент-сервер Модель клиент-сервер — это еще один подход к структурированию ОС. В широком смысле модель клиент-сервер предполагает наличие программного компонента — потребителя какого-либо сервиса — клиента, и программного компонента — поставщика этого сервиса — сервера. Взаимодействие между клиентом и сервером стандартизуется, так что сервер может обслуживать клиентов, реализованных различными способами и, может быть, разными производителями. При этом главным требованием является то, чтобы они запрашивали услуги сервера понятным ему способом. Инициатором обмена обычно является клиент, который посылает запрос на обслуживание серверу, находящемуся в состоянии ожидания запроса. Один и тот же программный компонент может быть клиентом по отношению к одному виду услуг, и сервером для другого вида услуг. Модель клиент-сервер является скорее удобным концептуальным средством ясного представления функций того или иного программного элемента в той или иной ситуации, нежели технологией. Эта модель успешно применяется не только при построении ОС, но и на всех уровнях программного обеспечения, и имеет в некоторых случаях более узкий, специфический смысл, сохраняя, естественно, при этом все свои общие черты. Применительно к структурированию ОС идея состоит в разбиении ее на несколько процессов — серверов, каждый из которых выполняет отдельный набор сервисных функций — например, управление памятью, создание или планирование процессов. Каждый сервер выполняется в пользовательском режиме. Клиент, которым может быть либо другой компонент ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Ядро ОС (называемое здесь микроядром), работая в привилегированном режиме, доставляет сообщение нужному серверу, сервер выполняет операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения.
8. Структура и основные компоненты вычислительной системы.
С момента появления первых систем было опробовано большое количество разнообразных структур систем, отличающихся друг от друга различными техническими решениями. Практика показала, что каждая структура ВС эффективно обрабатывает лишь задачи определенного класса. При этом необходимо чтобы структура ВС максимально соответствовала структуре решаемых задач. Только в этом случае система обеспечивает максимальную производительность.
Универсальной структуры ВС, одинаково хорошо обрабатывающей задачи любого типа, не существует.
Большое разнообразие структур ВС затрудняет их изучение. Поэтому ВС классифицируют с учетом их обобщенных характеристик. С этой целью вводится понятие «Архитектура системы».
Архитектура ВС — совокупность характеристик и параметров, определяющих функционально логическую и структурную организацию системы.
Поскольку ВС появились как параллельные системы, то и рассмотрим классификацию архитектур с этой точки зрения.
Эта классификация архитектур была предложена М. Флинном в начале 60-гг. в ее основу заложено два возможных вида параллелизма: независимость потоков заданий (команд), существующих в системе, и независимость (несвязность) данных, обрабатываемых в каждом потоке. Классификация до настоящего времени еще не потеряла своего значения.
Согласно этой классификации существует четыре основных архитектуры ВС:
1) одиночный поток команд — одиночный поток данных (ОКОД);
2) одиночный поток команд — множественный поток данных (ОКМД);
3) множественный поток команд — одиночный поток данных (МКОД);
4) множественный поток команд — множественный поток данных (МКМД).
Архитектура ОКОД — охватывает все однопроцессорные и одномашинные варианты систем, т. е. с одним вычислителем. Все ЭВМ классической структуры попадают в этот класс. Здесь параллелизм вычислений обеспечивается путем совмещения выполнения операций отдельными блоками АЛУ, а также параллельной работы устройств ввода-вывода информации и процессора. Закономерности организации вычислительного процесса в этих структурах достаточно хорошо изучены.
Архитектура ОКМД — предполагает создание структур векторной или матричной обработки. Системы этого типа обычно строятся как однородные, т. е. процессорные, элементы, входящие в систему, идентичны и все они управляются одной и той же последовательностью команд. Однако каждый процессор обрабатывает свой поток данных. Под эту схему хорошо подходят задачи обработки матриц или векторов (массивов), задачи решения систем линейных и нелинейных, алгебраических и дифференциальных уравнений, задачи теории поля и д.р. Архитектура МКОД — предполагает построение своеобразного процессорного конвейера, в котором результаты обработки передаются от одного процессора к другому по цепочке. Прототипом таких вычислений может служить схема любого производственного конвейера. В современных ЭВМ по этому принципу реализована схема совмещения операций, в которой параллельно работают различные функциональные блоки, и каждый из них делает свою часть в общем цикле обработки команды.
9. ОС с выделенными серверами.
Если компьютер предоставляет свои ресурсы другим пользователям сети, то он играет роль сервера. При этом компьютер, обращающийся к ресурсам другой машины, является клиентом. Как уже было сказано, компьютер, работающий в сети, может выполнять функции либо клиента, либо сервера, либо совмещать обе эти функции.
Если выполнение каких-либо серверных функций является основным назначением компьютера (например, предоставление файлов в общее пользование всем остальным пользователям сети или организация совместного использования факса, или предоставление всем пользователям сети возможности запуска на данном компьютере своих приложений), то такой компьютер называется выделенным сервером. В зависимости от того, какой ресурс сервера является разделяемым, он называется файл-сервером, факс-сервером, принт-сервером, сервером приложений и т. д. Очевидно, что на выделенных серверах желательно устанавливать ОС, специально оптимизированные для выполнения тех или иных серверных функций. Поэтому в сетях с выделенными серверами чаще всего используются сетевые операционные системы, в состав которых входит нескольких вариантов ОС, отличающихся возможностями серверных частей. Например, сетевая ОС Novell NetWare имеет серверный вариант, оптимизированный для работы в качестве файл-сервера, а также варианты оболочек для рабочих станций с различными локальными ОС, причем эти оболочки выполняют исключительно функции клиента. Другим примером ОС, ориентированной на построение сети с выделенным сервером, является операционная система Windows NT. В отличие от NetWare, оба варианта данной сетевой ОС — Windows NT Server (для выделенного сервера) и Windows NT Workstation (для рабочей станции) — могут поддерживать функции и клиента и сервера. Но серверный вариант Windows NT имеет больше возможностей для предоставления ресурсов своего компьютера другим пользователям сети, так как может выполнять более широкий набор функций, поддерживает большее количество одновременных соединений с клиентами, реализует централизованное управление сетью, имеет более развитые средства защиты. Выделенный сервер не принято использовать в качестве компьютера для выполнения текущих задач, не связанных с его основным назначением, так как это может уменьшить производительность его работы как сервера. В связи с такими соображениями в ОС Novell NetWare на серверной части возможность выполнения обычных прикладных программ вообще не предусмотрена, то есть сервер не содержит клиентской части, а на рабочих станциях отсутствуют серверные компоненты. Однако в других сетевых ОС функционирование на выделенном сервере клиентской части вполне возможно. Например, под управлением Windows NT Server могут запускаться обычные программы локального пользователя, которые могут потребовать выполнения клиентских функций ОС при появлении запросов к ресурсам других компьютеров сети. При этом рабочие станции, на которых установлена ОС Windows NT Workstation, могут выполнять функции невыделенного сервера.
Несмотря на то, что в сети с выделенным сервером все компьютеры в общем случае могут выполнять одновременно роли и сервера, и клиента, эта сеть функционально не симметрична: аппаратно и программно в ней реализованы два типа компьютеров — одни, в большей степени ориентированные на выполнение серверных функций и работающие под управлением специализированных серверных ОС, а другие — в основном выполняющие клиентские функции и работающие под управлением соответствующего этому назначению варианта ОС. Функциональная несимметричность, как правило, вызывает и несимметричность аппаратуры — для выделенных серверов используются более мощные компьютеры с большими объемами оперативной и внешней памяти. Таким образом, функциональная несимметричность в сетях с выделенным сервером сопровождается несимметричностью операционных систем (специализация ОС) и аппаратной несимметричностью (специализация компьютеров).
10. Взаимодействие процессов.
Совместно выполняемые процессы могут быть либо независимыми либо взаимодействующими. Взаимодействие процессов понимается в смысле взаимного обмена данными через общий буфер данных.
Взаимодействие процессов удобно рассматривать в схеме производитель-потребитель. Например, программа вывода на печать производит последовательность символов, которые потребляются драйвером принтера, или компилятор производит ассемблерный текст, который затем потребляется ассемблером.
Для взаимодействия процесса-производителя и процесса-потребителя создается совместный буфер заполняемый процессом-производителем и потребляемым процессом потребителя.
Буфер имеет фиксированные размеры и, следовательно, процессы могут находится в состоянии ожидания, когда:
— буфер заполнен — ожидает процесс-производитель;
— буфер пуст — ожидает процесс-потребитель.
Буфер может предоставляться и поддерживаться самой ОС, например, с помощью средств межпроцессной коммуникации, либо должен быть организован прикладным программистом. При этом оба процесса используют общий участок памяти.
Взаимодействие заключается в передаче данных между процессами или совместном использовании некоторых ресурсов и обычно реализуется с помощью таких механизмов, как транспортеры, очереди, сигналы, семафоры.
Транспортеры (каналы). Являются средством взаимодействия родственных процессов, представляют собой область памяти имеющую файловую организацию, для которой обеспечивается запись и считывание данных в транспортеры. Реализуется очередь обслуживания. Порядок записи данных на транспортер не изменен, не допускается повторное считывание данных. Обмен данными происходит не непосредственно, а через транспортер. Из вызвавшего процесса задается размер транспортера. Дочерние процессы могут использовать родительский транспортер.
Очереди. Эти механизмы могут обеспечивать передачу или использование общих данных без перемещения данных, а с передачей элемента очереди, содержащего указатель данных и объем массива данных. Очередь используется вместе с механизмом общей памяти.
Элемент очереди может быть считан с уничтожением или без уничтожения этого элемента. Чтение элемента может осуществляться в соответствии с механизмом очереди или стека. Чтение элементов очереди осуществляет только создающий очереди процесс, все другие процессы могут только записать элемент в очередь. Создающий процесс может выполнять следующие действия над очередью:
— создание очереди;
— просмотр очереди;
— чтение очереди;
— закрытие очереди.
Записывающий процесс осуществляет действия:
— открыть очередь;
— записать в очередь;
— закрыть в очередь.
Имя очереди, которое присваивается создающим процессам имеет вид полной спецификации файла. Ожидание элементов в очереди организуется с помощью семафора, сигнализирующего о записи элемента в очередь. Для работы с очередью определены такие дополнительные функции:
— определение количества элементов в очереди в текущий момент;
— очистка очереди создавшим ее процессом.
Преимущество очереди: передача данных по указателю без копирования, гибкое изменение порядка передачи и доступа, возможность просмотра элементов очереди без их удаления.
Сигналы. Сигнал является механизмом передачи требования одного процесса к другому на немедленное выполнение действия.
Обработчик сигнала создается процессом и помещается в начале первого потока процесса. Является аналогом обработки прерывания. При передаче управления обработчику передается адрес возврата и тип принятого сигнала. Процесс, посылающий сигнал типа флаг, может передать дополнительную информацию обработчику сигнала. Характер выполняемых действий при возникновении сигнала: обработка системной ошибки при появлении сигнала, блокирования сигнала, передача управления подпрограмме.
Семафоры. Являются механизмами передачи сообщений от одного потока к другому о наступлении некоторого события различают семафоры системные и ОП. Семафоры ОП — двойное слово в памяти системы, его описатель — адрес места в памяти. Такие семафоры не создаются и не открываются, а устанавливаются в определенное состояние. Процессы, использующие семафоры ОП, должны иметь доступ к соответствующему сегменту памяти. ОС такие семафоры не обслуживает и не сообщает об их освобождении и захвате. При создании семафора или его открытии возвращается описатель семафора, включающий его имя. ОС контролирует завершение каждого процесса, владеющего системным семафором, и освобождает его для процессов.
Если семафор свободен, то он захватывается вызывающим его процессом, если семафор занят, то вызвавший его поток переходит в режим ожидания освобождения семафора или ожидает истечения времени. Если семафор освобождается всеми использующими его процессами, то он удаляется из системы.
Управление семафором реализуется с помощью функций:
— установки семафора с целью сигнализации;
— ожидания вызывающим потоком, пока семафор не будет выключен;
ожидание потоком выключения потоком одного из нескольких семафоров.
11. Объектно-ориентированный подход.
Для пользователей Windows объектно-ориентированный подход проявляется при работе с программами, использующими технологию OLE фирмы Microsoft. В первой версии OLE, которая дебютировала в Windows 3.1, пользователи могли вставлять объекты в документы-клиенты. Такие объекты устанавливали ссылку на данные (в случае связывания) или содержали данные (в случае внедрения) в формате, распознаваемом программой-сервером. Для запуска программы-сервера пользователи делали двойной щелчок на объекте, посредством чего передавали данные серверу для редактирования. OLE 2.0, доступная в настоящее время в качестве расширения Windows 3.1, переопределяет документ-клиент как контейнер. Когда пользователь щелкает дважды над объектом OLE 2.0, вставленным в документ-контейнер, он активизируется в том же самом месте. Представим, например, что контейнером является документ Microsoft Word 6.0, а вставленный объект представляет собой набор ячеек в формате Excel 5.0. Когда вы щелкнете дважды над объектом электронной таблицы, меню и управляющие элементы Word как по волшебству поменяются на меню Excel. В результате, пока объект электронной таблицы находится в фокусе, текстовый процессор становится электронной таблицей.
Инфраструктура, требуемая для обеспечения столь сложных взаимодействий объектов, настолько обширна, что Microsoft называет OLE 2.0 «1/3 операционной системы». Хранение объектов, например, использует docfile, который в действительности является миниатюрной файловой системой, содержащейся внутри обычного файла MS-DOS. Docfile имеет свои собственные внутренние механизмы для семантики подкаталогов, блокировок и транзакций (т.е. фиксации-отката).
Наиболее заметный недостаток OLE — отсутствие сетевой поддержки, и это будет иметь наивысший приоритет при разработке будущих версий OLE. Следующая основная итерация OLE появится в распределенной, объектной версии Windows, называемой Cairo (Каир), ожидаемой в 1995 году.
Стандарт OpenDoc.
Apple, совместно с WordPerfect, Novell, Sun, Xerox, Oracle, IBM и Taligent, известными вместе как Component Integration Laboratory (Лаборатория по объединению компонентов), также занимается архитектурой объектно-ориентированных составных документов, называемой OpenDoc. Создаваемый для работы на разных платформах, этот проект значительно отстает по степени готовности от OLE 2.0.
Ключевыми технологиями OpenDoc являются механизм хранения Бенто (названный так в честь японской тарелки с отделениями для разной пищи), технология сценариев (scripting), позаимствованная в значительной степени из AppleSript, и SOM фирмы IBM. В Бенто-документе каждый объект имеет постоянный идентификатор, перемещающийся вместе с ним от системы к системе. Хранение не только является транзакционным, как в OLE, но и позволяет держать и отслеживать многочисленные редакции каждого объекта. Если имеется несколько редакций документа, то реально храниться будут только изменения от одной редакции к другой. Верхняя граница числа сохраняемых редакций будет определяться пользователем.
Команда Apple планирует сделать OpenDoc совместимым с Microsoft OLE. Если план завершится успехом, система OpenDoc сможет окружать объекты OLE слоем программ трансляции сообщений. Контейнер OpenDoc будет видеть встроенный объект OLE как объект OpenDoc, а объект OLE будет представлять свой контейнер, как контейнер OLE. Утверждается, что будет допустима также и обратная трансляция по этому сценарию, когда объекты OpenDoc функционируют в контейнерах OLE. Слой трансляции разрабатывается WordPerfect при помощи Borland, Claris, Lotus и других.
В основе OLE и OpenDoc лежат две соперничающие объектные модели: Microsoft COM (Component Object Model — компонентная объектная модель) и IBM SOM. Каждая определяет протоколы, используемые объектами для взаимодействия друг с другом. Основное их различие заключается в том, что SOM нейтральна к языкам программирования и поддерживает наследование, тогда как COM ориентирована на С++ и вместо механизма наследования использует альтернативный механизм, который Microsoft называет агрегацией.
Семейство CORBA.
Hewlett-Packard, Sun Microsystems и DEC экспериментируют с объектами уже много лет. Теперь эти компании и много других объединились вместе, основав промышленную коалицию под названием OMG (Object Management Group), разрабатывающую стандарты для обмена объектами. OMG CORBA (Common Object Request Broker Architecture — Общая архитектура посредника обработки объектных запросов) закладывает фундамент распределенных вычислений с переносимыми объектами. CORBA задает способ поиска объектами других объектов и вызова их методов. SOM согласуется с CORBA. Если вы пользуетесь DSOM под OS/2, вы сможете вызывать CORBA-совместимые объекты, работающие на HP, Sun и других архитектурах. Означает ли это возможность редактировать объект OpenDoc, сделанный на Macintosh, в документе-контейнере на RISC-рабочей станции? Вероятно, нет. CORBA может гарантировать только механизм нижнего уровня, посредством которого одни объекты вызывают другие. Для успешного взаимодействия требуется также понимание сообщений друг друга.
12. Возможности Windows NT.
Windows NT Workstation, прежде всего, может использоваться как клиент в сетях Windows NT Server, а также в сетях NetWare, UNIX, Vines. Она может быть рабочей станцией и в одноранговых сетях, выполняя одновременно функции и клиента, и сервера. Windows NT Workstation может применяться в качестве ОС автономного компьютера при необходимости обеспечения повышенной производительности, секретности, а также при реализации сложных графических приложений, например, в системах автоматизированного проектирования.
Windows NT Server может быть использован, прежде всего, как сервер в корпоративной сети. Здесь весьма полезной оказывается его возможность выполнять функции контроллера доменов, позволяя структурировать сеть и упрощать задачи администрирования и управления. Он используется также в качестве файл-сервера, принт-сервера, сервера приложений, сервера удаленного доступа и сервера связи (шлюза). Кроме того, Windows NT Server может быть использован как платформа для сложных сетевых приложений, особенно тех, которые построены с использованием технологии клиент-сервер.
Так, под управлением Windows NT Server может работать сервер баз данных Microsoft SQL Server, а также серверы баз данных других известных фирм, такие как Oracle и Sybase, Adabas и InterBase.
На платформе Windows NT Server может быть установлена новая мощная система администрирования Microsoft System Management Server, функцией которой является инвентаризация аппаратной и программной конфигурации компьютеров сети, автоматическая установка программных продуктов на рабочие станции, удаленное управление любым компьютером и мониторинг сети.
Windows NT Server может использоваться как сервер связи с мейнфреймам. Для этого создан специальный продукт Microsoft SNA Server, позволяющий легко объединить в одной сети IBM PC-совместимые рабочие станции и мощные мейнфреймы.
Наконец, Windows NT Server является платформой для нового производительного почтового сервера Microsoft Exchange.
13. Классификация ОС.
Операционные системы могут различаться особенностями реализации внутренних алгоритмов управления основными ресурсами компьютера (процессорами, памятью, устройствами), особенностями использованных методов проектирования, типами аппаратных платформ, областями использования и многими другими свойствами.
Классификация по различным признакам:.
Особенности алгоритмов управления ресурсами.
От эффективности алгоритмов управления локальными ресурсами компьютера во многом зависит эффективность всей сетевой ОС в целом. Поэтому, характеризуя сетевую ОС, часто приводят важнейшие особенности реализации функций ОС по управлению процессорами, памятью, внешними устройствами автономного компьютера. Так, например, в зависимости от особенностей использованного алгоритма управления процессором, операционные системы делят на многозадачные и однозадачные, многопользовательские и однопользовательские, на системы, поддерживающие многонитевую обработку и не поддерживающие ее, на многопроцессорные и однопроцессорные системы.
Поддержка многозадачности. По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса:
— однозадачные (например, MS-DOS, MSX);
— многозадачные (OC EC, OS/2, UNIX, Windows 95).
Поддержка многопользовательского режима. По числу одновременно работающих пользователей ОС делятся на:
— однопользовательские (MS-DOS, Windows 3. x, ранние версии OS/2);
— многопользовательские (UNIX, Windows NT).
Вытесняющая и невытесняющая многозадачность. Важнейшим разделяемым ресурсом является процессорное время. Способ распределения процессорного времени между несколькими одновременно существующими в системе процессами (или нитями) во многом определяет специфику ОС. Среди множества существующих вариантов реализации многозадачности можно выделить две группы алгоритмов:
— невытесняющая многозадачность (NetWare, Windows 3. x);
— вытесняющая многозадачность (Windows NT, OS/2, UNIX).
Поддержка многонитевости. Важным свойством операционных систем является возможность распараллеливания вычислений в рамках одной задачи. Многонитевая ОС разделяет процессорное время не между задачами, а между их отдельными ветвями (нитями).
Многопроцессорная обработка. Другим важным свойством ОС является отсутствие или наличие в ней средств поддержки многопроцессорной обработки — мультипроцессирование. Мультипроцессирование приводит к усложнению всех алгоритмов управления ресурсами.
Многопроцессорные ОС могут классифицироваться по способу организации вычислительного процесса в системе с многопроцессорной архитектурой: асимметричные ОС и симметричные ОС. Асимметричная ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам. Симметричная ОС полностью децентрализована и использует весь пул процессоров, разделяя их между системными и прикладными задачами.
14. ОС для рабочих групп.
Сетевые операционные системы имеют разные свойства в зависимости от того, предназначены они для сетей масштаба рабочей группы (отдела), для сетей масштаба кампуса или для сетей масштаба предприятия.
— Сети отделов — используются небольшой группой сотрудников, решающих общие задачи. Главной целью сети отдела является разделение локальных ресурсов, таких как приложения, данные, лазерные принтеры и модемы. Сети отделов обычно не разделяются на подсети.
— Сети кампусов — соединяют несколько сетей отделов внутри отдельного здания или внутри одной территории предприятия. Эти сети являются все еще локальными сетями, хотя и могут покрывать территорию в несколько квадратных километров. Сервисы такой сети включают взаимодействие между сетями отделов, доступ к базам данных предприятия, доступ к факс-серверам, высокоскоростным модемам и высокоскоростным принтерам.
— Сети предприятия (корпоративные сети) — объединяют все компьютеры всех территорий отдельного предприятия. Они могут покрывать город, регион или даже континент. В таких сетях пользователям предоставляется доступ к информации и приложениям, находящимся в других рабочих группах, других отделах, подразделениях и штаб-квартирах корпорации.
Главной задачей операционной системы, используемой в сети масштаба отдела, является организация разделения ресурсов, таких как приложения, данные, лазерные принтеры и, возможно, низкоскоростные модемы. Обычно сети отделов имеют один или два файловых сервера и не более чем 30 пользователей. Задачи управления на уровне отдела относительно просты. В задачи администратора входит добавление новых пользователей, устранение простых отказов, инсталляция новых узлов и установка новых версий программного обеспечения. Операционные системы сетей отделов хорошо отработаны и разнообразны, также, как и сами сети отделов, уже давно применяющиеся и достаточно отлаженные. Такая сеть обычно использует одну или максимум две сетевые ОС. Чаще всего это сеть с выделенным сервером NetWare 3. x или Windows NT, или же одноранговая сеть, например сеть Windows for Workgroups.
Следующим шагом в эволюции сетей является объединение локальных сетей нескольких отделов в единую сеть здания или группы зданий. Такие сети называют сетями кампусов. Сети кампусов могут простираться на несколько километров, но при этом глобальные соединения не требуются.
Операционная система, работающая в сети кампуса, должна обеспечивать для сотрудников одних отделов доступ к некоторым файлам и ресурсам сетей других отделов. Услуги, предоставляемые ОС сетей кампусов, не ограничиваются простым разделением файлов и принтеров, а часто предоставляют доступ и к серверам других типов, например, к факс-серверам и к серверам высокоскоростных модемов. Важным сервисом, предоставляемым операционными системами данного класса, является доступ к корпоративным базам данных, независимо от того, располагаются ли они на серверах баз данных или на миникомпьютерах.
Следующим шагом в эволюции сетей является объединение локальных сетей нескольких отделов в единую сеть здания или группы зданий. Такие сети называют сетями кампусов. Сети кампусов могут простираться на несколько километров, но при этом глобальные соединения не требуются.
Операционная система, работающая в сети кампуса, должна обеспечивать для сотрудников одних отделов доступ к некоторым файлам и ресурсам сетей других отделов. Услуги, предоставляемые ОС сетей кампусов, не ограничиваются простым разделением файлов и принтеров, а часто предоставляют доступ и к серверам других типов, например, к факс-серверам и к серверам высокоскоростных модемов. Важным сервисом, предоставляемым операционными системами данного класса, является доступ к корпоративным базам данных, независимо от того, располагаются ли они на серверах баз данных или на миникомпьютерах.
15. Вытесняющие и невытесняющие алгоритмы планирования.
Существует два основных типа процедур планирования процессов — вытесняющие (preemptive) и невытесняющие (non-preemptive).
Non-preemptive multitasking — невытесняющая многозадачность — это способ планирования процессов, при котором активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление планировщику операционной системы для того, чтобы тот выбрал из очереди другой, готовый к выполнению процесс.
Preemptive multitasking — вытесняющая многозадачность — это такой способ, при котором решение о переключении процессора с выполнения одного процесса на выполнение другого процесса принимается планировщиком операционной системы, а не самой активной задачей.
Основным различием между preemptive и non-preemptive вариантами многозадачности является степень централизации механизма планирования задач. При вытесняющей многозадачности механизм планирования задач целиком сосредоточен в операционной системе, и программист пишет свое приложение, не заботясь о том, что оно будет выполняться параллельно с другими задачами. При этом операционная система выполняет следующие функции: определяет момент снятия с выполнения активной задачи, запоминает ее контекст, выбирает из очереди готовых задач следующую и запускает ее на выполнение, загружая ее контекст.
При невытесняющей многозадачности механизм планирования распределен между системой и прикладными программами. Прикладная программа, получив управление от операционной системы, сама определяет момент завершения своей очередной итерации и передает управление ОС с помощью какого-либо системного вызова, а ОС формирует очереди задач и выбирает в соответствии с некоторым алгоритмом (например, с учетом приоритетов) следующую задачу на выполнение. Такой механизм создает проблемы как для пользователей, так и для разработчиков.
16. Файловая система HTFS.
NTFS выросла из файловой системы NPFS, разрабатываемой совместно IBM и Microsoft для проекта OS/2. Она начала использоваться вместе с Windows NT 3.1 в 1993 году. Windows NT 3.1 должна была составить конкуренцию серверам на базе NetWare и Unix, поэтому NTFS вобрала в себя все технологические достижения того времени. Вот основные из них:
1. Работа с большими дисками. NTFS имеет размер кластера 512 байт, что в принципе оптимально, но его можно менять до 64 Кб. Более важно то, что NTFS способна теоретически работать с томами размером в 16,777, 216 терабайт. Теоретически, потому что таких жестких дисков пока не существует.
2. Устойчивость. NTFS содержит две копии аналога FAT, которые называются MFT (Master File Table). В отличие от FAT MS-DOS, MFT больше напоминает таблицу БД. Если оригинал MTF поврежден в случае аппаратной ошибки (например, появление bad-сектора), то система при следующей загрузке использует копию MTF и автоматически создает новый оригинал, уже с учетом повреждений. Но это не самое главное. Главное, что NTFS использует систему транзакций при записи файлов на диск. Эта система пришла из СУБД, где защита целостности данных — жизненно-важное дело. Уже это говорит о ее эффективности. В упрощенном виде она работает так:
— Драйвер ввода/вывода NTFS инициирует процесс записи, одновременно сообщая сервису Log File Service вести регистрацию всего происходящего;
— данные пишутся в КЭШ, под управлением сервиса Cash Manager;
— Cash Manager посылает данные Virtual Memory Manager (менеджеру виртуальной памяти) для записи на диск в фоновом режиме;
— Virtual Memory Manager посылает данные драйверу диска, пропустив их через Fault Tolerant Driver;
— драйвер диска шлет их контроллеру, который уже пишет их либо в КЭШ, либо прямо на диск;
— если это операция проходит без ошибок, запись регистрации удаляется;
— если происходит сбой, запись остается в таблице транзакций, и при следующем доступе к диску Log File Service обнаруживает эту запись и просто восстанавливает все, как было до этой операции.
Такая система гарантирует абсолютную сохранность данных в случае копирования, перемещения и удаления файлов или директорий. При внесении изменений в файл вы теряете те изменения, которые находились в момент сбоя в памяти или в КЭШе контроллера, и не успели записать на диск.
3. Защищенность. NTFS рассматривает файлы как объекты. Каждый файловый объект обладает свойствами такими как его имя, дата создания, дата последнего обновления, архивный статус и дескриптор безопасности. Файловый объект также содержит набор методов, которые позволяют с ним работать, такие, как open, close, read и write. Пользователи, включая сетевые, для обращения к файлу вызывают эти методы, а Security Reference Monitor определяет, имеет ли пользователь необходимые права для вызова какого-либо из этих методов. Кроме этого, файлы можно шифровать.
4. Компрессия данных. NTFS позволяет сжимать отдельные каталоги и файлы, в отличие от DriveSpace который позволял сжимать только диски целиком. Это очень удобно, для экономии пространства на диске, например можно сжимать «на лету» большие географические файлы формата BMP или текстовые файлы, причем для пользователя все это будет прозрачно.
5. Поддержка формата ISO Unicode.формат Unicode использует 16 бит для кодировки каждого символа, в отличие от ASCII, который использовал 8 или 7 бит. Для простого пользователя это означает то, что теперь он может называть файлы на любом языке, хоть на китайском — система это будет поддерживать, не требуя изменить кодовую страницу, как это делал DOS и W9x.
17. Закон об авторском праве.
Законодательством РФ об авторском праве и смежных правах сост. из настоящего закона, являющегося частью гражданского законодательства РФ и действует на всей территории РФ, издаваемый в соответствии с настоящим законом и других актов законодательства РФ о «правовой охране программ ЭВМ и БД». В соответствие со статьёй 2 законодательства РФ об авторском праве и смежных правах, автором признаётся физическое лицо, трудом которого создан продукт. БД — объективная форма предоставления и организации совокупности данных, так же эти данные должны быть найдены и обработаны с помощью ЭВМ. Программа для ЭВМ — объективная форма предоставления совокупности данных и команд предназначенных для функционирования ЭВМ и других компьютерных устройств с целью получения результата включая дополнительные материалы в ходе работы ЭВМ и порождаемые ей аудио — визуальные отображения. Охрана программы для ЭВМ распространяется на все виды программ, в том числе и на операционные системы, которые могут быть выражены на любом языке и в любой форме, включая исходные данные, подход, и т. д.
18. Специальные лицензионные соглашения.
Лицензионные соглашения бывают нескольких видов: Исключительная лицензия — продажа всех имущественных прав на программный продукт или базу данных, покупателю лицензии предоставляется исключительное право на их использование, а автор или владелец патента отказывается от самостоятельного их применения или предоставления другим лицам. Это самый дорогой вид лицензии, к нему прибегают для монопольного владения с целью извлечения дополнительной прибыли либо с целью прекращения существования на рынке программных средств, программного продукта. Простая лицензия — лицензиар предоставляет право лицензиату использовать программный продукт или базу данных, оставляя за собой право применять их и предоставлять на аналогичных условиях неограниченному числу лиц (лицензиат при этом не может сам выдавать сублицензии, может лишь продать копии приобретенного программного продукта или базы данных). Такой вид лицензии приобретают дилер (торговец) либо фирмы-производители, использующие купленные лицензии как сопутствующий товар к основному виду деятельности. Например, многие производители и фирмы, торгующие компьютерной техникой, осуществляют продажу вычислительной техники с установленным лицензионным программным обеспечением (операционная система, текстовый редактор, электронная таблица, графические пакеты и т. д.). Этикеточная лицензия — лицензия на одну копию программного продукта или базы данных. Данный тип лицензии применяется при розничной продаже. Каждый официальный покупатель заключает лицензионное соглашение с продавцом на их использование, но при этом сохраняется авторское право разработчика.