Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Распределенные системы обработки информации

Содержание:

ВВЕДЕНИЕ

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

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

Цель этой работы рассмотреть основные этапы развития операционных систем и основные технологии использующиеся в современных сетевых операционных системах.

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

В качестве основных источников используются: книги Э. Тененбаума - человека непосредственно занимавшегося изучением и разработкой операционных систем чьи книги признаны как образовательный стандарт в своих областях, а так же оказали сильное влияние на создателя ОС Linux Линуса Торвальдса, книги В. Г. Олифер, и Н. А. Олифер чьи книги рекомендованы Министерством образования РФ в качестве учебного пособия для студентов высших учебных заведений, документации рассматриваемых ОС предоставляемые разработчиками этих систем.

Глава 1. Определение операционной системы

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

Операционные системы можно разделить на классы по таким признакам как: многозадачные и однозадачные, многопользовательские и однопользовательские, с поддержкой многопоточной обработки и без, с поддержкой многопроцессорных систем и без поддержки таких систем.[2]

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

однозадачные

многозадачные

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

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

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

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

многопользовательские

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

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

не вытесняющая многозадачность

вытесняющая многозадачность

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

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

Написание программ использующих множество процессоров значительно сложнее чем написание программ под однопроцессорные системы.

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

Можно выделить две важнейших функций операционных систем.[5]2

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

Архитектура большинства компьютеров на уровне машинного языка слишком неудобна для управления на данном уровне непосредственно в программах.[6]3 Для этого в операционной системе есть часть программного обеспечения которая называется драйвером и она предоставляет абстрактный интерфейс позволяющий операционной системе управлять устройствами по средством стандартизированных функций и реализующий эти функции в команды машинного уровня для устройства управляемого драйвером.

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

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

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

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

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

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

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

Если компьютер предоставляет свои ресурсы другим пользователям сети то он играет роль сервера. Если компьютер исполняет исключительно роль сервера — то он является выделенным сервером. В зависимости от ресурса предоставляемого выделенным сервером, он называется файл-сервером, факс-сервером, сервером печати, сервером приложений и т.д.

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

Компьютер работающий в сети может выполнять функции либо клиента, либо сервера, либо совмещать обе эти функции.[10]1

В сетях с выделенным сервером Операционные системы для клиентов и серверов отличаются предоставляемыми сетевыми средствами.

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

Глава 2. Краткая история операционных систем

Первые компьютеры созданные в конце 40-х годов не имели операционных систем и их программирование производилось на машинном языке, а организация вычислительного процесса выполнялась вручную. С середины 50-х годов вместе с развитием элементной базы развивалось и программное обеспечение, были разработаны системы пакетной обработки данных ставшие прообразом современных операционных систем так как были предназначены не для обработки данных, а для автоматизации управления вычислительным процессом.[12]1 Следующий важнейший этап развития произошел в период с 1965 по 1975 года. В это время были разработаны и реализованы практически все основные механизмы современных операционных систем: виртуальная память, файловая система, мультипроцессинг, мультипрограммирование, многопользовательский многотерминальный режим, разграничение доступа и сетевая работа. Были созданы вычислительные комплексы с удаленными терминалами где терминальные комплексы могли располагаться на большом удалении от процессорных стоек соединяясь с ними по телефонной сети или выделенными каналами. Для поддержки удаленный работы в операционных системах были разработаны специальные программные модули для реализации протоколов связи. Это программное обеспечение систем с удаленными терминалами стало прообразом сетевых операционных систем.[13]2

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

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

Многотерминальность выявила еще одну важную функцию, которую необходимо было реализовать в ОС, — защиту данных.[15]2

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

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

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

Впервые значимые практические результаты по объединению компьютеров в сети были получены в конце 60-х годов, позволившие реализовать взаимодействие машин класса мэйнфреймов и суперкомпьютеров.[17]2 В 1969 году министерство обороны США инициировало работы по объединению суперкомпьютеров оборонных и научно-исследовательских центров в единую сеть. Эта сеть получившая название ARPANET послужила началу создания глобальной компьютерной сети — Интернет. Операционные системы компьютеров в сети ARPANET с дополнительными программными модулями написанными для обеспечения взаимодействие узлов сети стали первыми сетевыми ОС имеющими практическое значение.

В 1974 году компания IBM начала разработку собственной сетевой архитектуры для своих мэйнфреймов, получившей название System Network Architecture (SNA). Эта архитектура, во многом схожая с моделью OSI обеспечивала взаимодействие по глобальным связям типа «терминал-терминал», «терминал-компьютер», «компьютер-компьютер». Нижние уровни архитектуры были реализованы специализированными аппаратными средствами. Функции верхних уровней SNA выполнялись программными модулями.[18]1

Одновременно в Европе шли работы по созданию стандарта сетей Х.25. Эти сети с коммутацией пакетов не имели привязки к какой-либо конкретной операционной системе. В 1974 году протоколы Х.25 получили статус международного стандарта и стали поддерживаться многими операционными системами. С 1980 компания IBM включила поддержку протоколов Х.25 в архитектуру SNA.

К середине 70-х годов набрали популярность такие мини-компьютеры как PDP-11, Nova, HP. Архитектура мини-компьютеров была значительно упрощена по сравнению с мэйнфреймами, что сказалось и на их операционных системах. Многие функции многопользовательских ОС использовавшихся на мэйнфреймах были усечены. Операционные системы мини-компьютеров в большинстве были узкоспециализированными написанными на ассемблере под конкретный тип компьютера. Так же эти ОС часто были одно-пользовательскими.[19]2 Важным моментом в истории операционных систем явилось создание ОС Unix в лаборатории Bell Labs.[20]3 В версии 7 программный код для Unix был почти полностью написан на языке высокого уровня С.[21]4 Чуть позже в дополнении к этому был разработан переносимы компилятор языка С, что в сумме сделало Unix уникальной для того времени ОС позволявшей сравнительно легкого переносить ее на различные типы компьютеров: суперкомпьютеры, мэйнфреймы, мини-компьютеры, серверы и рабочие станции на базе RISC-процессоров, персональные компьютеры. Модель распространения принятая относительно ОС Unix корпорацией AT&T являвшейся учредителем Bell Labs включала в себя предоставление открытых исходных кодов что позволяло приобретавшим эту систему модернизировать ее для решения своих задач.

Одним из университетов приобретших Unix был институт Беркли. При поддержке Управления перспективного планирования научно-исследовательских работ (Advanced Research Projects Agency (ARPA)) при Министерстве обороны США университет разработал улучшенную версию UNIX названную 1BSD First Berkeley Software Distribution.[22]1 Четвертая версия этой операционной системы среди множества усовершенствований, включала такие важные для развития ОС новшества как виртуальная память, создание файла подкачки и поддержка сетевого протокола TCP/IP до него поддержка сети осуществлялась при помощи программы UUCP (Unix-to-Unix Copy Program) позволявшей копировать файлы с одного компьютера на другой через аппаратные интерфейсы и телефонные сети.[23]2 Все эти усовершенствования привели к тому, что многие производители компьютеров для основы своих версий системы UNIX взяли именно Berkeley UNIX. В результате Berkeley UNIX получила широкое распространение в академических и исследовательских кругах, а также в Министерстве обороны США.

Следующий важный этап состоялся в начале 80-х годов — выпуск компанией IBM нового типа компьютеров - персональных компьютеров. В качестве операционной системы для ПК в 1981 году была лицензирована ОС MS-DOS от компании Microsoft. За счет еще меньшей стоимости по сравнению с микрокомпьютерами их смогли позволить себе не только отделы предприятий или университетов но и отдельные люди. Благодаря этому компьютеры стали набирать популярность не только среди специалистов.[24]1

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

Однако распространение персональных компьютеров создало отличную материальную основу для развития корпоративных локальных сетей в виде десятков и сотен компьютеров. Это в свою очередь потребовало возвращения утраченного относительно микрокомпьютеров функционала и поддержки сетевых функций. Не поддерживающие эти функции первые ОС персональных компьютеров, такие например как MS-DOS и PC-DOS, дополнялись внешними программами, называемыми сетевыми оболочками.[25]2 Наибольшее распространение получили сетевые оболочки LAN Manager компании Microsoft и LAN Server компании IBM, разработанные этими компаниями на основе одного базового кода. К концу 80-х годов стало очевидно что рынок ПК и корпоративных компьютеров неизбежно соединятся и операционная система ПК на основе MS-DOS для этого не подходит в отличии от распространенных в корпоративной среде Unix и BSD.[26]1

Для решения этой проблемы в результате совместных усилий Microsoft и IBM появилась первая мультипрограммная операционная система для персональных компьютеров с процессором Intel 80286, с поддержкой работы в режиме ядра — OS/2.[27]2 Эта ОС оказалась хорошей платформой для построения локальных сетей персональных компьютеров, но Microsoft с инженерами Digital Equipment Corporation начала разработку своей ОС на основе ядра под названием NT. Так среди операционных систем Microsoft произошло разделение на два направления — для домашних компьютеров ОС Windows и для корпоративных получивших название от ядра ОС Windows NT.[28]3

В общей сложности в 80-е годы были приняты основные стандарты на коммуникационные технологии для локальных сетей: в 1980 году — Ethernet, в 1985 — Token Ring, в конце 80-х — FDDI. Это позволило обеспечить совместимость сетевых операционных систем на нижних уровнях, а также стандартизовать интерфейсы ОС с драйверами сетевых адаптеров. Появление процессоров Intel 80286 и особенно 80386 с поддержкой мультипрограммирования позволило перенести на платформу персональных компьютеров ОС Unix.

В 1983 году стек протоколов TCP/IP был принят министерством обороны США в качестве военного стандарта.[29]4 Внедрение протоколов TCP/IP в ARPANET придало этой сети все основные черты, которые отличают современный Интернет. В 1983 году сеть ARPANET была разделена На две части: MILNET поддерживающую военные ведомства США и новую ARPANET. Для обозначения составной сети ARPANET и MILNET стало использоваться название Internet.

Независимость от производителей, гибкость и эффективность, доказанные успешной работой в Интернете, также открытость и доступность стандартов сделали протоколы TCP/IP не только главным транспортным механизмом Интернета, но и основным стеком большинства сетевых операционных систем.[30]1

В 90-е годы практически все операционные системы, занимающие заметное место на рынке, стали сетевыми. До этого времени стек протоколов TCP/IP поддерживался в основном семейством Unix, то теперь этот стек стал проникать во все популярные ОС. Сетевые функции сегодня встраиваются в ядро ОС, они являются ее неотъемлемой частью. Операционные системы получили средства для работы со всеми основными технологиями локальных (Ethernet, Fast Ethernet, Gigabit Ethernet, Token Ring, FDDI, ATM) и глобальных (X.25, frame relay, ISDN, ATM) сетей. В операционных системах используются инструменты мультиплексирования нескольких стеков протоколов, за счет чего компьютеры могут поддерживать одновременную сетевую работу с разнородными клиентами и серверами. Помимо самого стека TCP/IP, в комплект поставки начали включать утилиты, реализующие такие сервисы Интернета, как telnet, FTP, e-mail. Влияние Интернета проявилось и в том, что компьютер превратился из чисто вычислительного устройства в средство коммуникаций с развитыми вычислительными возможностями.

В 1991 была выпущена первая версия ОС Linux новая ОС развившаяся из доработки учебной версии Unix – Minix.[31]2

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

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

Глава 3. Сетевые ОС в настоящее время

В рамках сетевых операционных систем компьютерных сетей имеется разделение на серверные ОС, ОС для рабочих станций (клиентские) и ОС сетевых устройств. Ниша серверных ОС поделена между системами семейства Windows Server фирмы Microsoft и операционными системами семейства Unix-образных — Linux и FreeBSD при том последняя все больше вытесняется ОС Linux.

Большинство компьютерных сетей являются неоднородными, в них используются различные операционные системы, приложения, различное сетевое оборудование. Чаще всего это происходит из-за эволюционного характера развития компьютерной сети и разнообразия задач стоящих перед корпоративными сетями и средств решения этих задач. Из этого следует крайне важное требование к современным сетевым ОС — способность к интеграции с разнообразным сетевым оборудованием и другими операционными системами.[32]1

Задачи устранения неоднородности имеют определенную специфику в зависимости от уровня модели OSI к которому они относятся. Решением проблемы могло бы стать использование единого стека протоколов. Попыткой такого решения было создание стека протоколов OSI, но благодаря стремительному развитию Интернета таким. Де-факто, стандартом стал стек TCP/IP.[33]2 но сам стек на данный момент существует в двух версиях IPv4 и IPv6, поэтому средства межсетевого взаимодействия все еще актуальны.

В настоящее время в операционных системах обоих семейств работа с сетью реализованна при помощи компонентов сетевых транспортных средств реализующих многоуровневую модель OSI (таблица 1 в приложении), сетевого стека TCP/IP и механизма Сокетов Беркли.[34]1

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

Сетевой стек TCP/IP (таблица 2 в приложении)[36]3 – набор сетевых протоколов. Так как стек TCP/IP был разработан до появления модели OSI его уровни весьма условно соответствуют ровням этой модели. В качестве примера протоколов стека можно привести: Протоколы TCP и UDP использующиеся для передачи данных с установление соединения с получателем и без него. Протокол IP позволяющий однозначно идентифицировать интерфейс составной сети. IP-адрес представляет из себя комбинацию номера сети и номера узла. Для IP-сетей, являющихся частью Интернета, уникальность нумерации IP-адресов обеспечивается специально созданными для этого органами Интернета: центральной корпорацией ICANN и региональными органами ARIN, RIP, LACNIC, AfriNIC и APNIC. (указание на книгу) Также в стандартах Интернета определено несколько классов, так называемых частных адресов, рекомендуемых для использования в частных IP сетях: класс А — сеть 10.0.0.0, класс В — диапазон из 16 номеров сетей 172.16.0.0-172.31.0.0 и класс С — диапазон из 255 сетей 192.168.0.0-192.168.255.0. Протокол DHCP отвечает за автоматическое получение IP адресов. Протоколы маршрутизации RIP, OSPF, IS-IS for IP, BGP отвечающие за определение маршрутов данных в составных сетях.

Для работы со стеком TCP/IP в операционных системах используется механизм Berkeley Sockets имеющий свою реализацию и в Unix-системах, и в ОС Windows под название WinSock.[37]1

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

Принцип независимости от нижележащих сетевых протоколов и технологий. Для этого используется понятие — коммуникационный домен. Коммуникационный домен обладает некоторым набором коммуникационных свойств, определяющих способ именования сетевые узлов и ресурсов, характеристики сетевых соединений, способов синхронизации процессов и т.д. Одним из наиболее популярных доменов является домен Интернета с протоколами стека TCP/IP.

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

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

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

Обмен сообщениями в механизме сокетов реализован системными вызовами (таблица 3 в приложении).[38]1

Для решения проблем межсетевого взаимодействия используются такие подходы как: трансляция, мультиплексирование и инкапсуляция.[39]2

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

Принцип мультиплексирования протоколов заключается в поддержке операционной системой нескольких стеков протоколов, что позволяет клиентам и серверам выбрать тот протокол который будет для них общим (рисунок 3 в приложении).[40]3 Примером может служить популярное программное средство SAMBA, которое добавляет серверную и клиентские части протокола SMB компьютерам, работающим под управлением Unix. Это позволяет клиентам Microsoft Windows обращаться к файлам и принтерам серверов Unix так, как будто это серверы Microsoft Windows.[41]4

Принцип инкапсуляции или туннелирования применяется для согласования транспортных протоколов. Используется для объединения двух сетей построенный на одной транспортной технологии через транзитную сеть построенную на базе иной транспортной технологии.[42]1

Также для работы в сети операционной системе требуются специальные сетевые службы. Эти службы реализуют специфические функции по организации совместной работы пользователей сети, опираясь на функции ОС по управлению локальными ресурсами.[43]2 Рассмотрим организацию сетевой службы на примере службы сетевой файловой системы.

Сетевая файловая система — это сетевая служба, предоставляющая пользователям сети услуги по совместному использованию файлов, хранящихся на компьютерах сети.[44]3

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

Клиенты сетевой ФС — это приложения работающие на компьютерах сети и отвечающие за обработку запросов на доступ к файлам на удаленных компьютерах

Сервер сетевой ФС — это приложение получив запрос от клиента передает его локальной файловой системе. После получения ответа сервер сетевой ФС передает этот ответ запросившему его клиенту.

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

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

Протокол SMB/CIFS — это основой протокол сетевой файловой системы в операционных системах семейства Windows компании Microsoft. Он был разработан совместно компаниями Microsoft, Intel и IBM. Работа протокола начинается с того, что клиент отправляет серверу специальное сообщение с запросом на установление соединения. В процессе установления соединения SMB-клиент и SMB-сервер обмениваются информацией о себе: они сообщают друг другу, какой диалект протокола SMB они будут использовать в этом соединении. Если сервер готов к установлению соединения, он отвечает сообщением-подтверждением.

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

В Linux в качестве сетевой ФС используется NFS.[46]2 — сетевая файловая система разработки корпорации Sun Microsystems.

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

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

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

В настоящий момент в сетях используются обе сетевые ФС NFS и SMB. Современные файловые системы позволяют получить удаленный доступ с помощью обоих протоколов.

Поскольку детальный анализ всех сетевых служб займет весьма не малый объем то в рамках курсовой работы будут кратко рассмотрены три основные ОС и их некоторые отличительные особенности.

3.1. Операционная система FreeBSD

FreeBSD - это операционная система с открытым исходным кодом основанная на 4.4BSD-Lite версии для персональных компьютеров. В основном она базируется на программном обеспечении от группы CSRG, U.C. Berkley, с некоторым дополнениями из NetBSD, OpenBSD, 386BSD и Free Software Foundation. Расцвет популярности этой ОС пришелся на начало 2000-х годов тогда эта она использовалась как система для построения интранет и интернет-сетей в роли серверов, маршрутизаторов, фаерволов и файл серверов. Сейчас операционная система FreeBSD, в связи с развитием сетевого оборудования корпоративного уровня, для создания сетей используется специализированное оборудование таких фирм как Cisco, Junpiter Networks, FortiNet и т.д. используется в основном, для организации файл-серверов и серверов баз-данных.

Важной особенностью freeBSD является полная поддержка файловой системы ZFS. Это файловая система созданная в компании Sun Microsystems для операционной системы Solaris. Эта файловая система способна обеспечить высокую скорость доступа к данным, контроль целостности, минимизировать фрагментацию, динамически выделять или освобождать дисковое пространство для логической файловой системы.

FreeBSD Jail — механизм виртуализации в системе FreeBSD.

Jail поддерживается на уровне ядра, что позволяет ограничивать доступ к ресурсам компьютера и ограничивать видимость процессов вне jail. Таким образом создаётся безопасная виртуальная область внутри которой можно исполнять даже потенциально опасное программное обеспечение и оно никак не сможет повредить основной системе.

3.2. Операционная система Linux

Linux — это операционная система с открытым исходным кодом созданная в 1991 году студентом университета Хельсинки Линусом Торвальдсом на основе Minix. В настоящее время Linux - это общее название Unix-подобных операционных систем, основанных на одноимённом ядре. Каждый конкретный дистрибутив — это комплекс решений для разных задач, объединённых едиными системами установки, управления и обновления пакетов, настройки и поддержки. Одними из самых распространенных дистрибутивов Linux являются:

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

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

CentOS — дистрибутив основанный на Red Hat Enterprise Linux компании Red Hat и совместим с ним. Срок поддержки каждой версии CentOS составляет 7 лет. Новая версия CentOS выходит раз в 2 года и каждая версия регулярно обновляется для поддержки новых аппаратных средств. В результате это приводит к безопасной, легко обслуживаемой, надёжной, предсказуемой и масштабируемой Linux среде.

Red Hat Enterprise Linux — дистрибутив для корпоративного использования. Новые версии выходят с периодичностью около 3 лет. Основная особенность дистрибутива — наличие коммерческой поддержки.

Ubuntu — основанная на Debian GNU/Linux. Ubuntu поставляется с подборкой программного обеспечения для серверов и рабочих станций. Есть версии для официально поддерживаемых архитектур, таких как i386, AMD64, ARM. Есть специальная версия Ubuntu для смартфонов и версия Ubuntu Core для работы на IoT-устройствах и роботах.

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

Основой системы является ядро. (рисунок 5 в приложении)[49]1 Ядро Linux является динамическим — поддерживает добавление и удаление модулей без остановки системы. С одной стороны ядро можно подразделить на множество различных подсистем, с другой стороны можно рассматривать как монолитное целое поскольку все базовые сервисы собраны в ядре системы. Такой подход отличается от архитектуры с микроядром, когда ядро предоставляет только самые общие сервисы, такие как обмен информацией, ввод/вывод, управление памятью и процессами, а более конкретные сервисы реализуются в модулях. С течением времени ядро Linux стало более эффективным с точки зрения использования памяти и процессорных ресурсов и приобрело исключительную стабильность.

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

Работа с устройствами ввода-вывода в операционной системе Linux заключается в интегрировании всех устройств в файловую систему в виде так называемых специальных файлов.[50]1 Каждому устройству ввода-вывода назначается маршрут. Например, диск может иметь маршрут /dev/sda1, у сети — /dev/net. Доступ к этим специальным файлам осуществляется так же, как и к любым другим файлам. Для этого не требуется никаких специальных команд или вызовов.

Технология виртуальной файловой системы VFS[51]2 (рисунок 6 в приложении) позволяет осуществлять поддержку всех распространенных файловых систем. При сборке ядра можно выбрать какие файловые системы встроить в ядро, поддержку других файловых систем можно динамически добавлять при необходимости.

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

LXC (Linux Containers) – механизм виртуализации в среде Linux. LXC в отличии от виртуальных машин создает виртуальное окружение с собственным пространством процессов и сетевым стеком используя при этом один экземпляр ядра ОС.

3.3. Операционная система Windows Server

Операционная система Windows прошла длительный этап разработки от MS-DOS и Windows на базе MS-DOS до современной Windows.

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

Рассмотрим особенности ОС Windows и методы реализации основных сетевых протоколов и сервисов.

Современные версии ОС Windows строятся на основе ядра NT. Центральный уровень — это само ядро NTOS.[52]1 Ядро имеет два уровня: исполнительный, в котором содержится большая часть служб, и уровень называющийся ядром реализующий планирование потоков и абстракции синхронизации, а также реализует обработчики ловушек, прерывания и прочие аспекты управления процессором. Подробнее структура ядра системы NT показана на рисунке 7 в приложении.

Ниже уровня ядра находится уровень под названием HAL (Hardware Abstraction Layer — уровень абстрагирования оборудования), который реализует абстракцию низкоуровневых инструкций оборудования.[53]2 В отличие от всех других операционных систем, Windows имеет набор системных вызовов, которые она может выполнять. Они реализованы на уровне ядра NTOS. Данные вызовы используются службами ОС, которые поставляются как часть операционной системы, а также драйверами устройств, работающими в режиме ядра.

Еще одной отличительной особенностью системы Windows является реестр — это иерархическая база данных хранящая параметры и настройки конфигурации операционной системы.[54]1 Реестр организован в отдельные тома, называемые разделами (hives). Каждый раздел хранится в отдельном файле в каталоге C:\Windows\system32\config\. При загрузке Windows, тем же загрузчиком который загружает ядро ОС загружается раздел SYSTEM. Эта решение гораздо более сложное, чем конфигурационная информация систем UNIX.

Работа с устройствами осуществляется через Диспетчер ввода-вывода который предоставляет инфраструктуру для реализации драйверов устройств ввода-вывода и обеспечивает службы исполнительного уровня для конфигурации устройств, доступа к ним и выполнения с ними операций.[55]2

Основной файловой системой Windows является NTFS. Данная файловая система использует 64-битные дисковые адреса и теоретически может поддерживать дисковые разделы размером до 256 Тб.

Одним из важнейших элементов операционных систем Windows стала справочная служба Microsoft Active Directory. Это технология для организации и администрирования логически структурированной, масштабируемой и управляемой многоранговой корпоративной сети.[56]3

Active Directory строится на базе доменов являющихся основным элементом логической структуры. В каждом домене реализуется централизованная справочная служба. Связь доменов образует распределенную справочную службу сети.[57]4 Данная служба является клиент-серверной. Клиентские компоненты работают на всех компьютерах сети подключенных к серверам справочной службы называющихся контроллерами домена. Контроллер домена отвечает за поддержку базы данных, аутентификацию пользователей и управление их правами. Домен является единицей администрирования и границей безопасности.[58]1 Информация о типах связей между клиентами и серверами задается администратором и определяет элемент Active Directory под названием сайт.

Сайт — это элемент физической структуры компьютерной сети, представляющий собой ее часть, которая характеризуется «хорошей связностью». В типичном случае сайтом является набор IP-подсетей, связанных друг с другом высокоскоростными соединениями на основе локальной сети. Имея информацию о том, какие серверы и клиенты относятся к одним и тем же сайтам, Active Directory легко может определить, какими связями, быстрыми или медленными, соединена любая пара компьютеров. Информацию о сайтах могут использовать в своих целях другие службы ОС, а также приложения работающие с Active Directory.[59]2

Информация в базе данных Active Directory представляет собой иерархический набор объектов соответствующих группам пользователей, отдельным пользователям, компьютерам, сетевым папкам и другим сетевым ресурсам, доменам и организационным единицам (Организационная единица (OU) — это специфический объект Active Directory, который представляет группу объектов, объединенных в соответствии с теми или иными их свойствами, конфигурационным параметрам.[60]3

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

Класс объектов — это формальное описание множества объектов, имеющих сходную природу и вследствие этого характеризуемых одним и тем же набором обязательных и необязательных атрибутов.[61]1

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

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

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

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

ЗАКЛЮЧЕНИЕ

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

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

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

Список литературы

1. Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание.

2. Таненбаум Э., Уэзеролл Д. Компьютерные сети. 5-е издание.

3. Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд.

4. The FreeBSD Documentation Project. URL: https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html (Дата обращения: 10.09.2019)

ПРИЛОЖЕНИЕ

Таблица №1

Сетевая модель OSI

Уровни

Функция

Единицы измерения

Примеры

7

Прикладной

Доступ к сетевым службам

Данные

HTTP, FTP, POP3, WebSocket

6

Представления

Представление и шифрование данных

ASCII, EBCDIC

5

Сеансовый

Управление сеансом связи

RPC, PAP, L2TP

4

Транспортный

Связь и надежность

TCP сегменты

UDP датаграммы

TCP, UDP

3

Сетевой

Маршрутизация и логическая адресация

Пакеты

IPv4, IPv6, IPsec

2

Канальный

Физическая адресация

Кадры

PPP, IEEE 802.22, Ethernet

1

Физический

Работа со средой передачи

Биты

Кабель, радиоканал

Таблица составлена по: Таненбаум Э., Уэзеролл Д. Компьютерные сети. 5-е издание.

Таблица №2

Стек протоколов TCP/IP

Уровни

Протоколы

4

Прикладной

HTTP, RTSP, FTP, DNS

3

Транспортный

TCP, UDP, SCTP, DCCP

2

Сетевой

IP, ICMP, IGMP

1

Сетевого доступа

Ethernet, IEEE 802.11 WLAN, SLIP, Token Ring, ATM,

Таблица составлена по: Таненбаум Э., Уэзеролл Д. Компьютерные сети. 5-е издание.

Таблица №3

Системные вызовы сокетов WinSock

вызов

назначение

socket

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

bind

связывает созданный сокет с его высокоуровневым именем или с низкоуровневым адресом.

connect

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

listen

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

accept

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

write

(s, message, msg_len) Сообщение длиной msg_len, хранящееся в буфере message, отправляется получателю, с которым предварительно соединяется сокет s.

read

(snew, buffer, amount) Сообщение, поступившее через сокет snew, с которым предварительно соединяется отправитель, принимается в буфер buffer размером amount. Если сообщений нет, то процесс-получатель блокируется.

sendto

Отправляет сообщение без предварительного соединения.

recvfrom

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

Таблица составлена по: Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд.

Рисунок №1

Элементы сетевой операционной системы

Источник: Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд.

Рисунок №2

Принципы функционирования шлюза

Источник: Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд.Рисунок №3

Мультиплексирование протоколов

Источник: Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд.Рисунок №4

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

Источник: Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание.Рисунок №5

Структура ядра ОС Linux

Источник: Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание.Рисунок №6

Структура виртуальной файловой системы

Источник: Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание.Рисунок №7

Структура ядра NT

Источник: Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание.

  1. 1. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.22-26]

  2. . [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. Глава 4]

  3. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.123-127]

  4. 1. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.45-47]

  5. 2. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. Глава 1.1]

  6. 3. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.24]

  7. 1. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.25]

  8. 2. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.80]

  9. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.23-25]

  10. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.56-57]

  11. 2. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.61-64]

  12. 1. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. Глава 1.2.1.]

  13. 2. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. Глава 1.2.3.]

  14. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.20-22]

  15. 2. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.22]

  16. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.23-24]

  17. 2. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. Глава 1.9]

  18. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.24-26]

  19. 2. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.35]

  20. 3. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.36]

  21. 4. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.25]

  22. 1. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. Глава 10.1.4]

  23. 2. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.25]

  24. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.26-30]

  25. 2. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.30]

  26. 1. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. Глава 1.2.4]

  27. 2. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.30-31]

  28. 3. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. C.36-39]

  29. 4. [Таненбаум Э., Уэзеролл Д. Компьютерные сети. 5-е издание. С.61]

  30. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.31-32]

  31. 2. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.792]

  32. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.578]

  33. 2. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.580]

  34. 1. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.841]

  35. 2. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.580]

  36. 3. [Таненбаум Э., Уэзеролл Д. Компьютерные сети. 5-е издание. Глава 1.4.2.]

  37. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.500-504]

  38. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.501-503]

  39. 2. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.581]

  40. 3. [Таненбаум Э., Уэзеролл Д. Компьютерные сети. 5-е издание. Глава 6.2.5.]

  41. 4. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.588]

  42. 1. [Таненбаум Э., Уэзеролл Д. Компьютерные сети. 5-е издание. С.45]

  43. 2. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.519]

  44. 3. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.519-540]

  45. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.521]

  46. 2. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.866]

  47. 1. [The FreeBSD Documentation Project. URL:https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html (Дата обращения: 10.09.2019)]

  48. 1. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. Глава 10]

  49. 1. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.802-804]

  50. 1. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. Глава 10.5]

  51. 2. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. Глава 10.6]

  52. 1. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.953]

  53. 2. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.955]

  54. 1. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. С.954-955]

  55. 2. [Таненбаум Э., Бос Х. Современные операционные системы. 4-е издание. Глава 11.7]

  56. 3. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.561]

  57. 4. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.562]

  58. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.562]

  59. 2. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.563]

  60. 3. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.566]

  61. 1. [Олифер В., Олифер Н. Сетевые операционные системы: Учебник для вузов. 2-е изд. С.521]