Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на ГОС экзамен.doc
Скачиваний:
7
Добавлен:
27.10.2018
Размер:
6.99 Mб
Скачать

Монолитные системы

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

Многоуровневые системы

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

Модель клиент-сервер и микроядра

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

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

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

3.8. МОНОПОЛЬНІ РЕСУРСИ. ПРОБЛЕМА ТУПИКІВ. ДИСЦИПЛІНИ РОЗПОДІЛУ РЕСУРСІВ. ПОШУК ТУПИКІВ ТА ЇХ ЗНИЩЕННЯ.

Монопольные ресурсы (принтеры, магнитные ленты, каналы связи)– это ресурсы неперераспределяемые(ресурс не может быть отобран без фатальных для процесса последствий) и неразделяемые(один и тот же ресурс в одинаковые моменты времени не могут использовать два процесса). Данные ресурсы можно использовать повторно, т.е. ресурсы после их использования процессами не пропадают и не убывают, а могут быть использованы другим процессом. Тупики – это проблема синхронизации.

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

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

предотвращение тупиков,

распознавание тупиков,

восстановление системы после тупиков.

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

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

«Голодание» - Процессы, ожидающие ресурсов, встают в очереди к этим ресурсам. Такая очередь может обслуживаться любой невытесняющей стратегией планирования. Моментом, когда менеджер ресурса принимает решение об обслуживании, является освобождение ресурса.

Алгоритм «Банкира».

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

2.Клиент должен заранее указать максимальную "потребность" во флоринах для этой сделки.

3.Пока "заем" не превышает заранее установленную "потребность", клиент может увеличивать или уменьшать свой заем флорин за флорином.

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

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

3.9. ПАРАЛЕЛЬНЕ ВИКОНАННЯ ПРОЦЕСІВ. ФОРМУЛЮВАННЯ ЗАДАЧІ «ВИРОБНИКИ-СПОЖИВАЧІ» ТА МЕТОДИ ЇЇ ВИРІШЕННЯ.

Параллельными называются процессы, у которых интервалы времени выполнения перекрываются за счет использования разных ресурсов одной и той же вычислительной системы или за счет перераспределения одного и того же набора ресурсов. Основной задачей управления параллельным выполнением является задача взаимного исключения (mutual exclusion, сокращенно - mutex): два процесса не могут выполнять одновременный доступ к разделяемым ресурсам. Взаимное исключение является расширением задачи транзактивности на любые ресурсы. Если процессор одновременно получает два запроса, то он выполняет их последовательно. Каждая процессорная команда имеет свойства транзакции: она или выполняется полностью, или вообще не выполняется. Задача семафоров использует блокировку ожидающего процесса - перевод его из списка процессов, планируемых на выполнение (готовых) в список ожидающих (заблокированных). Этим экономится процессорное время, в противном случае попусту растрачиваемое в занятом ожидании, а затраты сводятся к переключению процессов. Такая возможность обеспечивается: а).введением специальных целочисленных общих переменных, которые называются семафорами (semaphore); б). добавлением к набору элементарных действий, из которых строятся процессы, операций над семафорами: V-операции и P-операции. V-операция есть операция с одним операндом, который должен быть семафором. Выполнение операции состоит в увеличении значения аргумента на 1, это действие должно быть атомарным. P-операция есть операция с одним операндом, который должен быть семафором. Выполнение операции состоит в уменьшении значения аргумента на 1, если только это действие не приведет к отрицательному значению операнда. Выполнение P-операции, то есть, принятие решение о том, что момент является подходящим для уменьшения аргумента, и последующее его уменьшение должно быть атомарным. Атомарность P-операции и является потенциальной задержкой: если процесс пытается выполнить P-операцию над семафором, значение которого в данный момент нулевое, данная P-операция не может завершиться пока другой процесс не выполнить V-операцию над этим семафором. Несколько процессов могут начать одновременно P-операцию над одним и тем же семафором. Тогда при установке семафора в 1 только одна из P-операций завершится, какая именно - мы обсудим позже. Защита разделяемых ресурсов теперь выглядит следующим образом. Каждый ресурс защищается своим семафором, значение которого может быть 1 - свободен или 0 - занят. Процесс, выполняющий доступ к ресурсу, инициирует P-операцию. Если ресурс занят - процесс задерживается в своей P-операции до освобождения ресурса. Когда ресурс освобождается, P-операция процесса завершается и процесс занимает ресурс. При освобождении ресурса процесс выполняет V-операцию. "Производители-потребители". Пусть мы имеем два циклических процесса, которые мы назовем "производитель" и "потребитель". Производитель в каждой итерации своего цикла вырабатывает (производит) порцию информации, которую он помещает в общий для обоих процессов буфер. Предположим для начала, что емкость буфера неограничена. Потребитель в каждой итерации своего цикла выбирает из буфера порцию информации, выработанную производителем, и обрабатывает (потребляет) ее. Задача состоит в синхронизации действий производителя и потребителя таким образом, чтобы не допустить потерь и искажений информации, во-первых, и голодания процессов, во-вторых. Решение достигается при помощи единственного общего семафора, играющего роль счетчика числа порций в буфере. Исходное значение семафора 0. Производитель каждую итерацию своего цикла заканчивает V-операцией, увеличивающей значение счетчика. Потребитель каждую свою итерацию начинает P-операцией. Если буфер пуст, то потребитель задержится в своей P-операции до появления в буфере очередной порции. Таким образом, если потребитель работает быстрее производителя, он будет время от времени простаивать, если производитель работает быстрее - в буфере будут накапливаться порции. В реальных задачах такого рода (например, кольцевой буферизации, рассмотренной нами в главе 6) буфер всегда имеет некоторую конечную емкость. Если производитель работает быстрее, то при заполнении буфера он должен приостанавливаться, ожидая освобождения места в буфере. Это легко обеспечить, введя новый семафор, выполняющий роль счетчика свободных мест в буфере.

3.10. ЗАСОБИ ВЗАЄМОДІЇ ПРОЦЕСІВ. ПОРІВНЯЛЬНА ХАРАКТЕРИСТИКА БАЗОВИХ МЕХАНІЗМІВ IPC.

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

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

3.11. Інтерфейс програмування API. Зв’язок між функціями та системними викликами. Структурна схема реалізації системних викликів. Механізми передавання параметрів в системних викликах. Приклади API для ОС Windows та Unix.

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

Для обеспечения передачи параметров диспетчеру системных вызовов и процедурам ОС могут использоваться различные механизмы:

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

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

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

3. 12 СУБД. ОСНОВНІ ФУНКЦІЇ. ВИДИ СУБД.

Активная деятельность по отысканию приемлемых способов обобществления непрерывно растущего объема информации привела к созданию в начале 60-х годов специальных программных комплексов, называемых "Системы управления базами данных" (СУБД).

Основная особенность СУБД – это наличие процедур для ввода и хранения не только самих данных, но и описаний их структуры. Файлы, снабженные описанием хранимых в них данных и находящиеся под управлением СУБД, стали называть банки данных, а затем "Базы данных" (БД).

Язык запросов СУБД позволяет обращаться за данными как из программ, так и с терминалов.

Основные функции СУБД

Непосредственное управление данными во внешней памяти.

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

Управление буферами оперативной памяти

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

Управление транзакциями

Транзакция - это последовательность операций над БД, рассматриваемых СУБД как единое целое. Либо транзакция успешно выполняется, и СУБД фиксирует (COMMIT) изменения БД, произведенные этой транзакцией, во внешней памяти, либо ни одно из этих изменений никак не отражается на состоянии БД. Понятие транзакции необходимо для поддержания логической целостности БД. Если вспомнить наш пример информационной системы с файлами СОТРУДНИКИ и ОТДЕЛЫ, то единственным способом не нарушить целостность БД при выполнении операции приема на работу нового сотрудника является объединение элементарных операций над файлами СОТРУДНИКИ и ОТДЕЛЫ в одну транзакцию. Таким образом, поддержание механизма транзакций является обязательным условием даже однопользовательских СУБД (если, конечно, такая система заслуживает названия СУБД). Но понятие транзакции гораздо более важно в многопользовательских СУБД. То свойство, что каждая транзакция начинается при целостном состоянии БД и оставляет это состояние целостным после своего завершения, делает очень удобным использование понятия транзакции как единицы активности пользователя по отношению к БД. При соответствующем управлении параллельно выполняющимися транзакциями со стороны СУБД каждый из пользователей может в принципе ощущать себя единственным пользователем СУБД (на самом деле, это несколько идеализированное представление, поскольку в некоторых случаях пользователи многопользовательских СУБД могут ощутить присутствие своих коллег). С управлением транзакциями в многопользовательской СУБД связаны важные понятия сериализации транзакций и сериального плана выполнения смеси транзакций. Под сериализаций параллельно выполняющихся транзакций понимается такой порядок планирования их работы, при котором суммарный эффект смеси транзакций эквивалентен эффекту их некоторого последовательного выполнения. Сериальный план выполнения смеси транзакций - это такой план, который приводит к сериализации транзакций. Понятно, что если удается добиться действительно сериального выполнения смеси транзакций, то для каждого пользователя, по инициативе которого образована транзакция, присутствие других транзакций будет незаметно (если не считать некоторого замедления работы по сравнению с однопользовательским режимом).

Журнализация

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

Во всех случаях придерживаются стратегии "упреждающей" записи в журнал (так называемого протокола Write Ahead Log - WAL). Грубо говоря, эта стратегия заключается в том, что запись об изменении любого объекта БД должна попасть во внешнюю память журнала раньше, чем измененный объект попадет во внешнюю память основной части БД. Известно, что если в СУБД корректно соблюдается протокол WAL, то с помощью журнала можно решить все проблемы восстановления БД после любого сбоя.

Поддержка языков БД

Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные. В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language). В нескольких лекциях этого курса язык SQL будет рассматриваться достаточно подробно, а пока мы перечислим основные функции реляционной СУБД, поддерживаемые на "языковом" уровне (т.е. функции, поддерживаемые при реализации интерфейса SQL). Прежде всего, язык SQL сочетает средства SDL и DML, т.е. позволяет определять схему реляционной БД и манипулировать данными. При этом именование объектов БД (для реляционной БД - именование таблиц и их столбцов) поддерживается на языковом уровне в том смысле, что компилятор языка SQL производит преобразование имен объектов в их внутренние идентификаторы на основании специально поддерживаемых служебных таблиц-каталогов. Внутренняя часть СУБД (ядро) вообще не работает с именами таблиц и их столбцов. Наконец, авторизация доступа к объектам БД производится также на основе специального набора операторов SQL. Идея состоит в том, что для выполнения операторов SQL разного вида пользователь должен обладать различными полномочиями. Пользователь, создавший таблицу БД, обладает полным набором полномочий для работы с этой таблицей. В число этих полномочий входит полномочие на передачу всех или части полномочий другим пользователям, включая полномочие на передачу полномочий. Полномочия пользователей описываются в специальных таблицах-каталогах, контроль полномочий поддерживается на языковом уровне.

Виды СУБД.

К ранним СУБД относятся:

  • Системы, основанные на инвертированных списках

  • Иерархические системы.

  • Сетевые системы

К более поздним относятся:

  • Реляционные

  • Объектно-ориентированные

  • Смесь двух предыдущих.

3.13 РЕЛЯЦІЙНІ БАЗИ ДАНИХ. ОСНОВНІ ПОНЯТТЯ, ВЛАСТИВОСТІ ВІДНОШЕНЬ, МОДЕЛЬ ДАНИХ, РЕЛЯЦІЙНІ ОПЕРАЦІЇ І ОБЧИСЛЕННЯ. БАЗОВЫЕ ПОНЯТИЯ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ.

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

1. Тип данных

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

2. Домен

Понятие домена более специфично для баз данных, хотя и имеет некоторые аналогии с подтипами в некоторых языках программирования. В самом общем виде домен определяется заданием некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу типа данных. Если вычисление этого логического выражения дает результат "истина", то элемент данных является элементом домена. Наиболее правильной интуитивной трактовкой понятия домена является понимание домена как допустимого потенциального множества значений данного типа. Например, домен "Имена" в нашем примере определен на базовом типе строк символов, но в число его значений могут входить только те строки, которые могут изображать имя (в частности, такие строки не могут начинаться с мягкого знака). Следует отметить также семантическую нагрузку понятия домена: данные считаются сравнимыми только в том случае, когда они относятся к одному домену. В нашем примере значения доменов "Номера пропусков" и "Номера групп" относятся к типу целых чисел, но не являются сравнимыми. Заметим, что в большинстве реляционных СУБД понятие домена не используется, хотя в Oracle V.7 оно уже поддерживается.

3. Схема отношения, схема базы данных

Схема отношения - это именованное множество пар {имя атрибута, имя домена (или типа, если понятие домена не поддерживается)}. Степень или "арность" схемы отношения - мощность этого множества. Степень отношения СОТРУДНИКИ равна четырем, то есть оно является 4-арным. Если все атрибуты одного отношения определены на разных доменах, осмысленно использовать для именования атрибутов имена соответствующих доменов (не забывая, конечно, о том, что это является всего лишь удобным способом именования и не устраняет различия между понятиями домена и атрибута). Схема БД (в структурном смысле) - это набор именованных схем отношений.

4. Кортеж, отношение

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

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

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

Фундаментальные свойства отношений

1.Отсутствие кортежей-дубликатов

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

2. Отсутствие упорядоченности кортежей

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

3. Отсутствие упорядоченности атрибутов

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

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

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

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

Реляционные операции и счисление.

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

Рис. 3.3. Некоторые операции реляционной алгебры

Созданы языки манипулирования данными, позволяющие реализовать все операции реляционной алгебры и практически любые их сочетания. Среди них наиболее распространены SQL (Structured Query Language – структуризованный язык запросов) и QBE (Quere-By-Example – запросы по образцу) [3, 5]. Оба относятся к языкам очень высокого уровня, с помощью которых пользователь указывает, какие данные необходимо получить, не уточняя процедуру их получения. С помощью единственного запроса на любом из этих языков можно соединить несколько таблиц во временную таблицу и вырезать из нее требуемые строки и столбцы (селекция и проекция).

3.14.КОЛІРНІ ПРОСТОРИ RGB та CMYK. СФЕРА ЗАСТОСУВАННЯ ТА ТА ПРИЧИНИ ЇХ РОЗХОДЖЕННЯ. ОДЕРЖАННЯ КОЛЬОРІВ ОДНОГО ПРОСТОРУ ЧЕРЕЗ ЗНАЧЕННЯ КОЛЬОРІВ ІНШОГО.

Человеческий глаз воспринимает цвета, основываясь на различной длине световых волн, которые поглощаются и отражаются различными предметами. На самом деле цвет того или иного объекта определяется светом, который попадет на освещаемый объект и зрителем. Имея дело с разницей между цветами, производимыми естественными источниками освещения и экраном, испускающим свет, Мы имеем дело с фундаментальными проблемами, когда работаем на компьютере с цветами, которые в конечном итоге выводятся на печать. Цвета, наблюдаемые на экране компьютера, создаются путем комбинирования красного(Red), зеленого(Green) и синего (Blue) цвета, испускаемого монитором при помощи электронных пушек собственно красной, зеленой и синей. Цвета, создаваемые в печатной машине базируются на печатных красках цвета циан (Cyan), маджента (Magenta) и желтый (Yellow). Хотя световой поток состоит из волн разной длинны, наши глаза в первую очередь реагируют на световые длины волн красного, зеленого и синего цветов. Красный, зеленый, синий называют аддитивными цветами или цветами на основе сложения, т.к. бесконечное множество цветов может быть создано на основе добавления различных степеней насыщенности красного, зеленого и синего света. Путем добавления одних основных цветов к другим получают еще три цвета: циан, маджента и желтый. Если сложить вместе R,G,B то получится

белый свет. R+G+B= White,G+B=Cyan(циан),B+R=Magenta (маджента)G+R=Yellow(желтый) Из циана, мадженты и желтого могут быть созданы другие бесконечные цвета. Например, ниже показано, как эти три цвета могут применяться для получения черного, красного, зеленого и синего: С+M+Y=Black, C+M=Blue, Y+M=Red, Y+C=Green

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

3.15 ОДЕРЖАННЯ В WINDOWS ПРОГРАМАХ ЗОБРАЖЕННЯ ПРИМІТИВІВ (Крапки,

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

Функция рисования точки SetPixel устанавливает цвет точки с заданными координатами:

COLORREF WINAPI SetPixel(

HDC hdc, // контекст отображения

int nXPos, // x-координата точки

int nYPos, // y-координата точки

COLORREF clrref); // цвет точки

Пример: SetPixel(hdc, 0, 0, RGB(0xff, 0, 0));

Для рисования линии в контексте отображения хранятся координаты текущей позиции пера. Для изменения текущей позиции пера в Windows существует системный вызов:

BOOL WINAPI MoveToEx(

HDC hdc, int x, int y, // x,y - координата

POINT FAR* lppt); // указатель на структуру

//POINT, туда переписываются старые координаты пера

Он перемещает позицию пера в новую точку

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

BOOL WINAPI LineTo(HDC hdc, int xEnd, int yEnd);

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

Рисование ломаной кривой

BOOL WINAPI Polyline(

HDC hdc, const POINT FAR* lppt, // указатель на массив структур POINT

int cPoints); // размер массива

Функции Polyline , предназначенной для рисования ломаных линий, следует передать идентификатор контекста отображения hdc, указатель lppt на массив структур POINT, в котором должны находится координаты начала ломаной линии, координаты точек излома и координаты конца ломаной линии, а также размер этого массива cPoints. Если ломаная линия не замкнута, ее последняя точка не рисуется

Рисование дуги эллипса функция Arc позволяет нарисовать дугу эллипса или окружности:

BOOL WINAPI Arc(

HDC hdc, int nxLeft, int nyTop, // верхий левый угол

int nxRight, int nyBottom, // правый нижний угол

int nxStart, int nyStart, // начало дуги

int nxEnd, int nyEnd); // конец дуги

Параметры (nxLeft,nyTop) и (nxRight,nyBottom) задают координаты, соответственно, верхнего левого и правого нижнего углов воображаемого прямоугольника, в который вписан эллипс.

Начало дуги эллипса определяется пересечением эллипса с воображаемой прямой линией, проведенной из центра эллипса (xC,yC) в точку (xStart,yStart). Конец дуги определяется аналогично - как пересечение эллипса с воображаемой прямой линии, проведенной из центра эллипса в точку (xEnd,yEnd).

Дуга рисуется в направлении против часовой стрелки.

Рисование прямоугольника

BOOL WINAPI Rectangle(

HDC hdc, int nxTL, // координата x верхнего левого угла

int nyTL, // координата y верхнего левого угла

int nxBR, // координата x правого нижнего угла

int nyBR); // координата y правого нижнего угла

С помощью функции RoundRect можно нарисовать прямоугольник со скругленными углами

BOOL WINAPI RoundRect(

HDC hdc, int nxTL, // координата x верхнего левого угла

int nyTL, // координата y верхнего левого угла

int nxBR, // координата x правого нижнего угла

int nyBR, // координата y правого нижнего угла

int nxEllipse, // ширина эллипса

int nyEllipse); // высота эллипса

Для рисования эллипса вы можете использовать функцию Ellipse

BOOL WINAPI Ellipse(

HDC hdc, int nxTL, // координата x верхнего левого угла

int nyTL, // координата y верхнего левого угла

int nxBR, // координата x правого нижнего угла

int nyBR); // координата y правого нижнего угла

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

Сегмент эллипса можно нарисовать при помощи функции Chord

BOOL WINAPI Chord(

HDC hdc, int nxLeft, int nyTop, // верхий левый угол

int nxRight, int nyBottom, // правый нижний угол

int nxStart, int nyStart, // начало дуги

int nxEnd, int nyEnd); // конец дуги

Для рисования сектора эллипса следует использовать функцию Pie

BOOL WINAPI Pie(

HDC hdc, int nxLeft, int nyTop, // верхний левый угол

int nxRight, int nyBottom, // правый нижний угол

int nxStart, int nyStart, // начало дуги

int nxEnd, int nyEnd); // конец дуги

Рисование многоугольников выполняется функцией Polygon , аналогичной по своим параметрам функции Polyline, с помощью которой рисуются ломаные линии:

BOOL WINAPI Polygon(

HDC hdc, const POINT FAR* lppt, // указатель на массив структур POINT

int cPoints); // размер массива

С помощью функции PolyPolygon можно нарисовать одновременно несколько многоугольников:

BOOL WINAPI PolyPolygon(

HDC hdc, const POINT FAR*lppt, // указатель на массив структур POINT

int FAR* lpnPolyCounts, // адрес массива количества точек в многоугольниках

int cPolygons); // количество многоугольников

Параметр cPolygons определяет количество многоугольников, которые нужно нарисовать. Параметр lppt должен содержать указатель на массив структур типа POINT, содержащий координаты вершин всех многоугольников. Через параметр lpnPolyCounts передается указатель на массив целых чисел. Каждое число в этом массиве определяет количество точек в соответствующем многоугольнике. В PolyPolygon не замыкает ломаную линию.

3.16 ПРОВЕСТИ ПОРІВНЯННЯ ТЕХНОЛОГІЙ ВЗАЄМОДІЇ ПРОЦЕСІВ У ЛОКАЛЬНІЙ МЕРЕЖІ. ПОШТОВІ СКРИНЬКИ. ІМЕНОВАНІ КАНАЛИ. ВИЛУЧЕНИЙ ВИКЛИК ПРОЦЕДУР. ГНІЗДА.

Почтовые ящики MailSlot - это файл, который находится в памяти, для доступа к которому используются стандартные файловые функции Win32. Данные в mailslot могут быть записаны в любой форме, но общий размер не может быть больше 64K. Почтовые ящики служат для симплексной передачи информационных сообщений между компьютерами внутри локальной сети.Почтовые ящики используют протокол UDP, т.е. являются дейтаграмными пакетами без подтверждения приёма. Могут быть надстройками протоколов как IPX/SPX, так и TCP/IP.

Система имён.

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

. – локальный компьютер, передача в внутри одного компьютера.

* - все компьютеры внутри сегмента компьютера отправителя.

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

собственно имя компьютера – передача осуществляется указанным компьютером.

Имя почт_ящика может быть любое.

Пример:

\\*\mailslot\messngк

\\CAT-10\mailslot\messngz

только локально можно создавать почтовый слот. А вот использовать можно любые почтовые слоты. Форма имени при открытии почтового слота.

\\ComputerName\mailslot\имя_почт_ящика или \\DomainName\mailslot\имя_почт_ящика

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

Система имён.

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

\\имя компьютера\pipe\имя_почт_ящика

В качестве имени компьютера могут использоваться служебные символы:

. – локальный компьютер, передача в внутри одного компьютера.

* - все компьютеры внутри сегмента компьютера отправителя.

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

собственно имя компьютера – передача осуществляется указанным компьютером.

Имя почт_ящика может быть любое.

Пример:

\\.\pipe\my_first_pipe

\\CAT-10\pipe\ my_first_pipe

RPC –удаленный вызов процедур. Средство удаленного вызова процедур (RPC, Remote Procedure Call) позволяет создавать приложения, состоящие из произвольного числа процедур, часть которых выполняется локально (на данном компьютере), а часть - по сети на удаленных компьютерах. Таким образом, RPC представляет модель работы с сетью, ориентированную на процедуры, а не на транспорт (передачу данных), что позволяет упростить разработку распределенных приложений. Традиционно сетевое ПО основывается на модели ‘ввод-вывод’. В ОС Windows’NT сетевая операция начинается с того, что приложение инициирует запрос операции удаленного ввода-вывода. ОС обрабатывает запрос, передавая его редиректору (выступающему в качестве удаленной файловой системы). После обработки запроса и возврата данных удаленной файловой системой сетевая плата генерирует прерывание. Ядро ОС обрабатывает это прерывание, а исходная программа ввода-вывода возвращает результаты вызывающей программе. PRC использует совершенно другой подход. Приложения RPC структурно выглядят так же, как и обычные приложения - имеют главную программу, которая с целью выполнения специфических задач вызывает необходимые процедуры. Отличие между приложениями RPC и обычными программами состоит в том, что некоторые процедуры в приложении RPC выполняются на удаленных компьютерах, а другие - локально Для самого приложения RPC все процедуры выглядят локальными, таким образом нет необходимости заставлять программиста писать код для передачи запроса на вычисления, ввод-вывод по сети, работы с сетевыми протоколами, обработки сетевых ошибок, ожидания результатов и т.п. - программное обеспечение RPC для Windows’NT выполняет эти задачи автоматически и для любых доступных сетевых протоколов. Функционирует приложение RPC следующим образом. В процессе работы оно вызывает как локальные, так и отсутствующие (недоступные) на локальной машине процедуры. Для обработки последнего случая приложение связывается с локальной DLL, содержащей по одной процедуре-заглушке (stub procedure) для каждой из удаленной процедур. Процедура-заглушка имеет то же имя и интерфейс, что и удаленная процедура, однако вместо выполнения соответствующей операции заглушка принимает передаваемые ей параметры и выполняет операцию их преобразования (marsaling) для передачи по сети. Далее заглушка вызывает процедуры библиотеки RPC периода выполнения (Run Time); они находят компьютер, на котором расположены удаленные процедуры, определяют используемые этим компьютером механизмы транспорта и посылают запрос (при помощи локального программного обеспечения сетевого транспорта). Когда удаленный компьютер (выполняющий в этот момент функцию сервера) получает запрос RPC, он выполняет обратное преобразование параметров, реконструирует оригинальный вызов процедуры и осуществляет фактический вызов ее. По окончании работы сервер выполняет обратную последовательность действий для возврата результатов вызывающей программе.

Гнезда (Сокеты).Для передачи данных с использованием протоколов TCP ,UDP ,IPX,SPX каждое приложение должно создать объект, который называется сокетом. Впервые понятие сокета как реализации функций интерфейса прикладного программирования было предложено в университете Беркли, Калифорния (University of California at Berkeley Sockets API) при разработке спецификации Berkeley UNIX). Сокет обеспечивает конечную точку соединения и функционирует как двунаправленный канал для входящих и исходящих данных между компьютерами в сети. При программировании сокет более всего похож на идентификатор файла (file handle), который нужен для выполнения над файлом операций чтения или записи. Прежде чем приложение, запущенное на узле сети, сможет выполнять передачу или прием данных, оно должно создать сокет и проинициализировать его, указав некоторые параметры.

3.17 ПРОВЕСТИ ПОРІВНЯННЯ МЕТОДІВ ПОБУДОВИ БАГАТОРІВНЕВИХ ПРОГРАМНИХ ЗАСОБІВ. ДИНАМІЧНІ БІБЛІОТЕКИ. COM І ACTIVEX. ПРОВАЙДЕРИ. СЛУЖБИ. ДРАЙВЕРА.

Dll При использовании динамической компоновки загрузочный код нескольких (или нескольких десятков) функций объединяется в отдельные файлы, загружаемые в оперативную память в единственном экземпляре. Программы, работающие параллельно, вызывают функции, загруженные в память из файлов библиотек динамической компоновки, а не из файлов программ. Таким образом, используя механизм динамической компоновки, в загрузочном файле программы можно расположить только те функции, которые являются специфическими для данной программы. Те же функции, которые нужны всем (или многим) программам, работающим параллельно, можно вынести в отдельные файлы - библиотеки динамической компоновки, и хранить в памяти в единственном экземпляре. Эти файлы можно загружать в память только при необходимости, например, когда какая-нибудь программа захочет вызвать функцию, код которой расположен в библиотеке. Механизм динамической компоновки используется не только в системе Windows. Более того, он был изобретен задолго до появления Windows. Например, в мультизадачных многопользовательских операционных системах VS1, VS2, MVS, VM, созданных для компьютеров IBM-370 и аналогичных (вспомните добрым словом ушедшую в прошлое серию ЕС ЭВМ и операционные системы SVS, TKS, СВМ, МВС), код функций, нужных параллельно работающим программам, располагается в отдельных библиотеках и может загружаться при необходимости в специально выделенную общую область памяти. Операционная система OS/2 также работает с DLL-библиотеками. DLL-библиотеки используются для экономии памяти, так как все запущенные приложения могут использовать один модуль DLL-библиотеки, не включая стандартные функции в состав своих модулей. С помощью DLL-библиотек можно организовать коллективное использование ресурсов или данных, расположенных в сегменте данных библиотеки. Более того, вы можете создать DLL-библиотеки, состоящие только из одних ресурсов, например, из пиктограмм или изображений bitmap. В состав Windows входит DLL-библиотека moricons.dll, состоящая из одних пиктограмм. Файлы с расширением fon представляют собой ни что иное, как DLL-библиотеки, содержащие шрифты в виде ресурса. Функции, входящие в состав DLL-библиотеки, могут заказывать блоки памяти с атрибутом GMEM_SHARE. Такой блок памяти не принадлежит ни одному приложению и поэтому не освобождается автоматически при завершении работы приложения. Так как в Windows версии 3.1 все приложения используют общую глобальную память, блоки памяти с атрибутом GMEM_SHARE можно использовать для обмена данными между приложениями. Управлять таким обменом могут, например, функции, расположенные в соответствующей DLL-библиотеке. Использование DLL-библиотек повышает модульность приложений и самой операционной системы Windows. С точки зрения приложения DLL-библиотека является не более чем набором функций с тем или иным интерфейсом, а также, возможно, набором ресурсов. Внутреннее "устройство" и алгоритмы работы функций, а также используемые функциями структуры данных полностью скрыты от приложения. Поэтому при внесении изменений или усовершенствований в DLL-библиотеки нет необходимости выполнять повторную сборку приложений (если не изменился интерфейс или набор функций, входящих в библиотеку). Область применения DLL-библиотек достаточно широка. Помимо предоставления приложениям функций организации пользовательского интерфейса и реализации различных расширений Windows типа мультимедиа или систем управления базами данных, DLL-библиотеки необходимы для обеспечения ряда системных операций. Например, приложение может организовать "перехват" системных сообщений или функций, при этом соответствующие модули "перехватчика" необходимо располагать в фиксированном сегменте кода DLL-библиотеки. Для удаляемых (discardable) блоков памяти можно, вызвав функцию GlobalNotify, определить функцию, которой будет передаваться управление при попытке удалить блок из памяти. Такая функция должна находиться в фиксированном сегменте кода в DLL-библиотеке. Если ваше приложение обрабатывает аппаратные прерывания или само вызывает программные прерывания, ему также не обойтись без DLL-библиотек (единственный способ обработки прерываний в реальном времени - создание виртуального драйвера). Наконец, все обычные драйвера устройств в операционной системе Windows реализованы с помощью DLL-библиотек. Даже если вы не собираетесь обрабатывать или вызывать прерывания и не разрабатываете собственный драйвер, отдельные подсистемы большого приложения имеет смысл оформлять в виде DLL-библиотек из соображений модульности и доступности библиотек для других приложений.

Ole Com Activex Технологии OLE и ActiveX являются высокоуровневыми программными сервисами, построенными фирмой Microsoft на основе технологии СОМ. Доступ к средствам СОМ, OLE и ActiveX обеспечивается операционной системой Windows посредством набора СОМ-интерфейсов и небольшого числа функций WIN32 API. Как и в случае с СОМ, в отличных от Windows операционных системах также поддерживаются сервисы подобные OLE ActiveX.COM является платформно-независимой, объектно-ориентированной технологией, позволяющей создавать бинарные компоненты. Эти компоненты можно использовать как локально, так и в распределенном сетевом окружении. COM служит основой для: OLE (технология составных документов), ActiveX-объектов и элементов управления ActiveX, DCOM, COM+. Одной из наиболее важных черт СОМ является ее способность предоставлять двоичный стандарт для программных компонентов. Этот двоичный стандарт обеспечивает средства, с помощью которых объекты и компоненты, разработанные на разных языках программирования разными поставщиками и работающие в различных операционных системах, могут взаимодействовать без каких-либо изменений в двоичном (исполняемом) коде. Это является основным достижением создателей СОМ и отвечает насущным потребностям сообщества разработчиков программ. Другое важное свойство СОМ известно под названием независимости от местоположения (Location Transparency). Независимость от местоположения означает, что пользователь компонента, клиент, не обязательно должен знать, где находится определенный компонент. Клиентское приложение использует одинаковые сервисы СОМ для создания экземпляра и использования компонента независимо от его фактического расположения. Компонент может находиться непосредственно в адресном пространстве задачи клиента (DLL-файл), в пространстве другой задачи на том же компьютере (ЕХЕ-файл) или на компьютере, расположенном за сотни миль (распределенный объект). Технологии СОМ и DCOM (Distributed СОМ - распределенная СОМ) обеспечивают независимость от местоположения. Другими средствами, реализующими эту способность, являются сервисы распределенных объектов. Аналогичные возможности обеспечивает стандарт CORBA. Поскольку клиентское приложение взаимодействует с СОМ - компонентами, вне зависимости от их положения, одинаковым образом, интерфейс клиента тоже не меняется. Независимость от местоположения позволяет разработчику создавать масштабируемые приложения.

Понятия OLE и ActiveX. Многие новые возможности OLE не имеют ничего общего со связыванием и внедрением. Хорошим примером этого является OLE-автоматизация (или просто автоматизация), вообще не имеющая отношения к составным документам. Основной задачей OLE-автоматизации является обеспечение взаимодействия компонентов и приложений независимо от языков программирования и средств разработки. В апреле 1996 года Microsoft приняла в сферу своих интересов среду WWW и ввела в обращение термин ActiveX, призванный отобразить новое направление в стратегии выпуска программных продуктов фирмы. Однако большинство новых технологий ActiveX уже существовали до апреля 1996 года под другим названием: OLE. В общем, термин ActiveX заменил термин OLE, цель этой замены - подчеркнуть превосходство СОМ-технологий фирмы Microsoft. Теперь термин OLE снова может быть использован для описания тех технологий, которые относятся к составным документам, а также связыванию и внедрению объектов.

Службы и драйвера Системная служба Windows NT (по-английски - system service; в дальнейшем - просто служба) - это фоновый процесс, который может запускаться и работать без участия интерактивного пользователя. В этом смысле системные службы похожи на демоны Unix и резидентные программы MS-DOS. Как правило, системные службы стартуют при загрузке системы и продолжают работать, пока система не будет остановлена, хотя возможны запуск и остановка служб уже в процессе работы. Архитектура системных служб Windows NT подразумевает три вида компонентов . Ee ядром является менеджер системных служб (Service Control Manager или SCM). SCM запускается при загрузке системы и работает, пока компьютер не будет выключен. Менеджер системных служб взаимодействует с одной стороны с управляющими программами, а с другой - с системными службами. Основными задачами менеджера являются:

Запуск при загрузке системы тех служб, которые должны быть запущены автоматически. –

Хранение конфигурационной базы данных, содержащей информацию обо всех службах.

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

Windows NT определяет два вида системных служб. Один из них - это так называемые службы режима ядра (kernel-mode services), которые есть ни что иное, как драйверы устройств. Другой вид - службы Win32 - это обычные Win32-процессы, использующие специальный набор функций для взаимодействия с менеджером системных служб. Управляющие программы - это обычные Win32-приложения, которые манипулируют службами с использованием программного интерфейса, предоставляемого менеджером системных служб. Типичный пример управляющей программы - это MMC snap-in "Службы" в Windows 2000.

3.18 ЗАГАЛЬНІ ВИМОГИ І АРХІТЕКТУРИ ІНТЕРФЕЙСУ КОРИСТУВАЧА . МОЖЛИВОСТІ, ПЕРЕВАГИ І НЕДОЛІКИ ДІАЛОГОВИХ, ОДНОДОКУМЕНТНИХ І БАГАТОДОКУМЕНТНИХ ПРИКЛАДЕНЬ.

Каждая графическая, базирующаяся на Win32, прикладная программа создает, по крайней мере, одно окно, называемое главным окном (main window), которое служит как основное окно для прикладной программы. Это окно служит в качестве первичного интерфейса между пользователем и прикладной программой. Большинство прикладных программ создают также, или непосредственно, или косвенно, другие окна, выполняющие задачи, связанные с главным окном. Каждое окно действует как часть процесса в отображении на экране выводимой информации и приема вводимых данных от пользователя. Когда Вы запускаете прикладную программу, система к тому же связывает кнопку панели задач с прикладной программой. Кнопка панели задач (taskbar button) содержит пиктограмму и заголовок программы. Когда прикладная программа активная, ее кнопка на панели задач отображается в нажатом состоянии.Окно прикладной программы включает в себя такие элементы как, строка заголовка, строка меню, меню окна (прежде известное как системное меню), кнопка свертывания окна, кнопка развертывания окна, кнопка восстановления, кнопка закрытия окна, рамка установки размеров, рабочая область, линейка горизонтальной прокрутки и линейка вертикальной прокрутки. Главное окно прикладной программы обычно включает в себя все эти компоненты. Строка заголовка (title bar) отображает на экране заданную прикладной программой пиктограмму и строку текста; обычно текст определяет имя прикладной программы или указывает предназначение окна. Прикладная программа определяет пиктограмму и текст, когда создается окно. К тому же, строка заголовка делает возможным для пользователя перемещение окна, используя мышь или другое устройство управления позицией. Большинство прикладных программ включает в себя строку меню (menu bar), которая перечисляет команды, поддерживаемые прикладной программой. Пункты в строке меню представляют основные категории команд. Выбор пункта в строке меню обычно открывает выскакивающее меню, чьи пункты соответствуют задачам внутри данной категории. Выбирая команду, пользователь направляет прикладную программу на выполнение задачи. Меню окна (window menu) создается и управляется при помощи Windows. Оно содержит стандартный набор пунктов меню, которые, когда выбираются пользователем, устанавливают размер или позицию окна, закрывают прикладную программу или выполняют задачи. Когда Вы щелкаете мышью по кнопке развертывания или свертывания окна, она воздействует на размер и позицию окна. Когда пользователь щелкает мышью по кнопке развертывания (maximize button) окна, Windows увеличивает окно до размеров экрана и располагает окно так, что оно закрывает весь рабочий стол, минус панель задач. В то же самое время, Windows заменяет кнопку развертывания окна на кнопку восстановления прежнего размера. Кнопка восстановления (restore button)- точечный рисунок, по которому когда щелкнешь мышью, восстанавливает окно в его предыдущем размере и позиции. Когда пользователь щелкает мышью по кнопке свертывания (minimize button) окна, Windows уменьшает окно до размера кнопки его панели задач, помещает окно над кнопкой панели задач и отображает на экране кнопку панели задач в ее нормальном состоянии. Чтобы восстановить прикладную программу в её предыдущем размере и позиции, щелкните мышью по её кнопке на панели задач. Рамка установки размеров (sizing border) - зона по периметру окна, которая дает возможность пользователю изменять по величине окно, используя мышь или другое устройство управления позицией. Рабочая область (client area) - часть окна, где прикладная программа показывает на экране выводимую информацию, к примеру, текст или графику. Например, прикладная программа настольных издательских средств отображает в рабочей области текущую страницу документа. Прикладная программа должна предоставить функцию, вызываемую оконной процедурой, чтобы обрабатывать вводимые в окно данные и показывать в рабочей области выводимую информацию. Для получения дополнительной информации об оконных процедурах, см. статью Оконные процедуры. Линейка горизонтальной (horizontal scroll bar) и вертикальной (vertical scroll bar) прокрутки преобразуют ввод данных от мыши или клавиатуры в значения, которые прикладная программа использует, чтобы передвигать содержимое рабочей области по горизонтали или вертикали. Например, прикладная программа обработки текстов, которая отображает длинный документ, обычно предоставляет линейку вертикальной прокрутки, чтобы дать возможность пользователю перемещаться вверх и вниз по документу. Строка заголовка, строка меню, меню окна, кнопки свертывания и развертывания окна, установка размера рамки и линейки прокрутки, рассматриваются в собирательном значении как не рабочая область (nonclient area) окна. Windows управляет большинством аспектов не рабочей области; прикладная программа управляет всем остальным, что касается окна. В частности, прикладная программа управляет видом и поведением рабочей области. Прикладная программа использует несколько типов окон в дополнение к его основному окну, включая элементы управления, диалоговые окна и окна сообщений. Элемент управления (control) - окно, которое прикладная программа использует, чтобы получить конкретную информацию от пользователя, такую как имя файла, чтобы его открыть или нужный размер выбранного текста в пунктах. Прикладные программы также используют элементы управления, чтобы получить информацию, необходимую для управления специфическими свойствами прикладной программы. Например, прикладная программа обработки текстов обычно предоставляет элемент управления, который позволяет пользователю включать и выключать автоматический перенос слов. Элементы управления используется всегда вместе с другим окном - обычно, диалоговым окном. Диалоговое окно (dialog box) является окном, которое содержит один или большее количество элементов управления. Прикладная программа использует диалоговое окно, чтобы запросить у пользователя ввода данных, необходимых для завершения команды. Например, прикладная программа, которая включает команду, чтобы открыть файл, должна показать на экране диалоговое окно, включающее в себя элементы управления, где пользователь конкретно определяет путь и имя файла. Окно сообщений (message box) - окно, которое показывает на экране примечание, предостережение, или предупреждение пользователю. Например, окно сообщений может сообщать пользователю о проблеме, с которой прикладная программа столкнулась при выполнении задачи. Диалоговые окна и окна сообщений обычно не используют тот же самый набор компонентов окна, как это делает главное окно. Чаще всего они имеют строку заголовка, меню окна, рамку (не изменяющую размеров) и рабочую область, но в них обычно нет строки меню, кнопок свертывания и развертывания. Библиотека стандартных диалоговых окон обеспечивает создание функций и структур для каждого типа общего диалогового окна. Чтобы использовать стандартных диалоговое окно в самой простой его форме, вы вызываете создающую его функцию и устанавливаете указатель на структуру, содержащую начальные значения и флажки параметров. После инициализации блока диалога, процедура диалогового окна использует структуру, чтобы возвратить информацию о вводе данных пользователем. Вы также можете настроить стандартное диалоговое окно так, чтобы удовлетворить нужды вашей прикладной программы. Следующая таблица дает краткое описание различных типов стандартных (общих) диалоговых окон и показывает функцию и структуру, используемую с каждым типом. Цвет (Color) Показывает доступные цвета и позволяет пользователю создавать необязательные дополнительные цвета. Пользователь может выбирать основной или дополнительный цвет. Используется функция ChooseColor и структура CHOOSECOLOR. Найти (Find) Показывает диалоговое окно, в котором пользователь может вводить с клавиатуры строку для поиска. Пользователь может также устанавливать параметры поиска, такие как направление поиска и поиск по принципу чувствительности к регистру. Используется функция FindText и структура FINDREPLACE. Шрифт (Font) Показывает списки доступных шрифтов, размеров (кеглей) в пунктах, и другие атрибуты шрифта, которые пользователь может выбирать. Используется функция ChooseFont и структура CHOOSEFONT. Открыть (Open) Отображает на экране перечни дисков, каталогов и имен файлов с расширением, из которых пользователь может выбрать для показа список имен файлов. Пользователь может ввести с клавиатуры имя файла или выбрать его из списка, который определяет файлы предназначенные для открытия. Используется функция GetOpenFileName и структура OPENFILENAME. Печать (Print) Показывает на экране информацию об установленном принтере и его конфигурации. Пользователь может выбирать параметры задания по выводу на печать, такие как диапазон страниц для печати и число копий и запускать процесс печатания. Используется функция PrintDlg и структура PRINTDLG. Параметры страницы (Page Setup) Показывает на экране конфигурацию текущей страницы. Пользователь может выбирать параметры конфигурации страницы, такие как ориентация бумаги, размер, источник и поля. Используется функция PageSetupDlg и структура PAGESETUPDLG. Заменить (Replace) Показывает диалоговое окно, в котором пользователь может ввести с клавиатуры строку, которую надо найти и строку замены. Пользователь может устанавливать параметры поиска, такие как, является ли поиск чувствительным к регистру и параметры замены, такие как область замены. Используется функция ReplaceText и структура FINDREPLACE. Сохранить как (Save As) Показывает списки дисков, каталогов и имен файлов с расширениями, из которых пользователь может выбрать для показа список имен файлов. Пользователь может ввести с клавиатуры имя файла или выбрать его из списка, чтобы определить имя под которым сохранится файл. Используется функция GetSaveFileName и структура OPENFILENAME. Все стандартные диалоговые окна модальные, за исключением диалоговых окон Найти (Find) и Заменить (Replace). Модальные диалоговые окна должны быть закрыты пользователем до того, как функция, используемая, чтобы создать диалоговое окно, сможет возвратить значение. Диалоговые окна Найти (Find) и Заменить (Replace) немодальные; функция возвращает значение перед закрытием блока диалога. Если вы используете диалоговые окна Найти (Find) и Заменить (Replace), вы должны тоже использовать функцию IsDialogMessage в основном цикле обработки сообщений вашей прикладной программы, чтобы гарантировать, что эти диалоговые окна правильно обрабатывают ввод данных с клавиатуры, таких как клавиши TAB и ESC.У SDI-приложения всего одно окно и загрузить одновременно можно только один документ.

3.20 ОРГАНІЗАЦІЯ ПЕРЕРИВАНЬ В ПК, ПРІОРИТЕТИ ПРИ ОБРОБЦІ ПЕРЕРИВАНЬ. РЕЖИМИ РОБОТИ ТА ПРОГРАМУВАННЯ.

Режими роботи та програмування.

Прерывание можно рассматривать как некоторое особое событие в системе, требующее моментальной реакции.

Типы прерываний.

По источнику и характеру возникновения прерывания можно

разделить на группы

Прерывания

+-------------------------+

Аппаратные Программные

+--------------------+

Внешние Внутренние

+--------------+

Маскируемые Немаскируемые

Программные прерывания вызывают сами программы, поэтому они не являются асинхронными. Для этого они используют команду INT. Программные прерывания удобно использовать для организации доступа к отдельным общим для всех программ модулям. Например, программные модули операционной системы доступны прикладным программам именно через прерывания, и нет необходимости при вызове этих модулей знать их текущий адрес в памяти. Прикладные программы сами могут устанавливать свои обработчики прерываний для их последующего использования другими программами. Для этого встраиваемые обработчики прерываний должны быть резидентными в памяти. Аппаратные прерывания вызываются физическими устройствами и приходят асинхронно. Эти прерывания информируют систему о событиях, связанных с работой устройств. Использование прерываний при работе с медленными внешними устройствами позволяет совместить ввод/вывод с обработкой данных в центральном процессоре и в результате повышает общую производительность системы. Внутренние (логические) прерывания формируются самим процессором, когда он встречается с некоторыми особыми событиями вроде деления на 0. Это прерывания с номерами 0, 1, 3, Внешние аппаратные прерывания вызваны сигналами, внешними по отношению к центральному процессору, и подаются на его входы INT и NMI. Прерывания по входу INT относятся в аппаратным маскируемым прерываниям, поскольку могут быть разрешены или запрещены флагом IF регистра флагов. Обработку аппаратных маскируемых прерываний выполняют контроллеры прерываний, которые принимают запросы на прерывание от нескольких устройств, назначают им приоритеты, выбирают наиболее приоритетные и прерывают работу процессора по входу INT.

Номер вектора прерываний маскируемых прерываний передается в процессор по его восьми младшим разрядам шины данных. Вход немаскируемого прерывания NMI обычно используется для сообщений о "катастрофических" событий (отключении питания, обнаружении ошибок памяти и т.д.). Номер этого прерывания равен 2. Так как номер немаскируемого прерывания заведомо известен, то он не передается в процессор и обработка этого прерывания начинается быстрее, чем обработка маскируемых прерываний. Запрос на прерывание NMI маскируется установкой в 1 старшего 7-го бита порта 70h. При этом остальные биты (6-й бит всегда равен 0, а биты 5- 0 задают адрес CMOS памяти) должны остаться без изменения. Приоритет NMI выше всех маскируемых прерываний. Для того чтобы связать номер прерывания с адресом программы обработки прерываний (обработчика прерываний), используется таблица векторов прерываний, занимающая первый килобайт оперативной памяти - адреса от 0000:0000 до 0000:03FF. Таблица состоит из 256 элементов - FAR-адресов обработчиков прерываний. Эти элементы называются векторами прерываний. В первом слове элемента таблицы записано смещение, а во втором - сегмент адреса обработчика прерываний.

Прерыванию с номером 0 соответствует адрес 0000:0000, прерыванию с номером 1 - 0000:0004 и т.д. Прерыванию с номером n будет соответствовать адрес 0000:4*n.

Инициализация таблицы происходит частично программой BIOS после тестирования аппаратуры, частично при загрузке DOS. DOS может переключить на себя некоторые прерывания BIOS. Часто при выполнении критических участков программ, для того чтобы гарантировать выполнение определенной последовательности команд, приходится запрещать прерывания. Это можно сделать командой CLI (сброс флага разрешения прерывания). Ее нужно поместить в начало критической последовательности команд, а в конце расположить команду STI (установить флаг разрешения прерывания). Команда CLI запрещает только маскируемые прерывания, немаскируемые всегда обрабатываются процессором.

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

Если надо запретить не все прерывания, а только некоторые,

например, от клавиатуры, то для этого надо воспользоваться услуга-

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

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

Система приоритетов реализована на двух микросхемах Intel 8259 (для машин класса XT - на одной такой микросхеме). Каждая микросхема обслуживает до восьми приоритетов. Микросхемы можно объединять (каскадировать) для увеличения количества уровней приоритетов в системе.

Уровни приоритетов обозначаются сокращенно IRQ0 - IRQ15 (для машин класса XT существуют только уровни IRQ0 - IRQ7).

Для машин XT приоритеты линейно зависели от номера уровня прерывания. IRQ0 соответствовало самому высокому приоритету, за ним шли IRQ1, IRQ2, IRQ3 и так далее. Уровень IRQ2 в машинах класса XT был зарезервирован для дальнейшего расширения системы. И начиная с машин класса AT IRQ2 стал использоваться для каскадирования контроллеров прерывания 8259. Добавленные приоритетные уровни IRQ8 - IRQ15 в этих машинах располагаются по приоритету между IRQ1 и IRQ3.

3.21 АРХІТЕКТУРА ВІДЕОСИСТЕМИ ПК. УПРАВЛІННЯ ВІДЕОСИСТЕМОЮ.

Видеоадаптеры EGA и VGA можно условно разделить на шесть логических блоков:

1. Видеопамять. В видеопамяти размещаются данные, тображаемые адаптером на экране дисплея. Для видеоадаптеров EGA и VGA видеопамять, как правило, имеет объем 256К байт. На некоторых моделях Super VGA и XGA объем видеопамяти может быть увеличен до 1М байт. Видеопамять находится в адресном пространстве процессора и программы могут непосредственно производить с ней обмен данными. Физически видеопамять разделена на четыре банка или цветовых слоя, разделяющих единое адресное пространство.

2. Графический контроллер. Посредством его происходит обмен данными между центральным процессором компьютера и видеопамятью. Аппаратура графического контроллера позволяет производить над данными, поступающими в видеопамять, и над данными, расположенными в регистрах-защелках (регистры-защелки описаны ниже) простейшие логические опрерации (И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, циклический сдвиг).

3.Последовательный преобразватель. Выбирает из видеопамяти один или несколько байт, преобразует их в последовательный поток битов и затем передает контроллеру атрибутов.

4.Контроллер ЭЛТ. Генерирует временные синхросигналы, управляющие ЭЛТ.

5. Контроллер атрибутов. Преобразует информацию о цветах из формата, в котором она хранится в видеопамяти, в формат, необходимый для ЭЛТ. Преобразование цветов осуществляется в соответствии с таблицей цветовой палитры (Color Look-up Table). Модифицируя таблицу цветовой палитры, можно выбирать 16 цветов, поддерживаемых видеоадаптером EGA из 64 цветов, которые может отображать цветной улучшенный дисплей.

6. Синхронизатор. Управляет всеми временными параметрами видеоадаптера. Синхронизатор также управляет доступом процессора к цветовым слоям видеоадаптера.

В текстовых режимах видеопамять состоит из пар (код символа, атрибут); код символа определяет символ ASCII, выводимый в соответствующей позиции экрана, а атрибут - цвет этого символа. Соответствие цветов атрибутам зависит от типа видеоадаптера. Цвет фона может варьироваться от 0 до 7, а цвет символа с учетом яркости - от 0 до 0Fh. Значение атрибута задается формулой:

16 * цвет фона + цвет символа (плюс 128 для мерцания)

Видеопамять EGA располагается в адесах ОЗУ B8000h - BFFFFh. EGA имеет два типа текстовых режимов: 25 строк по 40 символов в строке и по 80 символов в строке. В режимах 25 х 40 одна страница занимает 800h байтов, поэтому видеопамять состоит из 8 страниц; в режимах 25 х 80 страница занимает 1000h байтов и видеопамять состоит из 4 страниц. Адрес кода символа в текстовых режимах равен B800h :

n*P+m*L+2*C, адрес атрибута на единицу больше.

Здесь L – номер строки (0 - 24), C - номер столбца (0 - 79 или 0 - 39), m = 2

количество столбцов режима, n = 800h при m=80 и 1000h при m=160.

EGA имеет два типа графических режимов: цветной режим, имеющий разрешение 320 точек по горизонтали на 200 точек по вертикали, и черно-белый режим с разрешением 640 точек на 200 точек. В режиме 320 х 200 каждый пиксель задается двумя битами, кодирующими его цвет; в режиме 640 х 200 цвет пикселя задается одним битом (белый/черный). В графических режимах один экран требует 16К видеопамяти, поэтому имеется одна страница видеопамяти, которая размещается в адресах B8000h - BFFFFh. Эта страница расслоена на две области: область с адреса B8000h содержит пиксели, имеющие четные номера строк; область с адреса BA000h содержит пиксели из нечетных строк. Поэтому адрес байта, содержащего точку с координатами (X,Y), равен в цветном режиме

B800h : 2000h * (Y % 2) + 80 * int(Y/2) + int(X/4),

а номера соответствующих битов в этом байте равны 7 - 2 * (X %

4) и 6 - 2 * (X % 4). Здесь X - горизонтальная позиция точки (0

- 319), Y - ее вертикальная позиция (0 - 199).

3.22 РЕЖИМИ ВІДЕОСИСТЕМИ. СТРУКТУРА ВІДЕОПАМ'ЯТІ.

EGA и VGA содержат на своей плате до 256К байт оперативной памяти, разделенной на четыре банка или, другими словами, на четыре цветовых слоя. Эти банки памяти размещаются в одном адресном пространстве. Таким образом, что по каждому адресу расположено четыре байта (по байту в каждом банке памяти). Какой из банков памяти используется для записи или чтения данных процессором, определяется при помощи установки нескольких регистров адаптера. Так как все четыре банка памяти находятся в одном адресном пространстве, то процессор может производить запись во все четыре банка за один цикл записи. Благодаря этому некоторые операции, например заполнение экрана, происходят с большой скоростью. В том случае, когда запись во все четыре банка памяти нежелательна, можно запрещать или разрешать запись в отдельные слои памяти при помощи регистра разрешения записи цветового слоя. Для операции чтения в каждый момент времени может быть разрешен только один цветовой слой. Читаемый слой определяется регистром выбора читаемого цветового слоя. В большинстве режимов видеоадаптеров видеопамять также разделена на несколько страниц. При этом одна из них является активной и отображается на экране. При помощи функций BIOS или программирования регистров видеоадаптера можно переключать активные страницы видеопамяти. Вывод информации можно производить как в активную, так и в неактивные страницы памяти. Таким образом, можно заранее подготовить несколько страниц памяти (несколько экранов), а затем быстро сменять их на экране дисплея. Текстовый режим. В текстовых режимах на экране могут отображаться только текстовые символы, а также символы псевдографики. Текстовые режимы работы видеоадаптеров рекомендуется использовать всегда, когда приложению не нужно выводить на экран графическую информацию. Стандартные текстовые режимы работы видеоадаптеров позволяют вывести на экран 25 строк по 40 или 80 символов. Если перепрограммировать некоторые регистры видеоадаптера, то можно увеличить число отображаемых строк для EGA до 43, а для VGA до 50. Для кодирования каждого знакоместа экрана (символа) используются два байта. Первый из них содержит ASCII-код отображаемого символа, а второй - атрибуты символа. ASCII-коды символов экрана располагаются в нулевом цветовом слое, а их атрибуты - в первом цветовом слое.

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

Видеопамять в графических режимах

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

Ниже рассмотрена структура видеопамяти отдельно для каждого графического режима.

Режимы 4 и 5

Это режимы низкого разрешения (320х200), используются 4 цвета. Поддерживаются видеоадаптерами CGA, EGA и VGA. У адаптеров EGA и VGA видеоданные расположены в нулевом цветовом слое. Остальные три цветовых слоя не используются. Для совместимости с видеоадаптером CGA, отображение видеопамяти на экран не является непрерывным: первая половина видеопамяти (начальный адрес B800:0000) содержит данные относительно всех нечетных линий экрана, а вторая половина (начальный адрес B800:2000) - относительно всех четных линий. Каждому пикселу изображения соответствуют два бита видеопамяти. За верхний левый пиксел экрана отвечают биты D7 и D6 нулевого байта видеопамяти. На рисунке изображено соответствие видеопамяти пикселам экрана.

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

Если y четное число, то смещение байта = 50h*(y/2)+(x/4)

Если y нечетное число, то смещение байта = 2000h+50h*((y-1)/2)+(x/4)

Номер первого бита = 7-mod(x/4)*2

Ниже представлена таблица соответствия значений битов, определяющих пиксел цвету пиксела:

Значение битов пиксела

Стандартный цвет

Альтернативный цвет

00

черный

черный

01

светло-синий

зеленый

10

малиновый

красный

11

ярко-белый

коричневый

Режим 10h

Графический цветной режим с разрешением 640х350 пикселов. Данный режим поддерживают только видеоадаптеры EGA и VGA. Для хранения видеоданных используются четыре цветовых слоя. Каждому пикселу соответствует по одному биту из каждого цветового слоя. Четыре бита на пиксел позволяют отображать 16 различных цветов. Запись в каждый из этих четырех слоев можно разрешить или запретить при помощи регистра разрешения записи цветового слоя. На рисунке представлена cтруктура видеопамяти для этого режима.

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

Смещение байта = 50h*y+x/8

Номер бита = 7-mod(x/8)

2.23 ЛОГІЧНА ОРГАНІЗАЦІЯ ДИСКОВИХ НАКОПИЧУВАЧІВ ЗОВНІШНЬОЇ ПАМ'ЯТІ. ОСНОВНІ ОБЛАСТІ (BOOT, FAT, ROOT, DATA AREA).

Первый сектор жесткого диска (сектор 1, дорожка 0, головка 0) содержит главную загрузочную запись (Master Boot Record). Эта запись занимает только начальную часть сектора. Сама по себе главная загрузочная запись является программой. Эта программа во время начальной загрузки операционной системы с жесткого диска помещается по адресу 7C00:0000, после чего ей передается управление. Загрузочная запись продолжает процесс загрузки операционной системы. В конце самого первого сектора жесткого диска располагается таблица разделов диска (Partition Table). Эта таблица содержит четыре элемента, описывающих максимально четыре раздела диска. В последних двух байтах сектора находится число 55AA. Это признак таблицы разделов. Элемент таблицы разделов диска это структура размером 16 байтов, описывающая часть диска, называемую разделом. В структуре описаны границы раздела в терминах номеров сектора, дорожки и головки, там располагается информация о размере раздела в секторах и о назначении раздела. Разделы диска могут быть активными, активный раздел может быть использован для загрузки операционной системы. Диск может содержать одновременно несколько активных разделов, которые могут принадлежать разным операционным системам.

Смещение

Раз мер

Содержимое

(+0)

1Beh

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

(+1BEh)

10H

Элемент таблицы разделов диска

(+1CEh)

10H

Элемент таблицы разделов диска

(+1DEh)

10H

Элемент таблицы разделов диска

(+1EEh)

10H

Элемент таблицы разделов диска

(+1FEh)

2

Признак таблицы разделов - 55AAh

формат первого сектора жесткого диска:

Все элементы таблицы разделов диска имеют одинаковый формат:

Смещение

Размер

Содержимое

(+0)

1

Признак активного раздела: 0 - раздел не активный; 80h - раздел активный.

(+1)

1

Номер головки для начального сектора раздела.

(+2)

2

Номер сектора и цилиндра для начального сектора раздела в формате функции чтения сектора INT 13h.

(+4)

1

Код системы: 0 - неизвестная система; 1, 4 - DOS; 5 - расширенный раздел DOS.

(+5)

1

Номер головки для последнего сектора раздела.

(+6)

2

Номер сектора и цилиндра для последнего сектора раздела в формате функции чтения сектора INT 13h.

(+8)

4

Относительный номер сектора начала раздела.

(+12)

4

Размер раздела в секторах.

В самом первом секторе активного раздела расположена загрузочная запись (Boot Record). Загрузочная запись считывается в оперативную память главной загрузочной записью, после чего ей передается управление. Загрузочная запись и выполняет загрузку операционной системы. Таким образом, загрузка операционной системы с жесткого диска - двухступенчатый процесс. Вначале модули инициализации BIOS считывают главную загрузочную запись в память по адресу 7C00:0000 и ей передается управление. Главная загрузочная запись просматривает таблицу разделов и находит активный раздел. Если активных разделов несколько, на консоль выводится сообщение о необходимости выбора активного раздела для продолжения загрузки. Байт со смещением 4 - это код системы, использующей раздел диска. Для DOS зарезервированы значения 0, 1, 4, 5.

Значение 0 соответствует неиспользуемому разделу диска. Если код системы в элементе таблицы раздела равен 1 или 4, это означает, что раздел используется DOS в качестве первичного раздела (Primary Partition). Первичный раздел используется DOS как логический диск. Этот раздел обычно является активным и из него выполняется загрузка операционной системы. В зависимости от того, какой код системы используется для обозначения первичного раздела DOS (1 или 4) меняется одна из характеристик логического диска - размер элемента таблицы размещения файлов (FAT). Код 1 используется для обозначения 12-битовой FAT, 4 - для 16-битовой FAT. Таблица размещения файлов будет описана ниже в этой главе. Значение кода системы, равное 5, обозначает расширенный раздел DOS (Extended DOS Partiton). Используя все элементы таблицы разделов для создания логических дисков, невозможно создать более четырех дисков. Использование расширенного раздела DOS позволит создать любое количество логических дисков. Все эти диски будут располагаться в пределах одного расширенного раздела. Первичный раздел должен быть активным, он используется как диск С: и из него выполняется загрузка операционной системы. Расширенный раздел разбивается утилитой на логические диски D:, E: и т.д. Расширенный раздел не может быть активным, следовательно, невозможно выполнить загрузку операционной системы с логических дисков, расположенных в этом разделе. Если в элементе таблицы разделов байт кода системы имеет значение 5, то в начале раздела, указанном в этом элементе, располагается сектор, содержащий таблицу логических дисков. Фактически эта таблица является расширением таблицы разделов диска, расположенной в самом первом секторе физического диска. Таблица логических дисков имеет формат, аналогичный таблице разделов диска, но имеет только два элемента. Один из них указывает на первый сектор логического диска DOS, он имеет код системы 1 или 4. Второй элемент может иметь код системы, равный 5 или 0. Если этот код равен 5, то элемент указывает на следующую таблицу логических дисков. Если код системы равен 0, то соответствующий элемент не используется. Таблицы логических дисков связаны в список, на начало этого списка указывает элемент таблицы разделов диска с кодом системы, равным 5. Для таблицы логических дисков имеется отличие в использовании полей границ логических дисков: если код системы равен 1 или 4, эти границы вычисляются относительно начала расширенного раздела; для элемента с кодом системы 5 используется абсолютная адресация (относительно физического начала диска). Самый первый сектор логического диска (и самый первый сектор на системной дискете) занимает загрузочная запись (Boot Record). Эта запись считывается из активного раздела диска программой главной загрузочной записи (Master Boot Record) и запускается на выполнение. Задача загрузочной записи - выполнить загрузку операционной системы. Каждый тип операционной системы имеет свою загрузочную запись. Даже для разных версий одной и той же операционной системы программа загрузки может выполнять различные действия. Кроме программы начальной загрузки операционной системы в загрузочной записи находятся параметры, описывающие характеристики данного логического диска. Все эти параметры располагаются в самом начале сектора, в его так называемой форматированной области.

Структура BOOT области

Смещение

Размер

Содержимое

(+0)

3

Команда JMP xxxx - переход типа NEAR на программу начальной загрузки

(+3)

8

Название фирмы-производителя операционной системы и версия, например: "IBM 4.0"

(+11)

25

Extended BPB - расширенный блок параметров BIOSBIOS

(+36)

1

Физический номер дисковода (0 -флоппи, 80h - жесткий диск)

(+37)

1

Зарезервировано

(+38)

1

Символ ')' - признак расширенной загрузочной записи DOS 4.0

(+39)

4

Серийный номер диска (Volume Serial Number), создается во время форматирования диска

(+43)

11

Метка диска (Volume Label)

(+54)

8

Зарезервировано, обычно содержит запись типа 'FAT12 ', которая идентифицирует формат таблицы размещения файлов FAT

Поле со смещением 11 содержит расширенный блок параметров BIOS. Он состоит из обычного BPB и дополнительного расширения:

(0)

2

sect_siz

Количество байтов в одном секторе диска.

(+2)

1

clustsiz

Количество секторов в одном кластере.

(+3)

2

res_sect

Количество зарезервированных секторов.

(+5)

1

fat_cnt

Количество таблиц FAT.

(+6)

2

root_siz

Максимальное количество дескрипторов файлов, содержащихся в корневом каталоге диска.

(+8)

2

tot_sect

Общее количество секторов на носителе данных (в разделе DOS).

(+10)

1

media

Байт-описатель среды носителя данных.

(+11)

2

fat_size

Количество секторов, занимаемых одной копией FAT.

---- Расширение стандартного BPB -----

(+13)

2

sectors

Количество секторов на дорожке

(+15)

2

heads

Количество магнитных головок

(+17)

2

hidden_l

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

(+19)

2

hidden_h

Количество скрытых секторов для раздела, превышающего по размеру 32 мегабайта. (Только для DOS 4.0).

(+21)

4

tot_secs

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

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

Итак, FAT - массив информации об использовании кластеров диска, содержит односвязные списки кластеров, распределенных файлам. Номера начальных кластеров файлов хранятся в каталогах

Существуют несколько форматов FAT - 12-битовый ,16-битовый и 32 битовый. Эти форматы используют, соответственно, 12,16 и 32 бита для хранения информации об одном кластере диска.

При использовании FAT 16-битового формата операционная система может работать с диском, который имеет размер более 32 мегабайт. DOS версии 4.0 при использовании 16-битового формата FAT и кластеров размером 4 сектора может работать с разделами, по размеру достигающими 134 мегабайтов. Первый байт FAT называется "Описатель среды" (Media Descriptor) или байт ID идентификации FAT. Он имеет такое же значение, как и байт-описатель среды, находящийся в BOOT-секторе логического диска.

Остальная часть FAT состоит из ячеек, каждая ячейка соответствует одному кластеру диска. Эти ячейки могут содержать следующие значения:

FAT12

FAT16

Что означает

000h

0000h

Свободный кластер

ff0h - ff6h

Fff0h - fff6h

Зарезервированный кластер

ff7h

Fff7h

Плохой кластер

ff8h - fffh

Fff8h - ffffh

Последний кластер в списке

002h - fefh

0002h - ffefh

Номер следующего кластера в списке

Адрес области FAT вычисляется следующим образом:

Адрес FAT = начало раздела + корневой сектор + число резерв-

ных секторов.

Адрес корневого каталого вычисляется следующим образом:

Адрес каталога = начало раздела + корневой сектор + число резервных секторов + число FAT x число секторов в одной FAT.

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

Смещение

Размер

Содержимое

(+0)

8

Имя файла или каталога, выравненное на левую границу и дополненное пробелами.

(+8)

3

Расширение имени файла, выравненное на левую границу и дополненное пробелами.

(+11)

1

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

(+12)

10

Зарезервировано.

(+22)

2

Время создания файла или время его последней модификации.

(+24)

2

Дата создания файла или дата его последней модификации.

(+26)

2

Номер первого кластера, распределенного файлу.

(+28)

4

Размер файла в байтах.

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

0

Файл предназначен только для чтения, в этот файл нельзя писать и его нельзя стирать.

1

Скрытый файл, этот файл не будет появляться в списке файлов, создаваемом командой операционной системы DIR.

2

Системный файл. Этот бит обычно установлен в файлах, являющихся составной частью операционной системы.

3

Данный дескриптор описывает метку диска. Для этого дескриптора поля имени файла и расширения имени файла должны рассматриваться как одно поле длиной 11 байтов. Это поле содержит метку диска.

4

Дескриптор описывает файл, являющийся подкаталогом данного каталога.

5

Флаг архивации. Если этот бит установлен в 1, то это означает, что данный файл не был выгружен утилитой архивации (например, программой BACKUP).

6-7

Зарезервированы.

Обычно файлы имеют следующие комбинации битов в байте атрибутов:

0

Обычные файлы (тексты программ, загрузочные модули, пакетные файлы).

7

Только читаемые, скрытые, системные файлы. Такая комбинация битов байта атрибутов используется для файлов операционной системы IO.SYS, MSDOS.SYS.

8

Метка тома. Дескриптор метки тома может находиться только в корневом каталоге логического диска.

10h

Дескриптор, описывающий каталог.

20h

Обычный файл, который не был выгружен утилитами BACKUP или XCOPY.

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

"."Этот дескриптор указывает на содержащий его каталог. Т.е. каталог имеет ссылку сам на себя. Второй специальный дескриптор содержит в поле имени строку: ".."Этот дескриптор указывает на каталог более высокого уровня. Если в поле номера первого занимаемого кластера дескриптора с именем ".. " находится нулевое значение, это означает, что данный каталог содержится в корневом каталоге.

3.24 ДВІЙКОВА ЛОГІКА. БУЛЕВІ ФУНКЦІЇ ОДНІЄЇ ТА ДВОХ ЗМІННИХ. КІЛЬКІСТЬ БУЛЕВИХ ФУНКЦІЙ N-ЗМІННИХ. СУПЕРПОЗИЦІЯ БУЛЕВИХ ФУНКЦІЙ.

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

Логическая переменная в алгебре логики может принимать одно из двух возможных значений: TRUE - истина, FALSE - ложь. Эти значения в цифровой технике принято рассматривать как логическую "1" (TRUE) и логический "0" (FALSE), или как двоичные числа 1 и 0. Физически это может означать присутствие или отсутствие некоторого сигнала (замкнуто, разомкнуто), уровень потенциала на электронном элементе (высокий, низкий), протекание или отсутствие тока в некоторой цепи и т.п. Логические переменные позволяют легко описать состояние таких объектов, как тумблеры, кнопки, реле, триггеры и других, которые могут находиться в двух четко различимых состояниях: включено - выключено.Рассмотрение понятия функции в алгебре логики (АЛ) можно начать с функций одной переменной. Нетрудно видеть, что таких функций можно построить четыре:

Содержательный смысл этих функций: g1 - константа нуля, g2 - повторение x, g3 - инверсия x, g4 - константа единицы.

Для двух переменных может быть введено уже 16 функций (таблица слева):

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

Логическая функция определяется как n-местная функция, определенная на множестве истинных значений <Истина (True), Ложь(False)> и принимающая значения в этом множестве. Если последовательность логических переменных обозначить как X=(x1, x2, ..., xn) и назвать двоичным набором, то под функцией алгебры логики следует понимать однозначное отображение множества всевозможных наборов * на множествоY=<0,1>. Если две функции алгебры логики f1(x1, x2, ..., xn) и f2(x1, x2, ..., xn) принимают на всех возможных наборах одинаковые значения, то они называются равными (эквивалентными).

К элементарным функциям обычно относят: функцию инверсии (отрицания), конъюнкцию, дизъюнкцию, импликацию, штрих Шеффера и стрелку Пирса. Новые функции АЛ можно получить из известных функций либо путем перенумерации аргументов, либо путем подстановки в функцию новых функций вместо аргументов. Функция АЛ, полученная из функций f1, f2, ..., fk с помощью этих правил, называется суперпозицией функций f1, f2, ..., fk. В табл. приведено представление различных функций через суперпозицию конъюнкции, дизъюнкции и отрицания.

3.25. ТЕСТОВА ДІАГНОСТИКА МЕРЕЖ ПК. УТИЛІТА PING: ОРГАНІЗАЦІЯ РОБОТИ, ТИПИ ПОВІДОМЛЕНЬ. ПОЯСНІТЬ МОЖЛИВИЙ ПРИКЛАД РОБОТИ УТИЛІТИ.

Общие принципы диагностик сетей:

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

Выявление неисправных функций ОС.

Выявление неисправных каналов сети.

4. Выявление неисправных устройств сети.

Программа Windows diagnostics

WinMST.exe встроенная в W2KP предназначена для получения информации о составе системы и ее работоспособности. Выдает очень большой и полный объем по всем составляющим.

Утилита Doctor Watson

Резидентная диагностирующая программа. Формирует файл отчета. Запускается автоматически при включении ПК.

Встроенные в Windows ОС диагностические программы:

Ping – выполняет посылку пакетов на указанный узел (узлы) и ожидает ответы с фиксированием времени. Сообщает маршрут и время выполнения.

Использование: ping[-t][-a][-n число][-l размер][-f][-i TTL][-v TOS][-r число][-s число]

[-j список узлов][-k список узлов]][-w интервал]Список рассылки

Параметры:

-t Отправка пакетов на указанный узел до команды прерывания

Просмотр статистики и продолжение – Control-Break;

Завершение - Сontrol-C.

-a Определение адресов по именам узлов

-n число Число отправляемых запросов

-l размер Размер буфера отправки

-f Установка флага, запрещающего фрагментацию пакета

-i TTL Задание времени жизни пакета (поле “Time To Live”)

-v TOS Задание типа службы (“Type Of Service”)

-r число Запись маршрута для указанного числа переходов

-s число Штамп времени для указанного числа переходов

-j список узлов Свободный выбор маршрута по списку узлов

-k список узлов Жесткий выбор маршрута по списку узлов

-w интервал Интервал ожидания каждого ответа в миллисекундах

NetStat – выполняет трассировку маршрута к указанному узлу.

Traсert – аналогична предыдущей.

Пример работы утилиты PING:

C:\WINDOWS>ping -l 1000 stranger

Обмен пакетами с stranger [169.254.0.7] по 1000 байт:

Ответ от 169.254.0.7: число байт=1000 время=3мс TTL=128

Ответ от 169.254.0.7: число байт=1000 время=2мс TTL=128

Ответ от 169.254.0.7: число байт=1000 время=2мс TTL=128

Ответ от 169.254.0.7: число байт=1000 время=2мс TTL=128

Статистика Ping для 169.254.0.7:

Пакетов: послано = 4, получено = 4, потеряно = 0 (0% потерь),

Приблизительное время передачи и приема:

наименьшее = 2мс, наибольшее = 3мс, среднее = 2мс

3.26. СКЛАД ПК ЯК ОБ’ЄКТА ЕКСПЛУАТАЦІЙНОГО ОБСЛУГОВУВАННЯ. ОТРИМАННЯ ІНФОРМАЦІЇ ПРО СКЛАД ПК ТА ЙОГО ПЗ З ДОПОМОГОЮ ПРОГРАМ КЛАСУ CHECKIT, SANDRA ТА ІН. ПРИВЕДІТЬ ПОЯСНЕННЯ МОЖЛИВОГО ПРИКЛАДУ ОТРИМАННЯ ІНФОРМАЦІЇ ПРО ПК ЗА ДОПОМОГОЮ ПРОГРАМИ КЛАСУ CHECKIT.

System Board (Mother Board) - системная или материнская плата ПК - основа SU, определяющая архитектуру и производительность ПК. На ней устанавливаются следующие обязательные компоненты :

  • процессор и сопроцессор;

  • память (ROM или Flash BIOS; DRAM; кэш - SRAM);

  • обязательные системные средства ввода вывода;

  • интерфейсные схемы и разъемы шин расширения;

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

  • дополнительные стабилизаторы Uпит для низковольтных МП (VRM - Voltage Regulation Module).

Кроме этих обязательных средств на SB устанавливают:

  1. контроллеры гибких и жестких дисков (IDE, SCSI),

  2. графический адаптер, аудиоканал, адаптеры COM, LPT портов, «мыши» и др.

Современные платы исполняются на основе чипсетов (chipset) - наборов из нескольких БИС, реализующих все необходимые функции связи основных компонентов - МП, М и шин расширения. Тип чипсета влияет на производительность МПС.

Получение информации о составе ПК с помощью программ класса Checkit (пример):