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

Ядро в привилегированном режиме

Современные ОС поддерживают как минимум два режима:

·   Пользовательский режим

·   Привилегированный режим - режим ядра (kernel mode) – режим супервизора (supervisor mode)

·   Ядро выполняет все основные функции - поэтому работает в привилегированном режиме

Контроль за выполнением критичных инструкций обеспечивается запретом их выполнения в пользовательском режиме. Например доступ к памяти (доступ к системным таблицам памяти) разрешен только в привилегированном режиме. Для упорядочивания прав доступа вводятся уровни привилегий (например, в Pentium их четыре: 0,1,2,3). Работа с возможностью переключения в привилегированный режим приводит к замедлению работы.

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

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

Классическое ядро может состоять из следующих слоев:

·   Интерфейс системных вызовов к функциям API(например, fd=open("/doc/a.txt,O_RDONLY)

·   Менеджеры ресурсов - учет, планирование (процессы, ввод-вывод, файловая система, память)

·   Базовые механизмы ядра (переключение контекстов, перемещение страниц и пр.)

·   Машинно-зависимый слой (например в Windows NT/2000 слой HAL-Hardware Abstraction Level)

·   Аппаратная поддержка ОС (средства поддержки привилегированного режима, система прерываний, переключение контекстов, трансляция адресов, защита памяти) Каждый слой взаимодействует лишь с ниже лежащими, за некоторым исключением. UNIX имеет меньшее число четких слоев, Windows NT/2000 - большее.

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

Загружаемые модули ядра могут сохранить существенный объем ОЗУ и упростить настройку. Область применения модулей включает файловые системы, драйверы карт ethernet, драйверы ленточных накопителей и т.д.

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

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

– средства поддержки привилегированного режима;

– средства трансляции адресов;

– средства переключения процессов;

– система прерываний;

– системный таймер;

– средства защиты областей памяти.

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

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

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

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

Преимущества и недостатки микроядерной архитектуры

Достоинства:

Переносимость

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

Надежность

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

Недостатки:

Снижение производительности

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

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

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

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

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

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

19). Многозада́чность — свойство операционной системы или среды выполнения обеспечивать возможность параллельной (или псевдопараллельной) обработки нескольких процессов. Истинная многозадачность операционной системы возможна только в распределённых вычислительных системах.

Существует 2 типа многозадачности

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

Поточная многозадачность (основанная на потоках). Наименьший элемент управляемого кода — поток (одна программа может выполнять 2 и более задачи одновременно).

Вытесняющая, или приоритетная, многозадачность

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

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

Недостатки: необходимость особой дисциплины при написании кода, особые требования к его реентрантности, к защите всех разделяемых и глобальных данных объектами типа критических секций и mutex’ов

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

20) КОНТЕКСТ ПРОЦЕССА

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

Регистровый контекст состоит из следующих компонент:

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

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

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

• Регистров общего назначения, в которых содержится информация, сгенерированная процессом во время его выполнения. Чтобы облегчить последующие объяснения, выделим среди них два регистра - регистр 0 и регистр 1 - для дополнительного использования при передаче информации между процессами и ядром.

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

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

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

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

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

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

(*) Используемые в данном разделе термины "пользовательский контекст" (user-level context), "регистровый контекст" (register context), "системный контекст" (system-level context) и "контекстные уровни" (context layers) введены автором.

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

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

Компоненты контекста процесса

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

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

Многоразовые операции

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

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

1) Запуск процесса.Из числа процессов, находящихся в состоянии «готовность», операционная система выбирает один процесс для последующего исполнения. Для избранного процесса операционная система обеспечивает наличие в оперативной памяти информации, необходимой для его дальнейшего выполнения. Далее состояние процесса изменяется на «исполнение», восстанавливаются значения регистров для данного процесса, и управление передается команде, на которую указывает счетчик команд процесса. Все данные, необходимые для этого восстановления контекста, извлекаются из PCB процесса, над которым совершается операция.

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

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

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

Одноразовые операции

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

1) Создание. Сложный жизненный путь процесса в компьютере начинается с его рождения. Любая операционная система, поддерживающая концепцию процессов, должна обладать средствами для их создания. В очень простых системах (например, в системах, спроектированных для работы только одного конкретного приложения) все процессы могут быть порождены на этапе старта системы. Более сложные операционные системы создают процессы динамически, по мере необходимости. Инициатором рождения нового процесса после старта операционной системы может выступить либо процесс пользователя, совершивший специальный системный вызов, либо сама операционная система, то есть, в конечном итоге, тоже некоторый процесс. Процесс, инициировавший создание нового процесса, принято называть процессом-родителем (parent process), а вновь созданный процесс - процессом-ребенком (child process). Процессы-дети могут, в свою очередь, порождать новых детей и т.д., образуя, в общем случае, внутри системы набор генеалогических деревьев процессов - генеалогический лес. Пример генеалогического леса изображен на рис.5.4. Следует отметить, что все пользовательские процессы вместе с некоторыми процессами операционной системы принадлежат к одному и тому же дереву леса. В ряде КС лес вообще вырождается в одно такое дерево. При рождении процесса система заводит новый PCB с состоянием процесса «рождение» и начинает его заполнение. Новый процесс получает свой собственный уникальный идентификационный номер.

Поскольку для хранения идентификационного номера процесса в операционной системе отводится ограниченное количество бит, то для соблюдения уникальности номеров количество одновременно присутствующих в ней процессов должно быть ограничено. После завершения какого-либо процесса его освободившийся идентификационный номер может быть повторно использован для другого процесса. Обычно для выполнения своих функций процесс-ребенок требует определенных ресурсов: памяти, файлов, устройств ввода-вывода и т.д. Существует два подхода к их выделению. Новый процесс может получить в свое пользование некоторую часть родительских ресурсов, возможно, разделяя с процессом-родителем и другими процессами-детьми права на них, подобно распределению ресурсов в нормальной человеческой семье, или может получить свои ресурсы непосредственно от операционной системы, став, так сказать, на государственное обеспечение в детдоме. Информация о выделенных ресурсах заносится в PCB. После наделения процесса-ребенка ресурсами необходимо занести в его адресное пространство программный код, значения данных, установить программный счетчик. Здесь также возможны два решения. В первом случае процесс-ребенок становится дубликатом процесса-родителя по регистровому и пользовательскому контекстам, при этом должен существовать способ определения кто для кого из процессов-двойников является родителем. Во втором случае процесс-ребенок загружается новой программой из какого-либо файла. Операционная система UNIX разрешает порождение процесса только первым способом; для запуска новой программы необходимо сначала создать копию процесса-родителя, а затем процесс-ребенок должен заменить свой пользовательский контекст с помощью специального системного вызова. Операционные системы VAX/VMS и WINDOWS NT допускают только второе решение. Порождение нового процесса как дубликата процесса-родителя приводит к возможности существования программ (т.е. исполняемых файлов), для работы которых организуется более одного процесса. Возможность замены пользовательского контекста процесса по ходу его работы (т.е. загрузки для исполнения новой программы) приводит к тому, что в рамках одного и того же процесса могут быть последовательно выполнены несколько различных программ. После того как процесс наделен содержанием, в PCB дописывается оставшаяся информация и состояние нового процесса изменяется на «готовность». После рождения процессов-детей процесс-родитель может продолжать свое выполнение одновременно с выполнением процесса-ребенка, а может ожидать завершения работы некоторых или всех своих детей.

2) Завершение. После того, как процесс завершил свою работу, операционная система переводит его в состояние «закончил исполнение» и освобождает все ассоциированные с ним ресурсы, делая соответствующие записи в блоке управления процессом. При этом сам PCB не уничтожается, а остается в системе еще некоторое время. Это связано с тем, что процесс-родитель после завершения процесса-ребенка может запросить операционную систему о причине произошедшей смерти порожденного им процесса и/или статистическую информацию об его работе. Подобная информация сохраняется в PCB мертвого процесса до запроса процесса-родителя или до конца его деятельности, после чего все следы умершего процесса окончательно исчезают из системы. В операционной системе UNIX процессы, находящиеся в состоянии «закончил исполнение», принято называть процессами зомби. Следует заметить, что в ряде операционных систем (например, в VAX/VMS) гибель процесса-родителя приводит к завершению работы всех его детей. В других операционных системах (например, в UNIX) процессы-дети продолжают свое существование и после окончания работы процесса-родителя. При этом возникает необходимость изменения информации в PCB процессов-детей о породившем их процессе для того, чтобы генеалогический лес процессов оставался целостным. Рассмотрим следующий пример. Пусть процесс с номером 2515 был порожден процессом с номером 2001 и после завершения его работы остается в КС неограниченно долго. Тогда, не исключено, что номер 2001 будет использован операционной системой повторно для совсем другого процесса. Если не изменить информацию о процессе-родителе для процесса 2515, то генеалогический лес процессов окажется некорректным – процесс 2515 будет считать своим родителем новый процесс 2001, а процесс 2001 будет открещиваться от нежданного потомка. Как правило, осиротевшие процессы усыновляются одним из системных процессов, который порождается при старте операционной системы, и функционирует все время, пока она работает.

Переключение контекста

Прерывание и типы прерываний

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

В компьютерах фирмы IBM возможны следующие типы прерываний:

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

б) внешние (асинхронные) прерывания. Вызываются асинхронными событиями, которые происходят вне прерываемого процесса:

- прерывания от таймера;

- прерывания от внешних устройств;

- прерывания по нарушению питания;

- прерывания с пульта оператора;

- прерывания от другого процессора или другой ЭВМ и др.

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

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

- при попытке выполнить операцию с неправильным кодом;

- при делении на нуль;

- при переполнении или исчезновении порядка и др.

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

Для корректного переключения процессора с одного процесса на другой в случае возникновения прерывания необходимо сохранить контекст исполнявшегося процесса и восстановить контекст процесса, на который будет переключен процессор. Такая процедура сохранения/восстановления работоспособности процессов называется переключением контекста. Время, затраченное на переключение контекста, не используется КС для совершения полезной работы и представляет собой накладные расходы, снижающие производительность системы. Оно меняется от машины к машине и обычно находится в диапазоне от 1 до 1000 микросекунд. Существенно сократить накладные расходы в современных операционных системах позволяет расширенная модель процессов, включающая в себя понятие потока исполнения (threads of execution).

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

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

б) с абсолютными приоритетами – обслуживание не прерывается при наличии запросов с более высокими приоритетами;

в) LCFS (Last come first served – «последним пришел – первым обслужен»).

При реализации переключения контекста в компьютерах фирмы IBM используются слова состояния программы (PSW), которые управляют порядком выполнения команд и содержат различную информацию относительно состояния процесса. Существуют три типа слов состояния программы – текущее PSW, новое PSW и старое PSW. Адрес следующей команды, подлежащей выполнению, содержится в текущем PSW, в котором указываются также типы прерываний, разрешенных и запрещенных в данный момент. Центральный процессор реагирует только на разрешенные прерывания, а обработка запрещенных прерываний задерживается или игнорируется.

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

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

1) Текущее PSW становится старым PSW для прерывания этого типа

2) Новое PSW для прерывания этого типа становится текущим

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

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

Пример 1

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

Выполнение операции разблокирования процесса

21) Процессы и потоки

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

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

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

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

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

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

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

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

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

- содержимое набора регистров процессора, отражающих состояние процессора;

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

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

- уникальный идентификатор потока;

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

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

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

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

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

1) Завершение потока

2) Переход потока в состояние готовности в связи с тем, что его квант времени истек

3) Переход потока в состояние ожидания.

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

4) Поток вышел из состояния ожидания

5) Поток только что создан

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

Создание процессов

Создание Win32 процесса осуществляется вызовом одной из таких функций, как CreateProcess, CreateProcessAsUser и CreateProcessWithLogonW и происходит в несколько этапов:

- Открывается файл образа (EXE), который будет выполняться в процессе. Если исполняемый файл не является Win32 приложением, то ищется образ поддержки для запуска этой программы. Например, если исполняется файл с расширением .bat, запускается cmd.exe и т.п.

- Создается объект Win32 «процесс».

- Создается первичная нить (стек, контекст и объект «нить»).

- Подсистема Win32 уведомляется о создании нового процесса и нити.

- Начинается выполнение первичной нити.

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

Завершение процессов

Процесс завершается если:

- Входная функция первичной нити возвратила управление.

- Одна из нитей процесса вызвала функцию ExitProcess.

- Нить другого процесса вызвала функцию TerminateProcess.

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

Управление процессами в многозадачных ос

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

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

Рис 2. Виды состояний процесса

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

• Готовое состояние - процесс имеет все необходимые для выполнения ресурсы, кроме ресурса процессора.

• Заблокированное (ожидающее) состояние - процессу не хватает еще какого-либо ресурса (ресурсов).

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

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

Приоритеты

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

1. Низкий;

2. Ниже среднего;

3. Средний;

4. Выше среднего;

5. Высокий;

6. Реального времени.

Что же они обозначают и можно ли их изменять, рассмотрим ниже.

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

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

Если проще:

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

Таким образом, все остальные задачи (просмотр фильма, прослушивание музыки, вэб-серфинг и т.д.) становятся для ОС более приоритетными.

Диспетчер задач Windows

Диспетчер задач в операционных системах семейства Microsoft Windows — утилита для вывода на экран списка запущенных процессов и потребляемых ими ресурсов (в частности статус, процессорное время и потребляемая оперативная память). Также есть возможность некоторой манипуляции процессами.

Windows Task Manager в Windows NT можно вызвать, одновременно нажав клавиши Ctrl+Shift+Esc. В Windows NT и в Windows XP существует более известная комбинация клавиш — Ctrl+Alt+Del. Диспетчер задач можно также запустить в командной строке, введя имя его исполняемого файла (taskmgr.exe) или выбрав соответствующий пункт в контекстном меню панели задач.

Диспетчер задач — встроенная в операционную систему утилита. Она содержит вкладки:

• Приложения. Позволяет переключиться в нужное приложение, либо завершить его.

• Процессы. Разнообразные данные обо всех запущенных в системе процессах, можно завершать, менять приоритет, задавать соответствие процессорам (в многопроцессорных системах)

• Службы (начиная с Windows Vista). Сведения обо всех службах Windows.

• Быстродействие. Графики загрузки процессора (процессоров), использования оперативной памяти.

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

• Пользователи (только в режиме администратора). Манипулирование активными пользователями.

• В Windows 8 программа "Диспетчер задач" была несколько переосмыслена. Теперь у приложения есть два состояния - краткое (отображает список названий запущенных программ) и подробное (отображает выполняемые процессы, активных пользователей, быстродействие жесткого диска, процессора, сети, оперативной памяти при помощи графиков, выполняемые службы).

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

• 22) Процессы в ос unix

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

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

• В то же время процессы имеют возможность обмениваться друг с другом данными с помощью предоставляемой UNIX системой межпроцессного взаимодействия. В UNIX существует набор средств взаимодействия между процессами, таких как сигналы (signals), каналы (pipes), разделяемая память (shared memory), семафоры (semaphores), сообщения (messages) и файлы, но в остальном процессы изолированы друг от друга.

• Системные процессы. Системные процессы являются частью ядра и всегда расположены в оперативной памяти. Системные процессы не имеют соответствующих им программ в виде исполняемых файлов и запускаются особым образом при инициализации ядра системы. Выполняемые инструкции и данные этих процессов находятся в ядре системы, таким образом они могут вызывать функции и обращаться к данным, недоступным для остальных процессов. Системными процессами являются: shed (диспетчер свопинга), vhand (диспетчер страничного замещения), bdfflush (диспетчер буферного кэша) и kmadaemon (диспетчер памяти ядра). К системным процессам следует отнести init, являющийся прародителем всех остальных процессов в UNIX. Хотя init не является частью ядра, и его запуск происходит из исполняемого файла (/etc/init), его работа жизненно важна для функционирования всей системы в целом.

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

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

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

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

• Атрибуты процесса

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

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

• - Идентификатор родительского процесса Parent Process ID (PPID). Идентификатор процесса, породившего данный процесс.

• - Приоритет процесса (Nice Number).Относительный приоритет процесса, учитываемый планировщиком при определении очередности запуска. Фактическое же распределение процессорных ресурсов определяется приоритетом выполнения, зависящим от нескольких факторов, в частности от заданного относительного приоритета. Относительный приоритет не изменяется системой на всем протяжении жизни процесса (хотя может быть изменен пользователем или администратором) в отличие от приоритета выполнения, динамически обновляемого ядром.

• - Терминальная линия (TTY). Терминал или псевдотерминал, ассоциированный с процессом, если такой существует. Процессы-демоны не имеют ассоциированного терминала.

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

• - Реальный (RGID) и эффективный (EGID) идентификаторы группы. Реальный идентификатор группы равен идентификатору первичной или текущей группы пользователя, запустившего процесс. Эффективный иден¬тификатор служит для определения прав доступа к системным ресурсам по классу доступа группы. Так же как и для эффективного идентификатора пользователя, возможна его установка равным идентификатору группы владельца исполняемого файла (флаг SGID).

• Демоны

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

• Управление процессами

• В операционной системе UNIX процессы создаются с помощью вызова системной функции ядра под названием fork (). При вызове этой функции процессом операционная система выполняет следующие действия [ВАСН86].

• 1.Выделяет в таблице процессов место для нового процесса.

• 2.Назначает этому процессу уникальный идентификатор.

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

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

• 5.Назначает процессу состояние готовности к выполнению.

• 6.Возвращает родительскому процессу идентификатор дочернего процесса, а дочернему процессу — значение 0.

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

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

• 2.Передать управление дочернему процессу. Дочерний процесс начинает выполняться с того же места кода, что и родительский: с точки возврата после вызова функции fork ().

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

• 23) Планирование задач в unix

• В системе UNIX System V Release 4 реализована вытесняющая многозадачность, основанная на использовании приоритетов и квантования.

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

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

• В UNIX System V Release 4 возможно включение новых классов приоритетов при инсталляции системы. В настоящее время имеется три приоритетных класса: класс реального времени, класс системных процессов и класс процессов разделения времени. В отличие от ранних версий UNIX приоритетность (привилегии) процесса тем выше, чем больше число, выражающее приоритет. На рисунке 5.2 показаны диапазоны изменения приоритетов для разных классов. Значения приоритетов определяются для разных классов по разному.

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

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

• Процессы разделения времени были до появления UNIX System V Release 4 единственным классом процессов, и по умолчанию UNIX System V Release 4 назначает новому процессу этот класс. Состав класса процессов разделения времени наиболее неопределенный и часто меняющийся, в отличие от системных процессов и процессов реального времени. Для справедливого распределения времени процессора между процессами, в этом классе используется стратегия динамических приоритетов, которая адаптируется к операционным характеристикам процесса.

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

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

• Команды управления расписаниями задач

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

ts_globpri содержит величину глобального приоритета;

ts_quantum определяет количество тиков системных часов, которые отводятся процессу до его вытеснения;

ts_tqexp системная часть приоритета, назначаемая процессу при истечении его кванта времени;

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

ts_maxwaite максимальное число секунд, которое разрешается потреблять процессу; если этот квант времени истекает до кванта ts_quantum, то, следовательно, считается, что процесс ведет себя по-джентльменски, и ему назначается более высокий приоритет;

ts_lwait величина системной части приоритета, назначаемая процессу, если истекает ts_maxwait секунд.

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

ts_timeleft число тиков, остающихся в кванте процесса;

ts_cpupri системная часть приоритета процесса;

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

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

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

24) Управление памятью в ОС

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

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

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

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

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

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

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

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

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

 Загрузка в оперативную память подлежащих исполнению программ.

 Распределение памяти, а в большинстве современных систем и организация виртуальной памяти.

 Запуск программы (передача ей управления, в результате чего процессор ис¬полняет программу).

 Идентификация всех программ и данных.

 Прием и исполнение различных запросов от выполняющихся приложений. Операционная система умеет выполнять очень большое количество системных функций (сервисов), которые могут быть запрошены из выполняющейся про¬граммы. Обращение к этим сервисам осуществляется по соответствующим пра¬вилам, которые и определяют интерфейс прикладного программирования (Ap¬plication Program Interface, API) этой операционной системы.

 Обслуживание всех операций ввода-вывода.

 Обеспечение работы систем управлений файлами (СУФ) и/или систем управ¬ления базами данных (СУБД), что позволяет резко увеличить эффективность всего программного обеспечения.

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

 Планирование и диспетчеризация задач в соответствии с заданными стратеги¬ей и дисциплинами обслуживания.

 Организация механизмов обмена сообщениями и данными между выполняю¬щимися программами.

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

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

 Аутентификация и авторизация пользователей (для большинства диалоговых операционных систем). Под аутентификацией понимается процедура проверки имени пользователя и его пароля на соответствие тем значениям, которые хра¬нятся в его учетной записи’. Очевидно, что если входное имя (login^) пользовате¬ля и его пароль совпадают, то, скорее всего, это и будет тот самый пользователь. Термин авторизация означает, что в соответствии с учетной записью пользова¬теля, который прошел аутентификацию, ему (и всем запросам, которые будут идти к операционной системе от его имени) назначаются определенные права (привилегии), определяющие, что он может, а что не может делать на компьютере.

 Удовлетворение жестким ограничениям на время ответа в режиме реального времени (характерно для операционных систем реального времени).

 Обеспечение работы систем программирования, с помощью которых пользова¬тели готовят свои программы.

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

Методы организации управления оперативной памятью

Стратегии и методы управления:

 Одиночное непрерывное распределение. - ОП делится на 2 области. В одной находится ОС, другая предназначена для задач пользователя (предполагается однопроцессная система).

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

 Распределение перемещаемыми разделами. - Система имеет фиксированное количество разделов. Через некоторое время ее использования начинается внешняя фрагментация.

Решение: перемещение разделов и освобождение одного большого куска. Но это требует очень больших затрат.

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

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

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

25) Принципы управления и распределения оперативной памяти

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

Используемые в операционных системах алгоритмы распределения ОП многообразны. Причинами этого многообразия являются:

• многоуровневая структура памяти (регистровая, оперативная, внешняя)

• стремление обеспечить пользователя характеристиками, отличными от реальных (виртуальная память)

• необходимость согласования распределения ОП с распределением центрального процессора

Самый простой случай управления памятью - ситуация, когда диспетчер памяти отсутствует, и в системе может быть загружена только одна программа. Именно в таком режиме работают CP/M и RT-11 SJ (Single-Job, однозадачная).

В этих системах программы загружаются с фиксированного адреса PROG_START. В CP/M это 0x100; в RT-11 - 01000. В адресах от 0 до начала программы находятся вектора прерываний, а в RT-11 - также и стек программы. В этом случае управление памятью со стороны системы состоит в том, что загрузчик проверяет, поместится ли загружаемый модуль в пространство от PROG_START до SYS_START. Если объем памяти, который использует программа, не будет меняться во время ее исполнения, то на этом все управление и заканчивается.

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

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

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

Виртуальное адресное пространство

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

Такая система удобна по различным причинам - в том числе и потому, что позволяет изолировать "рабочие пространства" процессов друг от друга .

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

Каждый раз, когда программа запускается внутри операционной системы - операционная система (ОС) создаёт хотя бы один новый процесс и новое виртуальное адресное пространство (ВАП) для него.

Виртуальное адресное пространство зависит от:

• архитектуры процессора;

• операционной системы (которая может накладывать дополнительные ограничения)

Виртуальное адресное пространство не зависит от:

• - объема реальной физической(оперативной) памяти, установленной в компьютере.

• - объема жёсткого диска

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

Прилагательное «виртуальное» применительно к адресному пространству означает, что это общее число доступных приложению уникально адресуемых ячеек памяти, но не общий объём памяти, установленной в компьютере, или выделенной в конкретный момент времени данному приложению -

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

Связывание адресов

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

Адреса, с которыми имеет дело менеджер памяти, бывают:

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

- физические.

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

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

Максимальный размер логического адресного пространства обычно определяется разрядностью процессора (например, 2**32) и в современных системах значительно превышает размер физического адресного пространства.

Связывание логического адреса, порожденного оператором программы, с физическим должно

Обычно программа при компиляции проходит нескольких шагов:

а) текст на алгоритмическом языке;

б) объектный модуль;

в) загрузочный модуль;

г) бинарный образ в памяти.

Используемые программой адреса в каждом конкретном случае могут быть представлены различными способами. Например, адреса в исходных текстах обычно символические. Компилятор связывает эти символические адреса с перемещаемыми адресами (такими как n байт от начала модуля). Загрузчик или линкер, в свою очередь, связывают эти перемещаемые адреса с виртуальными адресами. Каждое связывание - отображение одного адресного пространства в другое (рис.9.1).

Рисунок 9.1 - Этапы связывания адресов

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

1) Этап компиляции (Compile time). Когда на стадии компиляции известно точное место размещения процесса в памяти, тогда генерируются абсолютные адреса. Если стартовый адрес программы меняется, необходимо перекомпилировать код. Например, .com программы MS-DOS, которые связывают ее с физическими адресами на стадии компиляции.

2) Этап загрузки (Load time). Если на стадии компиляции не известно где процесс будет размещен в памяти, компилятор генерирует перемещаемый код. В этом случае окончательное связывание откладывается до момента загрузки. Если стартовый адрес меняется, нужно всего лишь перезагрузить код с учетом измененной величины.

3) Этап выполнения (Execution time). Если процесс может быть перемещен во время выполнения из одного сегмента памяти в другой, связывание откладывается до времени выполнения. Здесь желательно специализированное оборудование, например регистры перемещения. Их значение прибавляется к каждому адресу, сгенерированному процессом. Например, MS-DOS использует четыре таких (сегментных) регистра.

26) Основные функции и назначение сетевых операционных систем

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

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

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

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

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

2. Средства предоставления собственных ресурсов и услуг в общее пользование — серверная часть операционной системы (сервер). Эти средства обеспечивают, например, блокировку файлов и записей, что необходимо для их совместного использования; ведение справочников имен сетевых ресурсов; обработку запросов удаленного доступа к собственной файловой системе и базе данных; управление очередями запросов удаленных пользователей к своим периферийным устройствам.

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

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

Основные сетевые службы

1.Удаленный доступ (TELNET)

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

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

В состав Windows входит программа telnet, являющаяся клиентским ПО удаленного доступа.

2.Перемещение файлов (FTP)

Найдя нужную информацию в Internet или проведя расчеты на удаленном компьютере необходимо перенести информацию на свой компьютер. А перед началом расчетов надо по крайней мере передать на удаленный компьютер исходные данные. Для этого предназначен File Transfer Protocol (протокол передачи файлов) – FTP.

В качестве клиентской программы можно использовать поставляемую с Windows программу ftp (с интерфейсом – «командная строка») или одну из бесплатных или условно-бесплатных программ (например, CuteFTP). Протокол FTP также доступен из Internet броузера.

3.Электронная почта (e-mail)

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

4.Телеконференции (News)

Коллективные дискуссии можно проводить с помощью списков рассылки и электронной почты, но при большом числе подписчиков это становится сложно. Кроме того, приходящие сообщения смешиваются со служебными, что мешает работе. Для свободных дискуссий создана служба телеконференций («новости», «эхо»). Там все сообщения сортируются по темам и каждый может выбирать только те темы, которые ему интересны. Кроме того, все сообщения хранятся на сервере (news-server) и каждый пользователь может читать (загружать на свой компьютер) только те, которые ему интересны (выбирая по полю subject в заголовке). При этом сохраняется возможность отвечать на выбранные сообщения или отправлять свои в режиме общения «каждый – со всеми».

5.Поиск файлов (Archie)

Известно, что в Internet на общедоступных FTP серверах расположено огромное количество файлов с документами, графикой и полезными программами. Но для того, чтобы скачать себе нужный файл, необходимо сначала узнать его «адрес» – имя сервера, путь и имя файла. Для поиска файлов на FTP серверах всего Internet создана служба Archie. Эта служба впервые появилась в университете McGill, но потом число archie серверов стало расти.

6.Поиск ресурсов(Gopher)

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

7.World Wide Web

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

27) Стек протоколов TCP/IP (ВЕСЬ БИЛЕТ)

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

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

Приведем список протоколов, входящих в стек TCP/IP:

• TCP (Transmission Control Protocol - протокол управления передачей) - базовый транспортный протокол, давший название всему семейству протоколов TCP/IP;

• UDP (User Datagram Protocol) - второй по распространенности транспортный протокол семейства TCP/IP;

• IP (Internet Protocol) - межсетевой протокол;

• ARP (Address Resolution Protocol - протокол разрешения адресов) - используется для определения соответствия IP-адресов и Ethernet-адресов;

• SLIP (Serial Line Internet Protocol) - протокол передачи данных по телефонным линиям;

• PPP (Point to Point Protocol) - протокол обмена данными "точка-точка";

• RPC (Remote Process Control) - протокол управления удаленными процессами;

• TFTP (Trivial File Transfer Protocol) - простой протокол передачи файлов;

• DNS (Domain Name System) - протокол обращения к системе доменных имен;

• RIP (Routing Information Protocol) - протокол маршрутизации.

• Рассмотрим функции всех четырех уровней модели, основанной на стеке протоколов TCP/IP.

• 1. Прикладной уровень -

• обеспечивается службами, предоставляющими сетевой сервис пользовательским приложениям. Список основных служб включает в себя следующие протоколы: Telnet, FTP, TFTP, DNS, SNMP, HTTP. Прикладной уровень выполняет функции прикладного уровня и уровня представления данных модели OSI.

• 2. Основной уровень -

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

• 3. Уровень межсетевых взаимодействий -

• обеспечивает передачу пакетов данных в составной сети, где есть не только локальные, но и глобальные связи. Основной протокол этого уровня - IP. На этом уровне для сбора маршрутной информации используется протоколы маршрутизации RIP, OSPF (Open Shortest Path First). Этот уровень соответствует сетевому уровню модели OSI.

• 4. Уровень сетевых интерфейсов -

• обеспечивает интерфейсы к сетям, которые встраиваются в составную сеть. Включаемая сеть может использовать любую технологию. Для каждой сетевой технологии разрабатываются протоколы, по которым IP-пакеты сетевого уровня встраиваются в кадры используемых технологий. Этот уровень соответствует физическому и канальному уровням модели OSI.

28) ip адресация в tcp/ip

Протокол IP может работать и над протоколами более высокого уровня, например над протоколом IPX или Х.25. В этом случае локальными адресами для протокола IP соответственно будут адреса IPX и Х.25. Следует учесть, что компьютер в локальной сети может иметь несколько локальных адресов даже при одном сетевом адаптере. Некоторые сетевые устройства не имеют локальных адресов. Например, к таким устройствам относятся глобальные порты маршрутизаторов, предназначенные для соединений типа «точка-точка».

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

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

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

IP-адрес назначается администратором во время конфигурирования компьютеров и маршрутизаторов. IP-адрес состоит из двух частей: номера сети и номера узла. Номер сети может быть выбран администратором произвольно, либо назначен по рекомендации специального подразделения Internet (Internet Network Information Center, InterNIC), если сеть должна работать как составная часть Internet. Обычно поставщики услуг Internet получают диапазоны адресов у подразделений InterNIC, а затем распределяют их между своими абонентами. Но¬мер узла в протоколе IP назначается независимо от локального адреса узла. Маршрутизатор по определению входит сразу в несколько сетей. Поэтому каждый порт маршрутизатора имеет собственный IP-адрес. Конечный узел также может входить в несколько IP-сетей. В этом случае компьютер должен иметь несколько IP-адресов, по числу сетевых связей. Таким образом, IP-адрес характеризует не отдельный компьютер или маршрутизатор, а одно сетевое соединение.

Сети класса a b c

Сети класса А — это огромные сети. Маска сети класса А: 255.0.0.0. В каждой сети такого класса может находиться 16777216 адресов. Адреса таких сетей лежат в промежутке 1.0.0.0... 126.0.0.0, а адреса хостов (компьютеров) имеют вид: 125.*.*.*

Сети класса В — это средние сети. Маска такой сети — 255.255.0.0. Эта сеть содержит 65536 адресов. Диапазон адресов таких сетей 128.0.0.0...191.255.0.0. Адреса хостов имеют вид: 136.12.*.*

Сеть класса С — маленькие сети. Содержат 256 адресов (на самом деле всего 254 хоста, так как номера 0 и 255 зарезервированы). Маска сети класса С — 255.255.255.0. Интервал адресов: 192.0.1.0...223.255.255.0. Адреса хостов имеют вид: 195.136.12.*

Класс сети определить очень легко. Для этого нужно перевести десятичное представление адреса сети в двоичное. Например, адрес сети 128.11.1,0 в двоичном представлении будет выглядеть так: ICOOOOOO 00001011 00000001 00000000 А 192.168.1.0: 11000000 10101000 00000001 00000000

Функции маршрутизатора

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

Функции маршрутизатора могут быть разбиты на 3 группы в соответствии с уровнями модели OSI (рис. 11):

• уровень интерфейсов;

• уровень сетевого протокола;

• уровень протокола маршрутизации.

• Рис. 4.3. Функциональная модель маршрутизатора

Подсети

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

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

29) Доменная система имен

DNS (англ. Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по именихоста (компьютера или устройства), получения информации о маршрутизации почты, обслуживающих узлах для протоколов в домене (SRV-запись).

Распределённая база данных DNS поддерживается с помощью иерархии DNS-серверов, взаимодействующих по определённому протоколу.

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

Начиная с 2010 года, в систему DNS внедряются средства проверки целостности передаваемых данных, называемые DNS Security Extensions (DNSSEC). Передаваемые данные не шифруются, но их достоверность проверяется криптографическими способами. Внедряемый стандарт DANE обеспечивает передачу средствами DNS достоверной криптографической информации (сертификатов), используемых для установления безопасных и защищённых соединений транспортного и прикладного уровней.

Преобразование доменного имени в ip

Всё довольно просто, но к моему удивлению качественную информацию я искал очень долго.

Рассмотрим программу преобразующую доменное имя в IP адрес.

Нам понадобятся следующие библиотеки:

#include <stdio.h>

#include <arpa/inet.h>

#include <string.h>

#include <netdb.h>

Предопределим необходимые структуры:

struct hostent *he;

struct in_addr a;

Главная функция программы имеет вид:

int main (int argc, char **argv) {

/* если принято меньше 1 аргумента (первый аргумент - имя программы) вывести информацию о применении программы */

if (argc != 2) {

fprintf(stderr, "usage: %s hostname\n", argv[0]);

return 1;

}

he = gethostbyname (argv[1]);

/* Если функция выполнилась удачно выведем на экран необходимые данные */

if (he) {

/* выводим имя */

printf("name: %s\n", he->h_name);

/* выводим список IP адресов */

while (*he->h_addr_list) {

bcopy(*he->h_addr_list++, (char *) &a, sizeof(a));

printf("address: %s\n", inet_ntoa(a));

}

}

return 0;

}

Для преобразования доменного имени в IP адрес используется библиотечная функция gethostbyname, она принимает в качестве параметра строку с именем домена и возвращает структуру hostent.

#include <netdb.h>

struct hostent *gethostbyname(const char *name);

В свою очередь структура имеет вид:

struct hostent {

char *h_name;

char **h_aliases;

int h_addrtype;

int h_length;

char **h_addr_list;

};

#define h_addr h_addr_list[0]

• h_name - имя хоста

• h_aliases - массив строк, содержащий псевдонимы хоста

• h_addrtype - тип адреса. В настоящее время для интернет срединений всегда используется AF_INET

• h_length - длина адреса в байтах

• h_addr_list - массив адресов хоста в сетевом порядке

Для обеспечения совместимости используется h_addr. Он содержит нулевой элемент из массива адресов.

Функция inet_ntoa преобразует адрес представленный в сетевом порядке в привычный нам четырёхциферный формат:

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

char *inet_ntoa(struct in_addr in);

В качестве параметра же она принимает структуру типа in_addr:

struct in_addr {

unsigned long s_addr;

};

Вот и всё! Скомпилировав и запустив программу вы увидите:

Службы wins и dns

Система доменных имен (DNS) - Иерархическая распределенная база данных, содержащая сопоставления доменных имен DNS с различными типами данных, таких как IP-адреса. DNS позволяет находить компьютеры и службы по понятным именам, а также просматривать другие сведения из базы данных. Служба WINS (Windows Internet Name Service) - Программная служба, динамически сопоставляющая IP-адреса именам компьютеров (именам NetBIOS). Это позволяет пользователям осуществлять доступ к ресурсам по именам, а не по IP-адресам, распознавание и запоминание которых труднее. Серверы WINS обеспечивают поддержку клиентов с операционными системами Microsoft Windows NT 4.0 и более ранних версий.

30) Основные сетевые службы глобальной сети (См.26)

E-mail

Электронная почта стала первой услугой Интернета, которая и в настоящее время является наиболее используемым сервисом Интернета. E-mail предназначена для обмена почтовыми сообщениями между абонентами сети Internet. С помощью E-mail можно посылать и получать сообщения, отвечать на полученные письма, рассылать копии письма сразу нескольким получателям, переправлять полученное письмо по другому адресу и так далее.

Для работы с электронной почтой используют почтовые клиенты (Outlook Express, Microsoft Outlook, The Bat) и почтовые Web-интерфейсы, расположенные на почтовых веб - серверах (например, http://mail.ru/, http://www.hotmail.ru/ и другие).

Word Wide Web (WWW) - "Всемирная паутина"

Web (англ. сеть, паутина) является самой популярной службой Интернета. Многие пользователи Интернета считают, что Всемирная паутина (Word Wide Web) - это глобальная сеть Интернет. Надо отметить, что это не так. WWW - это одна из служб Интернета, но она является его основой, это распределенная система гипермедиа (гипертекста), в которой документы, размещены на серверах Интернет и связаны друг с другом ссылками.

В 1991 году Европейская лаборатория физики элементарных частиц (CERN) в Швейцарии объявила о создании новой глобальной информационной среды World Wide Web. Создание "Всемирной паутины", в основу которой легла технология гипертекста и прикладной протокол HTTP для передачи Web-страниц, является важнейшее событие в истории Internet. Web-страницы создаются с помощью специального языка HTML.

HTML или Hyper Text Markup Language является языком разметки гипертекста, разметка осуществляется с помощью тегов (tags). Эти теги обеспечивают форматирование элементов страницы и позволяют размещать на ней графические объекты, рисунки, гиперссылки и т.д. В настоящее время WWW стала средством доступа фактически ко всем ресурсам Интернет.

Для просмотра Web-страниц используются прикладные программы - браузеры. К наиболее популярным обозревателям относятся: Internet Explorer, Mozilla Firefox, MyIE Web Browser, Opera и т.д.

FTP

FTP - это служба или программа-клиент FTP, которая предназначена для пересылки файлов между компьютерами, работающими в сетях TCP/IP, при помощи прикладного протокола передачи файлов (File Transfer Protocol), который определяет правила передачи файлов с одного компьютера на другой.

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

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

Для скачивания файлов можно использовать специализированные клиентские программы FTP или графические ftp-оболочек типа ftptool. Кроме того, клиентская программа FTP входит в состав современных мультипротокольных браузеров, менеджеров файлов типа Total Commander и в другие приложения. Таким образом, с помощью браузеров или менеджеров файлов можно закачивать файлы на удаленный компьютер или скачивать файлы с удаленногокомпьютера.

Необходимо отметить, что в Интернете существуют так называемые анонимные ftp-серверы (файловые архивы), доступ к которым является открытым, т.е. доступ не требует ввода логина и пароля. На таких серверах могут быть размещены файлы различных прикладных программ, например свободное (free) или условно-свободное (shareware) программное обеспечение (ftp://ftp.microsoft.com/).

Для поиска файлов на FTP-серверах по именам самих файлов и каталогов можно использовать, например поисковую систему http://www.filesearch.ru/.

Кроме того, возможен и доступ к FTP серверам через электронную почту, некоторые FTP серверы могут пересылать файлы по E-mail.

31) Гипертекстовые системы

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

Путеводители назначение и основные функции

Хз

Мультимедиа и гипермедиа

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

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

Гипермедиа (hypermedia) - применение принципов гипертекста к средстваммультимедиа.

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

Гипермедиа - термин, введённый Тедом Нельсоном, и использованный в его работе Complex information processing: a file structure for the complex, the changing and the indeterminate 1965 год . Гипермедиа — это гипертекст, в который включены графика, звук, видео, текст и ссылки, для того чтобы создать основу нелинейной среды информации. Гипермедиа соотносится с определением мультимедиа, которое используется чтобы описать неинтерактивные последовательные данные также как и гипермедиа.

Всемирная Паутина - классический пример гипермедиа, где интерактивные единицы соседствуют с мультимедийными.

32) Управление пользователями в windows xp 2000 2003

(ЕБАНУТЫЙ БИЛЕТ №2)

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

Следующие типы пользовательских профилей доступны в Windows 2003 Server, Windows XP Professional и Windows 2000 Professional.

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

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

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

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

Обеспечение безопасности в windows 2000

Система безопасности Windows NT имеет своей целью защитить как данные системы, так и данные пользователя от случайного или преднамеренного уничтожения или искажения, а также от несанкционированного доступа к ним. С самой первой версии Windows NT система безопасности удовлетворяла многим требованиям надежной защиты данных. Развитие системы в целом сопровождалось и совершенствованием системы безопасности. В Windows 2000, являющейся новой версией Windows NT, появилось много новых функций, которые, с одной стороны, позволили еще более надежно защитить информацию в системе, а с другой — упростить обмен информацией в гетерогенных системах за счет использования стандартных протоколов и API.

Условно функции защиты данных можно разделить на функции, приносящие выгоду пользователям, и функции, приносящие выгоду администраторам. К первым относятся новые, упрощенные, но более надежные способы регистрации в сети, шифрование файлов пользователей и использование сертификатов. Ко вторым — служба каталогов Active Directory, содержащая все объекты системы и позволяющая не только разграничивать права и привилегии, но и легко выполнять их делегирование; средства конфигурирования уровня безопасности и управления политикой безопасности; средства аудита системы; средства обеспечения безопасной передачи данных по сети по протоколу IP.

Возможности, предоставляемые пользователям

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

Вход пользователя в систему

При входе в систему пользователь может задать не только свое короткое имя в системе, но и полное имя в виде «имя@имя_домена». Это позволяет интегрировать систему безопасности с Интернетом. Дополнительно по умолчанию используется иной протокол аутентификации — Kerberos. Для повышения защищенности служит и использование при регистрации смарт-карт. Все это выполнено таким образом, что наряду с серверами, работающими под управлением Windows 2000, в сети могут существовать машины и с предыдущими версиями Windows NT и с иными ОС.

Аутентификация Kerberos

Протокол Kerberos усиливает существующие функции безопасности Windows NT и добавляет новые.

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

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

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

Основы Kerberos

Kerberos является протоколом аутентификации с совместным секретом. Так он называется потому, что и пользователю, и KDC известен пароль (KDC на самом деле известен зашифрованный пароль). Протокол Kerberos определяет серию обменов между клиентами, KDC и серверами для получения билетов Kerberos (рис. 1). Когда клиент начинает регистрацию в Windows 2000, поставщик функций безопасности (ПФБ) Kerberos получает начальный билет Kerberos (Ticket grant ticket — TGT), основанный на зашифрованном представлении пароля. Windows 2000 хранит TGT в кэше билетов на рабочей станции, связанной с контекстом регистрации пользователя. При попытке клиентской программы обратиться к сетевой службе выполняется проверка кэша билетов на наличие в нем верного билета для текущего сеанса работы с сервером. Если такого билета нет, на KDC посылается запрос, содержащий TGT, для получения сеансового билета, разрешающего доступ к серверу.

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

На рис. 2 изображено взаимодействие между клиентом, KDC и сервером приложений, использующим протокол аутентификации Kerberos.

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

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

Интеграция Kerberos

Протокол Kerberos полностью интегрирован с системой безопасности и контроля доступа Windows 2000. Начальная регистрация в Windows 2000 обеспечивается процедурой WinLogon. Она использует поставщика функций безопасности Kerberos для получения начального билета TGT. Другие компоненты системы, например Redirector, используют интерфейс SSPI к ПФБ Kerberos для получения сеансового билета для удаленного доступа к файлам сервера SMB.

Делегирование аутентификации (рис. 3) поддерживается в протоколе Kerberos v5 путем использования в сеансовых билетах флагов proxy и forwarding. Функция делегирования используется сервером Windows 2000 для получения сеансового билета на доступ от имени клиента к другому серверу.

Расширения Kerberos для использования смарт-карт

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

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

Вторичная регистрация «Run As»

Полезной функцией, встроенной в Windows 2000, является сервис вторичной регистрации, позволяющий выполнять отдельные процессы с разным уровнем привилегий. Для этого в командной строке используется команда runas. Она подобна утилите SU в UNIX. Указывая имя процесса и учетную запись, от имени которой будет запущен процесс, можно изменять привилегии этого процесса.

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

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

Файловая система с шифрованием

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

Файловая система с шифрованием (Encrypting File System — EFS) призвана решать эту проблему.

Реализация EFS

Файловая система с шифрацией (рис. 4) является частью послойной модели Windows 2000 и состоит из следующих компонентов:

• Драйвер EFS. Этот драйвер располагается непосредственно над NTFS и взаимодействует с сервисом EFS для запроса ключей шифрования файлов, полей дешифрования файлов, полей восстановления файлов и других сервисов, связанных с управлением ключами.

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

• Сервис EFS. Этот сервис является частью подсистемы защиты.

• Интерфейсы Win32 API. Обеспечивают программные интерфейсы для шифрования текстовых файлов, дешифрации или восстановления закодированных текстов, а также импорта или экспорта зашифрованных файлов без их предварительного дешифрования.

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

Также имеется возможность восстановления файлов в случае потери личного ключа пользователя.

Использование EFS

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

Функции системы безопасности для администраторов

В первую очередь к функциям системы безопасности, предоставляющим новые возможности администраторам, безусловно, следует отнести службу каталогов Active Directory. Помимо этого имеются Delegation Wizard — инструмент для упрощения делегирования административных полномочий, Enterprise Certificate Services — средство выдачи сертификатов, а также средства управления локальным компьютером и политикой безопасности.

Безопасность и Active Directory

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

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

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

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

Между Active Directory и Службами безопасности Windows 2000 существуют фундаментальные отношения. В Active Directory хранятся правила безопасности домена, определяющие использование системы, — ограничения паролей, ограничения доступа к системе. Объекты каталога, относящиеся к безопасности, должны быть защищены от несанкционированного доступа. В Windows 2000 реализована объектная модель безопасности и контроля доступа ко всем объектам в каталоге Active Directory. У каждого объекта имеется свой уникальный дескриптор защиты, определяющий разрешения, необходимые для чтения или обновления свойств объектов.

Группы

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

Универсальные группы характерны тем, что членство в них публикуется в Глобальном каталоге. Глобальные группы включают в себя пользователей или группы того же самого домена, в котором определены глобальные группы. Членство в этих группах не публикуется в Глобальном каталоге.

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

Делегирование административных полномочий

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

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

Для делегирования полномочий применяется Delegation Wizard.

Безопасная передача по протоколу IP

В RFC 1825-1829 определены спецификации протокола IPSec. Этот протокол является обязательным для IPv6 и опционным для IPv4, тем не менее он реализован в Windows 2000. IPSec защищает трафик IP по двум протоколам: Authentication Header (AH) и Encapsulating Security Payload (ESP).

AH обеспечивает целостность и неизменность как заголовка пакета IP, так и его содержимого. Если хакер внес изменения в пакет, то AH позволяет узнать об этом на приемной стороне.

ESP обеспечивает конфиденциальность передаваемых данных путем шифрования пакетов IP. ESP не шифрует заголовки пакетов, что позволяет использовать его при трансляции сетевых адресов.

IPSec работает в двух режимах: транспортном и туннельном. В транспортном режиме AH или ESP располагается в оригинальном пакете IP между IP-заголовком и верхним слоем расширений заголовка. Этот режим используется для защиты соединений точка-точка, например между рабочей станцией и сервером.

В туннельном режиме оригинальный пакет IP помещается внутри нового пакета, а AH или ESP — между заголовком IP нового пакета и оригинальным пакетом. Новый заголовок пакета IP указывает на конечную точку туннеля, в то время как в старом заголовке хранится точное место назначения. Туннельный режим используется для создания туннеля между двумя системами, например между двумя конечными точками, между конечной точкой и защищенным шлюзом или между двумя защищенными шлюзами. Под защищенным шлюзом можно рассматривать туннельный сервер, маршрутизатор, межсетевой экран или виртуальную частную сеть.

Ядром реализации IPSec в Windows 2000 является политика безопасности IP. В рамках этой политики можно задать параметры для фильтров IP, политики переговоров, метода аутентификации, туннеля IPSec, а также выбрать тип соединения — локальной сети или удаленного доступа. Политика безопасности может храниться как на отдельных машинах, так и в Active Directory, что позволяет распространить ее на всю организацию в целом.

33) Маршрутизация TCP/IP

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

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

Таблица маршрутизации это таблица перекрестных ссылок, которая хранит информацию о том, как добраться до сетей IP.

На данном этапе самой важной концепцией для нас является понятие шлюза, принятого по умолчанию (default gateway). Ранее было указано, что компьютеры с одинаковыми идентификаторами подсети и маской подсети могут связываться друг с другом. А как же компьютер связывается с компьютерами из другой подсети?

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

Шлюз, принятый по умолчанию, отвечает на вопрос "Если я не знаю, куда отправлять пакет, куда же его отправить?"

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

NAT

NAT (от англ. Network Address Translation — «преобразование сетевых адресов») — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов.

Функционирование

Преобразование адреса методом NAT может производиться почти любым маршрутизирующим устройством — маршрутизатором, сервером доступа, межсетевым экраном. Наиболее популярным является SNAT, суть механизма которого состоит в замене адреса источника (англ. source) при прохождении пакета в одну сторону и обратной замене адреса назначения (англ. destination) в ответном пакете. Наряду с адресами источник/назначение могут также заменяться номера портов источника и назначения.

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

Помимо source NAT (предоставления пользователям локальной сети с внутренними адресами доступа к сети Интернет) часто применяется также destination NAT, когда обращения извне транслируются межсетевым экраном на компьютерпользователя в локальной сети, имеющий внутренний адрес и потому недоступный извне сети непосредственно (без NAT).

Существует 3 базовых концепции трансляции адресов: статическая (Static Network Address Translation), динамическая (Dynamic Address Translation), маскарадная (NAPT, NAT Overload, PAT).

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

Динамический NAT — Отображает незарегистрированный IP-адрес на зарегистрированный адрес от группы зарегистрированных IP-адресов. Динамический NAT также устанавливает непосредственное отображение между незарегистрированным и зарегистрированным адресом, но отображение может меняться в зависимости от зарегистрированного адреса, доступного в пуле адресов, во время коммуникации.

Перегруженный NAT (NAPT, NAT Overload, PAT, маскарадинг) — форма динамического NAT, который отображает несколько незарегистрированных адресов в единственный зарегистрированный IP-адрес, используя различные порты. Известен также как PAT (Port Address Translation). При перегрузке каждый компьютер в частной сети транслируется в тот же самый адрес, но с различным номером порта.

Механизм NAT определён в RFC 1631, RFC 3022.

Типы NAT[править | править исходный текст]

Классификация NAT, часто встречающаяся в связи с VoIP.[1] Термин «соединение» использован в значении «последовательный обмен пакетами UDP».

Симметричный NAT (Symmetric NAT) — Трансляция, при которой каждое соединение, инициируемое парой «внутренний адрес: внутренний порт» преобразуется в свободную уникальную случайно выбранную пару «публичный адрес: публичный порт». При этом инициация соединения из публичной сети невозможна.

Cone NAT, Full Cone NAT — Однозначная (взаимная) трансляция между парами «внутренний адрес: внутренний порт» и «публичный адрес: публичный порт». Любой внешний хост может инициировать соединение с внутренним хостом (если это разрешено в правилах межсетевого экрана).

Address-Restricted cone NAT, Restricted cone NAT — Постоянная трансляция между парой «внутренний адрес: внутренний порт» и «публичный адрес: публичный порт». Любое соединение, инициированное с внутреннего адреса, позволяет в дальнейшем получать ему пакеты с любого порта того публичного хоста, к которому он отправлял пакет(ы) ранее.

Port-Restricted cone NAT — Трансляция между парой «внутренний адрес: внутренний порт» и «публичный адрес: публичный порт», при которой входящие пакеты проходят на внутренний хост только с одного порта публичного хоста — того, на который внутренний хост уже посылал пакет.

Преимущества

NAT выполняет три важных функции.

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

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

3. Позволяет скрыть определённые внутренние сервисы внутренних хостов/серверов. По сути, выполняется та же указанная выше трансляция на определённый порт, но возможно подменить внутренний порт официально зарегистрированной службы (например, 80-й порт TCP (HTTP-сервер) на внешний 54055-й). Тем самым, снаружи, на внешнем IP-адресе после трансляции адресов на сайт (или форум) для осведомлённых посетителей можно будет попасть по адресу http://example.org:54055, но на внутреннем сервере, находящемся за NAT, он будет работать на обычном 80-м порту. Повышение безопасности и скрытие «непубличных» ресурсов.

Недостатки

1.Старые протоколы. Протоколы, разработанные до массового внедрения NAT, не в состоянии работать, если на пути между взаимодействующими хостами есть трансляция адресов. Некоторые межсетевые экраны, осуществляющие трансляцию IP-адресов, могут исправить этот недостаток, соответствующим образом заменяя IP-адреса не только в заголовках IP, но и на более высоких уровнях (например, в командах протокола FTP). См. Application-level gateway.

2.Идентификация пользователей. Из-за трансляции адресов «много в один» появляются дополнительные сложности с идентификацией пользователей и необходимость хранить полные логи трансляций.

3.Иллюзия DoS-атаки. Если NAT используется для подключения многих пользователей к одному и тому же сервису, это может вызвать иллюзию DoS-атаки на сервис (множество успешных и неуспешных попыток). Например, избыточное количество пользователей ICQ за NAT приводит к проблеме с подключением к серверу некоторых пользователей из-за превышения допустимой скорости подключений. Частичным решением проблемы является использование пула адресов(группы адресов), для которых осуществляется трансляция.

4.Пиринговые сети. В NAT-устройствах, не поддерживающих технологию Universal Plug & Play, в некоторых случаях, необходима дополнительная настройка (см. Трансляция порт-адрес) при работе с пиринговыми сетями и некоторыми другими программами, в которых необходимо не только инициировать исходящие соединения, но также принимать входящие.

Основы построения шлюза

Шлюз Протей-ITG (рис.8.1) предназначен для организации доступа абонентов существующей телефонной аналого-цифровой сети общего пользования к сети Интернет через цифровую коммутационную станцию в соответствии с требованиями Минсвязи России к аппаратуре, реализующей функции передачи речевой информации по сетям передачи данных с протоколом IP.

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

Шлюз может использоваться операторами связи (сервис-провайдерами) для предоставления услуг IP-телефонии посредством доступа к сети Интернет.

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

зацией пакетов IP в соответствии с рекомендацией ITU-T H.323 v2, выполняя функции:- кодирования и упаковки речевой информации в пакеты RTP/UDP/IP;

- конвертирования сигнальных сообщений систем сигнализации E-DSS1и ОКС7 (ISUP-R - российская версия) в сигнальные сообщения H.323 и обратного преобразования в соответствии с рекомендацией ITU-T H.246;

- обработки сигналов DTMF; распознавания и обработки тоновых сигналов.

В оборудовании шлюза реализованы функции поддержки настройки параметров с использованием обычного Web-браузера (Web-администрирование). Для работы шлюза в сети IP-телефонии без привратника реализована функция преобразования номера ТфОП в IP-адрес.

Оборудование шлюза обеспечивает совместимость с Н.323 шлюзами (Cisco) и клиентскими программами (Microsoft Netmeeting 3.0).

34) Командная оболочка UNIX (САМЫЙ ЕБАНУТЫЙ БИЛЕТ)

Кома́ндная оболо́чка UNIX (англ. Unix shell, часто просто «шелл» или «sh») — командный интерпретатор, используемый в операционных системах семейства UNIX, в котором пользователь может либо давать команды операционной системе по отдельности, либо запускать скрипты, состоящие из списка команд. В первую очередь, под shell понимаются POSIX-совместимые оболочки, восходящие к Bourne shell (шелл Борна), появившемуся в Unix Version 7.

Разновидности

• sh — оригинальный шелл Борна; dash, bash, zsh — другие современные клоны Bourne shell (расположены по функциональности).

• ksh (KornShell) — клон шелла Борна, разработанный Дэвидом Корном из AT&T Labs. Синтаксис совместим, функциональность интерактивности увеличена[1].

• pdksh (public domain ksh) — открытая (почти целиком является общественным достоянием[2]) реализация ksh.

• bash (bourne again shell) (эмуляция совместимости POSIX[1]) расширенная Борном свободная (разработанная в рамках проекта GNU) оболочка ash, сходная с pdksh. Стандартная оболочка в Linux.

• C shell — (несовместима с POSIX shell) оболочка, с синтаксисом на основе Си, созданная Университетом Беркли в рамках проекта по реализации BSD Unix.

• csh (C-Shell) — оболочка из состава дистрибутива BSD, имеет Си-образный синтаксис и не является POSIX-совместимой. Впервые введены возможности управления заданиями и произведены другие улучшения.

• tcsh (csh) — реализация csh с интерактивными возможностями, не уступающими bash[1]. Удобна для интерактивной работы. Совместима с csh.

• ash (Almquist shell, оболочка Альмквиста), BusyBox — современные микро-версии, предназначенные для встраиваемых систем, а также используемые в мини-дистрибутивах.

Программирование

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

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

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

• sed, tr, awk, head, tail, cut и другие — для работы с текстом.

BASH

bash (от англ. Bourne again shell, каламбур «Born again» shell — «возрождённый» shell) — усовершенствованная и модернизированная вариация командной оболочки Bourne shell. Одна из наиболее популярных современных разновидностей командной оболочки UNIX. Особенно популярна в среде Linux, где она часто используется в качестве предустановленной командной оболочки.

Bash — это командный процессор, работающий, как правило, в интерактивном режиме в текстовом окне. Bash также может читать команды из файла, который называется скриптом (или сценарием). Как и все Unix-оболочки, он поддерживает автодополнение названий файлов и папок, подстановку вывода результата команд, переменные, контроль за порядком выполнения, операторы ветвления и цикла. Ключевые слова, синтаксис и другие основные особенности языка были заимствованы из sh. Другие функции, например, история, были скопированы из csh и ksh. Bash в основном удовлетворяет стандарту POSIX, но с рядом расширений[1].

Название «bash» является акронимом от Bourne-again-shell («ещё-одна-командная-оболочка-Борна») и представляет собой игру слов: Bourne-shell — одна из популярных разновидностей командной оболочки для UNIX (sh), автором которой является Стивен Борн (1978), усовершенствована в 1987 году Брайаном Фоксом. Фамилия Bourne (Борн) перекликается с английским словом born, означающим «родившийся», отсюда: рождённая-вновь-командная оболочка.

Внутренние команды

Ввод-вывод

echo

выводит выражение или содержимое переменной (на stdout)

printf

команда форматированного вывода, расширенный вариант команды echo

read «читает» значение переменной со стандартного ввода (stdin), в интерактивном режиме это клавиатура

Файловая система

cd изменяет текущий каталог

pwd

выводит название текущего рабочего каталога (от англ. print working directory)

Действия над переменными

let производит арифметические операции над переменными

eval транслирует список аргументов из списка в команды

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

unset

удаляет переменную (фактически устанавливает её значение в null)

export

экспортирует переменную, делая её доступной дочерним процессам

declare, typeset задают и/или накладывают ограничения на переменные

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

Управление сценарием

source, . (точка) запуск указанного сценария

exit

безусловное завершение работы сценария

exec заменяет текущий процесс новым, запускаемым командой exec

shopt позволяет изменять ключи (опции) оболочки на лету

Команды

true

возвращает код завершения ноль (успешное завершение)

false

возвращает код завершения, который свидетельствует о неудаче

type prog выводит полный путь к prog

hash prog запоминает путь к prog

help COMMAND выводит краткую справку по использованию внутренней команды COMMAND

Сценарии оболочки

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

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

Во-вторых, хотя разновидности С переполнены превосходными интерактивными функциями, им явно недостает возможностей программирования. Главный недостаток версий С состоит в отсутствии функций оболочки (возможно, настало время для оболочки C++). Это в значительной мере затрудняет структурное программирование. Каждая функция должна быть либо отдельным файлом, либо псевдонимом. Для более сложных задач написание псевдонимов может быть трудным, а то и невозможным. Разновидности С также не поддерживают подстановку параметров и значительно уступают по числу переменных и проверок файлов другим оболочкам. Лучше просто отказаться от программирования в оболочке С. Конечно, для простейших сценариев, содержащих несколько команд, которые используются главным образом в качестве расширенных сокращений команд, проблема переносимости не принципиальна.

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

35) Служба каталогов

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

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

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

Назначение службы каталогов

Служба каталогов является как инструментом администрирования, так и инструментом пользователя (см. рис. 1.1). Пользователи и администраторы зачастую не знают точных имен объектов, которые им в данный момент требуются. Они могут знать один или несколько их признаков или атрибутов (attributes) и могут послать запрос (query) к каталогу, получив в ответ список тех объектов, атрибуты которых совпадают с указанными в запросе.

Служба каталогов позволяет :

• обеспечивать защиту информации от вмешательства посторонних лиц в рамках, установленных администратором системы;

• распространять каталог среди других компьютеров в сети;

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

• разделять каталог на несколько частей, обеспечивая возможность хранения очень большого числа объектов.

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

Функции службы каталогов

Приведем основные функции службы каталогов и дадим их краткое описание [ 3 ] .

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

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

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

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

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

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

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

• Хранить информацию об объектах сети и предоставлять эту информацию пользователям и системным администраторам.

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

• Представлять сеть в интуитивно понятном иерархическом виде и позволять централизованно управлять всеми объектами сети.

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

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

Active Directory

Active Directory (AD) - служба каталогов, поставляемая с Microsoft Windows, начиная с Windows 2000 Server. Active Directoryсодержит каталог, в котором хранится информация о сетевых ресурсах и службы, предоставляющие доступ к этой информации.

Active Directory - это не первая и не единственная служба каталогов. В современных сетях используется несколько служб каталогов и стандартов [ 3 ] , [ 13 ] :

• Х.500 и Directory Access Protocol (DAP). X.500 - спецификация International Organization for Standardization (ISO), определяющая, как должны быть структурированы глобальные каталоги. Х.500 также описывает применение DAP для обеспечения взаимодействия между клиентами и серверами каталогов;

• Lightweight Directory Access Protocol (LDAP). Протокол LDAP был разработан в ответ на критические замечания по спецификации DAP, которая оказалась слишком сложной для применения в большинстве случаев. Спецификация LDAP быстро стала стандартным протоколом каталогов в Интернете;

• Novell Directory Services (NDS). Служба каталогов для сетей Novell NetWare, совместимая со стандартом Х.500;

• Windows NT и SAM. Ядром Windows NT NOS (Network Operating System - сетевая операционная система) является база данных SAM (Security Accounts Management - управление безопасными учетными записями). Она представляет центральную базу данных учетных записей, включающую все учетные записи пользователей и групп в домене. Эти учетные записи используются для управления доступом к совместным ресурсам, принадлежащим любому серверу в домене Windows NT.

Служба Active Directory, в отличие от перечисленных служб каталогов, является защищенной, распределенной, сегментированнойи реплицируемой, что позволяет обеспечить следующие возможности [ 4 ] :

• упрощенное администрирование;

• масштабируемость;

• поддержку открытых стандартов;

• поддержку стандартных форматов имен.

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

36) Домен Windows

Домен Windows NT — собрание участников безопасности (все объекты Active Directory), имеющих единый центр (который называется контроллером домена), использующий единую базу, известную как Active Directory, начиная с Windows 2000 , Active Directory Domain Services в Windows Server 2008 и Server 2008 R2, также известный как NT Directory Services на NT операционных системах Windows, или NTDS (то есть учётные записи находятся не на каждом в отдельности компьютере, а на контроллере домена, т. н. сетевой вход в систему), единую групповую и локальную политики, единые параметры безопасности (применимо к томам с файловой системой NTFS), ограничение времени работы учётной записи и прочие параметры, значительно упрощающие работу системного администратора организации, если в ней эксплуатируется большое число компьютеров. Также становится возможным сделать для каждого аккаунта перемещаемый профиль, который будет храниться на выделенном для профилей сервере. При больших объёмах профиля время входа пользователя в систему может быть сильно увеличено. В результате пользователи могут работать со своим «Рабочим столом», «Моими документами» и прочими индивидуально настраиваемыми элементами с любого компьютера домена. Компьютеры, находящиеся в домене, отличаются от таких же компьютеров, которые находятся в рабочей группе и считаются «автономными» — то есть нет формального членства или процесса аутентификации образованной рабочей группы. Рабочая группа не имеет серверов и клиентов, и как таковая, она представляет систему Peer-To-Peer (или клиент-клиент), и не имеет централизованной архитектуры как в системе клиент-сервер. Рабочие группы трудно управляются при наличии более десятка клиентов, а также в отсутствие единого входа в систему.

Контроллер домена

Контроллер Домена в компьютерных сетях — сервер, контролирующий область компьютерной сети (домен).

Запускает службы Active Directory, в частности Центр распространения ключей Kerberos (Kerberos Key Distribution Center, KDC)

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

Контроллеры домена, работающие под управлением Windows Server 2003, хранят данные каталога и управляют взаимодействиями пользователя и домена, включая процессы входа пользователя в систему, проверку подлинности и поиски в каталоге. Контроллеры домена создаются при использовании мастера установки Active Directory.

В Windows NT для надежности создается в связке с основным контроллером домена, резервный контроллер домена. В Windows 2000 и Windows Server 2003 все равны.

Windows NT

В сетях Windows NT , один сервер использовался в качестве основного контроллера домена (PDC), а все остальные серверы, выполняли роль резервных контроллеров домена (BDC).

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

Windows 2000

Windows 2000 и более поздние версии введен Active Directory (AD), которая практически свела на нет концепцию основного и резервного контроллеров домена в пользу нескольких хозяев репликации (multi-master replication модель).

Тем не менее, существует несколько ролей, которые по умолчанию устанавливаются на первый DC в сети. Они называются Flexible single-master operations (FSMO) (некоторые роли отвечают за домен, другие за лес). Если сервер, выполняющий одну из этих ролей недоступен, домен продолжает функционировать. В случае, если сервер недоступен постоянно роль может на себя взять другой DC (процесс, известный как «захват» роли).

Windows Server 2008 и более поздние версии могут использоваться в качестве Read Only Domain Controller (RODC). Обновление информации на них возможно через репликацию с других DC.

Samba 4.0/4.1

В unix-подобных системах Samba 4.x может работать в качестве контроллера домена. Поддерживает схемы леса и домена windows 2003, 2003 R2, 2008, 2008 R2, которые в свою очередь могут быть расширены. Может использоваться в качествеRODC.

Репликация базы данных active directory

Все данные Active Directory хранятся в специализированной базе данных на движке ESENT. Физически она представляет собой файл NTDS.DIT. Все изменения в AD производятся на конкретном контроллере домена и вносятся в его NTDS.DIT и лишь потом эти изменения передаются на остальные контроллеры домена.

Логически база данных состоит из четырёх разделов:

Schema - содержит описания объектов и их атрибутов, которые могут быть созданы в AD. Меняется редко - при процедуре расширения схемы, которая производится, например, при установке MS Exchange или при апгрейде ОС контроллеров домена. Расширение схемы необратимо, его нельзя откатить никак, кроме способа восстановления всех DC, успевших реплицировать данные, из бэкапа. Репликацию данного раздела может инициировать только контроллер домена, имеющий роль Schema master. Реплицируется на все контроллеры леса.

Configuration - содержит сведения о конфигурации AD (сколько доменов, сайтов, сайтлинков и т.д.). Инициатором репликации может выступать любой DC. Реплицируется на все контроллеры леса.

Domain - содержит учётные записи (пользователей, группы, компьютеры, принтеры...). Инициатором выступает любой DC. Реплицируется на все контроллеры домена.

Application - раздел для хранения данных какими-то приложениями, не относящимися к AD непосредственно. В частности, если вы выбрали в настройках DNS-зоны "интегрированная в AD", то она хранится здесь. Репликация зависит от настройки.

Репликация между контроллерами происходит не абы как и не по принципу "каждый с каждым", а на основе репликационных связей. За их создание отвечает сервис KCC (Knowledge Consistency Checker). Он стартует на каждом контроллере домена раз в 15 минут и добавляет или удаляет необходимые связи. Так что нет ничего страшного, если сразу после установки нового DC в сети, он ещё не числится ничьим партнёром репликации. Посмотреть и настроить связи можно в оснастке Active Directory Sites and Services.

- See more at: http://www.bazedy.ru/blogs/kabal/setevye-servisy-windows-2012-replikaciya-active-directory#ad_basic

37) Сетевые функции windows

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

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

Самая распространенная в мире многозадачная оᴨȇрационная система для ПК - это Microsoft Windows, которая приобретает все большую популярность с каждым годом. В версии ОС Windows используются возможности увеличения производительности сети, обесᴨȇчения повышенной надежности и эффективности. [2, c. 145]

В оᴨȇрационной системе Windows XP предусматривается использование возможности быстрого ᴨȇреключения пользователей.

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

Соединение компьютеров в сеть значительно увеличивает их возможности (рис. 2). Мощные и простые в эксплуатации сети Windows XP позволяют сэкономить время и деньги. На подключенных к сети компьютерах можно совместно использовать общее подключение Интернета, общий принтер и другое оборудование, а также общие файлы. Можно даже играть по сети с другими участниками в сетевые компьютерные игры.

Кроме того, установка сети с помощью MS Windows XP осуществляется проще, чем с помощью любой предыдущей оᴨȇрационной системы. Чтобы настроить сеть дома или в небольшом офисе, не обязательно быть эксᴨȇртом в области организации сетей, мастер сделает все необходимые для этого шаги. Остается только ответить на несколько вопросов о компьютерах, которые требуется соединить, а мастер выполнит остальную работу.

После ввода сети в эксплуатацию оᴨȇрационная система Windows XP помогает обслуживать ее, автоматически отслеживая изменения и корректируя параметры, чтобы обесᴨȇчить максимальную производительность при минимуме усилий со стороны пользователя.

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

Файловый сервер

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

Программная архитектура «файл-сервер»

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

Достоинства:

• низкая стоимость разработки;

• высокая скорость разработки;

• невысокая стоимость обновления и изменения ПО.

Недостатки:

• рост числа клиентов резко увеличивает объём трафика и нагрузку на сети передачи данных;

• высокие затраты на модернизацию и сопровождение сервисов бизнес-логики на каждой клиентской рабочей станции;

• низкая надёжность системы.

Доступ к сетевым ресурсам

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]