Протоколы компьютерных сетей
Сетевым протоколом называется набор правил, позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть компьютерами.Фактически разные протоколы зачастую описывают лишь разные стороны одного типа связи; взятые вместе, они образуют так называемый стек протоколов. Названия и также указывают на программное обеспечение, которым реализуется протокол
Уровни протоколов
Наиболее распространённой системой классификации сетевых протоколов является так называемая модель OSI. В соответствии с ней протоколы делятся на 7 уровней по своему назначению — от физического (формирование и распознавание электрических или других сигналов) до прикладного (API для передачи информации приложениями):
- Прикладной уровень (Application layer). Верхний (7-й) уровень модели, обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложениям пользователя доступ к сетевым службам, таким как обработчик запросов к базам данных, доступ к файлам, пересылке электронной почты. Также отвечает за передачу служебной информации, предоставляет приложениям информацию об ошибках и формирует запросы к уровню представления. Пример: HTTP, POP3, SMTP.
- Уровень представления (Presentation layer). 6-й уровень отвечает за преобразование протоколов и кодирование/декодирование данных. Запросы приложений, полученные с уровня приложений, он преобразует в формат для передачи по сети, а полученные из сети данные преобразует в формат, понятный приложениям. На уровне представления может осуществляться сжатие/распаковка или кодирование/декодирование данных, а также перенаправление запросов другому сетевому ресурсу, если они не могут быть обработаны локально.
- Сеансовый уровень (Session layer). 5-й уровень модели отвечает за поддержание сеанса связи, что позволяет приложениям взаимодействовать между собой длительное время. Сеансовый уровень управляет созданием/завершением сеанса, обменом информацией, синхронизацией задач, определением права на передачу данных и поддержанием сеанса в периоды неактивности приложений. Синхронизация передачи обеспечивается помещением в поток данных контрольных точек, начиная с которых возобновляется процесс при нарушении взаимодействия.
- Транспортный уровень (Transport layer). 4-й уровень модели, предназначен для доставки данных без ошибок, потерь и дублирования в той последовательности, как они были переданы. При этом неважно, какие данные передаются, откуда и куда, то есть он предоставляет сам механизм передачи. Блоки данных он разделяет на фрагменты, размер которых зависит от протокола, короткие объединяет в один, а длинные разбивает. Протоколы этого уровня предназначены для взаимодействия типа точка-точка. Пример: TCP, UDP
- Сетевой уровень (Network layer). 3-й уровень сетевой модели OSI, предназначен для определения пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и заторов в сети. На этом уровне работает такое сетевое устройство, как маршрутизатор.
- Уровень звена данных (Data Link layer). Часто это уровень называется канальным. Этот уровень предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля за ошибками, которые могут возникнуть. Данные, полученные с физического уровня, он упаковывает во фреймы, проверяет на целостность, если нужно исправляет ошибки и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и управляя этим взаимодействием. Спецификация IEEE 802 разделяет этот уровень на 2 подуровня — MAC (Media Access Control) регулирует доступ к разделяемой физической среде, LLC (Logical Link Control) обеспечивает обслуживание сетевого уровня. На этом уровне работают коммутаторы, мосты. В программировании этот уровень представляет драйвер сетевой платы, в операционных системах имеется программный интерфейс взаимодействия канального и сетевого уровней между собой, это не новый уровень, а просто реализация модели для конкретной ОС. Примеры таких интерфейсов: ODI, NDIS
- Физический уровень (Physical layer). Самый нижний уровень модели, предназначен непосредственно для передачи потока данных. Осуществляет передачу электрических или оптических сигналов в кабель или в радиоэфир и соответственно их приём и преобразование в биты данных в соответствии с методами кодирования цифровых сигналов. Другими словами, осуществляет интерфейс между сетевым носителем и сетевым устройством. На этом уровне работают концентраторы (хабы), повторители (ретрансляторы) сигнала и медиаконверторы. Функции физического уровня реализуются на всех устройствах, подключенных к сети. Со стороны компьютера функции физического уровня выполняются сетевым адаптером или последовательным портом.
В основном используются протокол TCP/IP
Transmission Control Protocol/Internet Protocol, TCP/IP (Протокол управления передачей/Протокол Интернета)
Большинство операционных систем сетевых серверов и рабочих станций поддерживает TCP/IP, в том числе серверы NetWare, все системы Windows, UNIX, последние версии Mac OS, системы OpenMVS и z/OS компании IBM, а также OpenVMS компании DEC. Кроме того, производители сетевого оборудования создают собственное системное программное обеспечение для TCP/IP, включая средства повышения производительности устройств. Стек TCP/IP изначально применялся на UNIX-системах, а затем быстро распространился на многие другие типы сетей.
Протоколы локальных сетей
Протоколы локальных сетей
- IPX/SPX;
- NetBEUI;
- AppleTalk;
- TCP/IP;
- SNA;
- DLC;
- DNA;
Свойства протоколов локальной сети
В основном протоколы локальных сетей имеют такие же свойства, как и Другие коммуникационные протоколы, однако некоторые из них были разработаны давно, при создании первых сетей, которые работали медленно, были ненадежными и более подверженными электромагнитным и радиопомехам. Поэтому для современных коммуникаций некоторые протоколы не вполне пригодны. К недостаткам таких протоколов относится слабая защита от ошибок или избыточный сетевой трафик. Кроме того, определенные протоколы были созданы для небольших локальных сетей и задолго до появления современных корпоративных сетей с развитыми средствами маршрутизации.
Протоколы локальных сетей должны иметь следующие основные характеристики:
- обеспечивать надежность сетевых каналов;
- обладать высоким быстродействием;
- обрабатывать исходные и целевые адреса узлов;
- соответствовать сетевым стандартам, в особенности — стандарту IEEE 802.
В основном все протоколы, рассматриваемые в этой главе, соответствуют перечисленным требованиям, однако, как вы узнаете позднее, у одних протоколов возможностей больше, чем у других.
В таблице перечислены протоколы локальных сетей и операционные системы, с которыми эти протоколы могут работать. Далее в главе указаны протоколы и системы (в частности, операционные системы серверов и хост компьютеров) будут описаны подробнее.
Таблица Протоколы локальных сетей и сетевые операционные системы
Соответствующая операционная система
Первые версии операционных систем Microsoft Windows
UNIX, Novel NetWare, современные версии операционных систем Microsoft Windows, операционные системы мэйнфреймов IBM
Операционные системы мэйнфреймов и миникомпьютеров IBM
Клиентские системы, взаимодействующие с мэйнфреймами IBM, настроенными на работу с протоколом SNA
Понятие протокола Интернет
Очевидно, что рано или поздно компьютеры, расположенные в разных точках земного шара, по мере увеличения своего количества должны были обрести некие средства общения. Такими средствами стали компьютерные сети. Сети бывают локальными и глобальными. Локальная сеть — это сеть, объединяющая компьютеры, географически расположенные на небольшом расстоянии друг от друга — например, в одном здании. Глобальные сети служат для соединения сетей и компьютеров, которых разделяют большие расстояния — в сотни и тысячи километров. Интернет относится к классу глобальных сетей.
Простое подключение одного компьютера к другому — шаг, необходимый для создания сети, но не достаточный. Чтобы начать передавать информацию, нужно убедиться, что компьютеры «понимают» друг друга. Как же компьютеры «общаются» по сети? Чтобы обеспечить эту возможность, были разработаны специальные средства, получившие название «протоколы». Протокол — это совокупность правил, в соответствии с которыми происходит передача информации через сеть. Понятие протокола применимо не только к компьютерной индустрии. Даже те, кто никогда не имел дела с Интернетом, скорее всего работали в повседневной жизни с какими-либо устройствами, функционирование которых основано на использовании протоколов. Так, обычная телефонная сеть общего пользования тоже имеет свой протокол, который позволяет аппаратам, например, устанавливать факт снятия трубки на другом конце линии или распознавать сигнал о разъединении и даже номер звонящего.
Исходя из этой естественной необходимости, миру компьютеров потребовался единый язык (то есть протокол), который был бы понятен каждому из них.
- TCP/IP
- POP3
- SMTP
- FTP
- HTTP
- IMAP4
- WAIS
- Gorpher
- WAP
Краткое описание протоколов Интернет
TCP/IP
Над созданием протоколов, необходимых для существования глобальной сети, трудились лучшие умы человечества. Одним из них был Винтон Серф (Vinton G. Cerf). Сейчас этого человека называют «отцом Интернета». В 1997 году Президент США Билл Клинтон наградил Винтона Серфа и его коллегу Роберта Кана (Robert E. Kahn) Национальной медалью за заслуги в области технологии, отметив их вклад в становление и развитие Интернета. Ныне Винтон Серф занимает пост старшего вице-президента по Интернет-архитектуре в корпорации MCI WorldCom Inc.
В 1972 году группа разработчиков под руководством Винтона Серфа разработала протокол TCP/IP — Transmission Control Protocol/Internet Protocol (Протокол управления передачей/Протокол Интернета).
Эксперимент по разработке этого протокола проводился по заказу Министерства обороны США. Данный проект получил название ARPANet (Advanced Research Projects Agency Network — Сеть агентства важных исследовательских проектов). Очевидно, что в обстановке войны, когда необходимость в обмене информацией встает как никогда остро, возникает проблема непредсказуемости состояния пути, по которому будет передана та или иная информация — любой из узлов передачи в любой момент может быть выведен из строя противником. Поэтому главной задачей при разработке сетевого протокола являлась его «неприхотливость» — он должен был работать с любым сетевым окружением и, кроме того, обладать гибкостью в выборе маршрута при доставке информации.
Позже TCP/IP перерос свое изначальное предназначение и стал основой стремительно развивавшейся глобальной сети, ныне известной как Интернет, а также небольших сетей, использующих технологии Интернета — интранет. Стандарты TCP/IP являются открытыми и непрерывно совершенствуются.
На самом деле TCP/IP является не одним протоколом, а целым набором протоколов, работающих совместно. Он состоит из двух уровней. Протокол верхнего уровня, TCP, отвечает за правильность преобразования сообщений в пакеты информации, из которых на приемной стороне собирается исходное послание. Протокол нижнего уровня, IP, отвечает за правильность доставки сообщений по указанному адресу. Иногда пакеты одного сообщения могут доставляться разными путями.
Схема функционирования протокола TCP/IP:
Протокол HTTP (Hypertext Transfer Protocol — Протокол передачи гипертекста) является протоколом более высокого уровня по отношению к протоколу TCP/IP — протоколом уровня приложения. HTTP был разработан для эффективной передачи по Интернету Web-страниц. Именно благодаря HTTP мы имеем возможность созерцать страницы Сети во всем великолепии. Протокол HTTP является основой системы World Wide Web.
Вы отдаете команды HTTP, используя интерфейс броузера, который является HTTP-клиентом. При щелчке мышью на ссылке броузер запрашивает у Web-сервера данные того ресурса, на который указывает ссылка — например, очередной Web-страницы.
Чтобы текст, составляющий содержимое Web-страниц, отображался на них определенным образом — в соответствии с замыслом создателя страницы — он размечается с помощью особых текстовых меток — тегов языка разметки гипертекста (HyperText Markup Language, HTML).
Адреса ресурсов Интернета, к которым вы обращаетесь по протоколу HTTP, выглядит примерно следующим образом: http://www.tut.by
Протокол FTP (File Transfer Protocol — Протокол передачи файлов) специально разработан для передачи файлов по Интернету. Позже мы поговорим о нем подробно. Сейчас скажем лишь о том, что адрес FTP-ресурса в Интернете выглядит следующим образом: ftp://ftp.netscape.com
TELNET
С помощью этого протокола вы можете подключиться к удаленному компьютеру как пользователь (если наделены соответствующими правами, то есть знаете имя пользователя и пароль) и производить действия над его файлами и приложениями точно так же, как если бы работали на своем компьютере.
Telnet является протоколом эмуляции терминала. Работа с ним ведется из командной строки. Если вам нужно воспользоваться услугами этого протокола, не стоит рыскать по дебрям Интернета в поисках подходящей программы. Telnet-клиент поставляется, например, в комплекте Windows 98.
Операционные системы персональных ЭВМ
Изучение понятия, назначения, состава и функций операционной системы. Обзор особенностей серверных и однопользовательских операционных систем. Описания семейства операционных систем компании Майкрософт. Классификация ОС по базовой технологии и назначению.
| Рубрика | Программирование, компьютеры и кибернетика |
| Вид | курсовая работа |
| Язык | русский |
| Дата добавления | 27.05.2013 |
| Размер файла | 40,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1. Понятие и назначение ОС
Операционная система, сокр. ОС (англ. operating system, OS) — комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между устройствами вычислительной системы и прикладными программами, а с другой стороны — предназначены для управления устройствами, управления вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений. Это определение применимо к большинству современных операционных систем общего назначения.
В логической структуре типичной вычислительной системы операционная система занимает положение между устройствами с их микроархитектурой, машинным языком и, возможно, собственными (встроенными) микропрограммами — с одной стороны — и прикладными программами с другой. Разработчикам программного обеспечения операционная система позволяет абстрагироваться от деталей реализации и функционирования устройств, предоставляя минимально необходимый набор функций. В большинстве вычислительных систем операционная система является основной, наиболее важной (а иногда и единственной) частью системного программного обеспечения. С 1990-х годов наиболее распространёнными операционными системами являются системы семейства Windows и системы класса UNIX (особенно Linux и Mac OS).
— организация вычислительного процесса в вычислительной системе;
— рациональное распределение вычислительных ресурсов между отдельными решаемыми задачами;
— предоставление пользователям многочисленных сервисных средств, облегчающих процесс программирования и отладки задач.
Операционная система исполняет роль своеобразного интерфейса (Интерфейс — совокупность аппаратуры и программных средств, необходимых для подключения периферийных устройств к персональной электронной вычислительной машине (ПЭВМ)) между пользователем и ВС, т.е. ОС предоставляет пользователю виртуальную ВС. Это означает, что ОС в значительной степени формирует у пользователя представление о возможностях ВС, удобстве работы с ней, ее пропускной способности. Различные ОС на одних и тех же технических средствах могут предоставить пользователю различные возможности для организации вычислительного процесса или автоматизированной обработки данных. В программном обеспечении ВС операционная система занимает основное положение, поскольку осуществляет планирование и контроль всего вычислительного процесса. Любая из компонент программного обеспечения обязательно работает под управлением ОС.
Настоящая операционная система должна:
— быть общепризнанной и использоваться как стандартная система на многих компьютерах;
— работать со всеми устройствами компьютера, в том числе и выпущенными давно;
— обеспечивать запуск самых разных программ, написанных разными людьми и в разное время;
— предоставлять средства для проверки, настройки, обслуживания компьютерной системы.
Современные операционные системы являются многозадачными, то есть пользователь может запускать одновременно несколько приложений, наблюдая результат выполнения каждой из них. Это возможно благодаря конструкции ОС и функциональности современных процессоров — не зря операционные системы пишутся для процессора, а не наоборот. Современный процессор представляет собой не одноядерное, а двухъядерное и даже четырех ядерное решение, что увеличивает его производительность во много раз. Этим пользуется операционная система, оптимально распределяя ресурсы процессора между всеми запущенными процессами.
Главными характеристиками операционной системы являются стабильность ее работы и устойчивость к различным угрозам — внешним (вирусам) и внутренним (аппаратным сбоям и конфликтам). Сегодня выпускается два типа операционных систем — серверные и однопользовательские. Первые представляют собой серьезную программную реализацию, поскольку содержат механизмы, с помощью которых контролируются отношения и поддерживается локальная сеть. Вторые — облегченные, могут работать как автономно, так и в составе сети, подчиняясь ее правилам.
2. Состав и основные функции ОС
Операционная система является достаточно сложно организованной программой, и более уместно будет говорить о ней, как о целом комплексе программ. Таким образом, в состав ОС входят следующие модули:
Модуль Назначение. Базовый модуль управляет работой программ и файловой системой, обеспечивает доступ к ней и обмен файлами между периферийными устройствами .
Командный процессор расшифровывает и исполняет команды пользователя, поступающие прежде всего через клавиатуру.
Драйверы устройств — программы для работы с устройствами компьютера. К каждому устройству прилагается инструкция (программа-драйвер), в которой описывается, как с ним должна работать ОС .
Графический интерфейс. Благодаря графическому интерфейсу пользователь вводит команды с помощью мыши, что позволяет ему избегать ошибок при формировании текста команд, возникающих при вводе последних с клавиатуры .
Сервисные программы, программы-утилиты, позволяющие обслуживать диски, выполнять операции с файлами, работать в сетях и т.д.
Справочная система позволяет оперативно получать необходимую информацию о функционировании ОС в целом, так и о работе ее отдельных модулей.
Современные операционные системы выполняют три основные функции.
Во-первых, они упрощают использование аппаратных средств компьютера, и делает работу с ним эффективной и удобной.
Во-вторых, важным свойством операционных систем является унификация программного обеспечения. Раньше программы были машинно-зависимыми. То есть программа, написанная для одного компьютера, не могла работать на другом, пусть даже таком же компьютере, без корректировки. С появлением операционных систем, программистам больше не надо переписывать приложения для каждого нового компьютера, так как все машинно-зависимые части программы были перенесены в код операционных систем.
В-третьих, операционная система должна быть организована так, чтобы она допускала эффективную разработку, тестирование и внедрение новых приложений и системных функций, причем это не должно мешать нормальному функционированию вычислительной системы.
К дополнительным функциям ОС относятся:
— параллельное или псевдопараллельное выполнение задач (многозадачность);
— взаимодействие между процессами: обмен данными, взаимная синхронизация;
— защита самой системы, а также пользовательских данных и программ от действий пользователей (злонамеренных или по незнанию) или приложений;
— разграничение прав доступа и многопользовательский режим работы (аутентификация, авторизация).
— Управление аппаратными средствами, устройствами ввода- вывода
— Поддержка многозадачности (разделение использования памяти, времени выполнения)
— Ограничение доступа, многопользовательский режим работы (если взять к примеру ДОС, то он не может быть многопользовательским)
— Сеть (взять спектрум в пример. )
— Буферы ввода- вывода
— Обслуживание драйверов устройств
3. Виды операционных систем
Операционная система UNIX была разработана группой сотрудников Bell Labs под руководством Денниса Ричи, Кена Томпсона и Брайана Кернигана в 1969 году.
В конце 70-х годов XX века сотрудники Калифорнийского университета в Беркли внесли ряд усовершенствований в исходные коды UNIX, включая работу с протоколами TCP/IP. Их разработка стала известна под именем BSD — «Berkeley Systems Distribution». Она распространялась под лицензией, позволяющей дорабатывать и совершенствовать продукт и передавать результат третьим лицам, с исходными кодами или без них, при условии указания авторства кода, написанного в Беркли.
В начале 90-х годов тогда студент Хельсинкского университета Линус Торвалдс начал разработку ядра новой ОС для IBM-совместимых ПК, которое было названо «Linux или «Линукс»». В настоящее время GNU/Linux (совокупность различных дистрибутивов построенных на базе ядра Linux) стоит на втором месте по популярности среди ОС используемых на рабочих столах пользователей (первое место принадлежит Microsoft Windows).
Linux-Beginner (Начинающим. Что, где, как и почему. Основные направления.)
Linux-FAQ (Часто задаваемые вопросы и ответы на них.)
Linux-Articles (Тематические статьи. Не желаете ли разместить свою? 🙂
Linux-Books (Комментарии к понравившимся книгам.)
Linux-Links (Коллекция полезных ссылок.)
Linux-hand-book (Короткий полезный справочник повседневных команд)
Linux-About (Что добавлять, в каком формате и как задавать вопросы.)
AmigaOS — операционная система для персональных компьютеров семейства Amiga (процессор Motorola 68k), имеет атипичное микроядро называемое Exec. Классическую AmigaOS принято рассматривать как совокупность двух составляющих: Kickstart и Workbench. Kickstart обеспечивает абстрагирование от уникального аппаратного обеспечения Amiga и содержит в себе: шедулер вытесняющей многозадачности (Exec), дисковую операционную систему (AmigaDOS) и библиотеки графического интерфейса (Intuition). Workbench является графическим интерфейсом пользователя, и представлен как правило одноимённым рабочим столом или другим файловым менеджером. История AmigaOS начинается в 1985 году, это была первая операционная система в которой были одновременно реализованы вытесняющая многозадачность реального времени, графический интерфейс пользователя и командная строка. Имеет 3 полноценных ответвления (наследующих архитектуру AmigaOS):
AROS — ОС совместимая с AmigaOS на уровне API, разрабатывается AROS Team на принципах Open-Source (процессоры x86).
AmigaOS 4.x — версии проприетарной AmigaOS, разработка компании Hyperion Ent. для семейства ПК AmigaONE (процессор PowerPC);
AmigaAnywhere — кроссплатформенная среда приложений аналогичная Java. Существует для всех процессоров;
MorphOS — AmigaOS-совместимая ОС, смешанного с Open-Source типа, изначально разработка компании Genesi для семейства ПК Pegasos (процессор PowerPC);
В 1980 Тимом Патерсоном (Tim Paterson) из Seattle Computer Products (SCP) была создана QDOS (Quick and Dirty Operating System). QDOS, по большей части, была 16-разрядным клоном CP/M, но с новой файловой системой — FAT. QDOS была переименована в 86-DOS, поскольку разрабатывалась для работы на процессоре Intel 8086. Microsoft приобрела QDOS за $50 000 и продала её IBM уже как PC-DOS (MS-DOS). 1 августа 1984 IBM объявляет о выпуске нового поколения персональных компьютеров — IBM PC AT. Совместно с Microsoft IBM приступает к разработке новой операционной системы для компьютеров IBM PC AT. Новая ОС должна преодолеть ограничение MS-DOS на 640Kb памяти для прикладных программ и реализовать поддержку режима многозадачности. Так началась долгая и трудная судьба операционной системы OS/2.
FreeDOS — свободно-распространяемая функциональная копия известной дисковой операционной системы MS-DOS.
Microsoft Windows (Майкрософт Виндоус) — семейство операционных систем компании (Майкрософт).
Microsoft Corporation («корпорация Microsoft»; читается «мамйкрософт корпоремйшн»[2][прим. 1]; NASDAQ: MSFT) — одна из крупнейших транснациональных компаний по производству проприетарного программного обеспечения для различного рода вычислительной техники — персональных компьютеров, игровых приставок, КПК, мобильных телефонов и прочего, разработчик наиболее широко распространённой на данный момент в мире программной платформы[3] — семейства операционных систем Windows.
Подразделения компании также производят семейство игровых консолей Xbox, а также аксессуары для персональных компьютеров (клавиатуры, мыши и т. д.[4]). C 2012 года производит собственный планшетный компьютер — Surface и игровой планшетный компьютер Xbox Surface. Продукция Microsoft продаётся более чем в 80 странах мира, программы переведены более чем на 45 языков. Штаб-квартира компании находится в городе Редмонд штат Вашигтон США. Штат сотрудников корпорации составляет порядка 90 тысяч человек. На территории России с ноября 1992 года действует представительство Microsoft (с июля 2004 года — ООО «Майкрософт Рус»[2]). Microsoft находится под надзором суда в результате мирового соглашения 2002 года[5].
История Microsoft Inc. История логотипов
Microsoft подала заявку USPTO на регистрацию логотипа 26 августа 1982 года и использовала его до 1987 года.[6]
Разработан Скоттом Бейкером и использовался с 1987 по 2006 год с лозунгом «Куда вы хотите пойти сегодня?»[7][8]
Microsoft использовала этот логотип в 2006—2011 годах. В России использовался слоган «Ваши способности. Наше вдохновение».
Использовался с лозунгом «Будь что будет дальше» (2011—2012).
Был представлен 23 августа 2012 года и символизирует «Мир цифровых технологий», «диверсифицированный портфель продуктов».[9]
Компания начинает свою историю с 1975 года, когда друзья-студенты Гарварда Билл Гейтс и Пол Аллен, прочитав опубликованную 1 января 1975 года в журнале «Popular Electronics (англ.)» статью о новом персональном компьютере Altair 8800, разработали для него интерпретатор языка Basic. Через месяц, 1 февраля, было подписано лицензионное соглашение с компанией Micro Instrumentation and Telemetry Systems (англ.) (MITS), производителем этого ПК, об использовании Basic в составе ПО для Altair. В этом же году Билл Гейтс в письме к Аллену предложил название для их компании — англ. MICROcomputer SOFTware («программное обеспечение для микрокомпьютеров»), с написанием через дефис. Свой первый год новая компания, в которой работало три человека, закончила с оборотом $16,005 тыс. (для сравнения: в 2000 году выручка корпорации составила $25,3 млрд, а прибыль — более $7,3 млрд).
В начале 1980-х годов пути двух основателей компании разошлись: по воспоминаниям Аллена, в то время как он не хотел посвящать всю свою жизнь Microsoft, Гейтс был полностью сконцентрирован на работе и развитии компании.[10] По настоянию Гейтса, партнёры неоднократно пересматривали свои доли в бизнесе, причём Аллен уступал в пользу Гейтса. Аллен писал в своей книге[10]: В 1983 году Аллен покинул Microsoft, продав свои акции по $10 за штуку[10]. Эта сделка в итоге сделала его одним из самых богатых людей в мире: в 2011 году он занимал 57 место в списке журнала Forbes с капиталом в $13 млрд[11]
Слияния и поглощения
До 2011 года крупнейшей сделкой по поглощению иных компаний была покупка Microsoft корпорации aQuantive, занимавшейся интернет-рекламой (сделка была закрыта в августе 2007 года, её общая сумма составила $6,333 млрд). В 2012 году корпорация списала $6,2 млрд из прибыли в связи с признанием этой сделки как нерентабельной[12].
В 2008 году Microsoft пыталась купить за $48 млрд Yahoo!, но в связи с противодействием её миноритарных акционеров сделка не состоялась.[13]
В мае 2011 года корпорация объявила о покупке специализирующейся на интернет-телефонии компании Skype Limited за $8,5 млрд. Продавцами акций станут основатели «Скайпа» и ряд инвестиционных фондов. После окончания поглощения, как ожидается, на базе Skype Limited будет создано подразделение Microsoft Skype Division, причём нынешний директор Skype Тони Бейтс останется его руководителем.[13]
Собственники и руководство
Акции Microsoft распределены следующим образом: Биллу Гейтсу принадлежит 7,55 %, Стиву Балмеру — 4,66 %, на других менеджеров корпорации приходится менее процента, остальные ценные бумаги находятся в свободном обращении на бирже NASDAQ: MSFT. Рыночная капитализация компании на май 2010 года — $247,23 млрд[14].
Корпорация Microsoft является производителем широкого спектра программного и аппаратного обеспечения, известность и доверие во всем мире ей принесли в первую очередь операционные системы семейства Windows (рус. Окна), а также программы для работы с документами семейства Microsoft Office. Сегодня корпорация производит множество новых перспективных продуктов: комплекты серверных программ, игры, средства разработки программ, а также игровые консоли XBOX. Microsoft заинтересована в скупке перспективных компаний — разработчиков ПО. В частности, в результате приобретения компаний Navision, Solomon, Great Plains в ассортименте Microsoft появилось новое крупное направление Microsoft Dynamics (ранее называлось Microsoft Business Solutions). В России представлены три решения этого направления: ERP-системы Axapta, Navision и система управления отношениями — Microsoft Dynamics CRM.
Штат насчитывал в 2010 году 89 тыс. постоянных сотрудников[1].
Выручка компании за 2006 фин. год — $44,3 млрд, чистая прибыль — $12,6 млрд[16].
Выручка корпорации в 2010 финансовом году — $62,5 млрд, операционная прибыль — $24,1 млрд, чистая прибыль — 18,8 млрд.[1]
Работает на платформах Intel, AMD, а также на процессорах VIA и других, за некоторыми исключениями. Поклонники OS/2, AmigaOS, Mac OS, Solaris, Linux и UNIX критикуют все версии Windows с момента появления системы на рынке. Однако последние 10 лет Windows — самая популярная операционная система для настольных компьютеров на процессорах семейства x86. В большей части этот успех обеспечен рыночной политикой, которая также критикуется. Существует два специфических ответвления в семействе ОС Windows:
Embedded — ОС реального времени, предназначенная для управления промышленными оборудованием, создаётся как урезанная версия Windows NT или XP.
Windows Mobile (Ранее WinCE) — служит для управления карманными компьютерами, коммуникаторами и сотовыми телефонами.
OS/2 — операционная система, разрабатывавшаяся компанией IBM (первоначально совместно с Microsoft, позже самостоятельно). В настоящее время работы над клиентскими версиями прекращены, в связи с широким распространением MS Windows NT/XP. Серверные версии продолжают поддерживаться в связи с широким ореолом внедрения. Широко использовалась в США, в банковской и производственной сферах, а также в России, в банкоматах.
ReactOS — операционная система, один из проектов сообщества Open Source. В ходе разработки предполагается добиться полной совместимости с приложениями и драйверами Microsoft Windows(R) NT4.
Plan9 — Операционная система, разработанная в Bell Labs — колыбели UNIX и языка Си. Построена на идее использования файловых иерархий для представления любых ресурсов операционной системы и оборудования. Идеально подходит для построения распределенных систем.
Inferno — продолжатель идей Plan9, отличительной особенностью которой является малые требования к ресурсам компьютера и возможность работы как поверх установленной ОС, так и самостоятельно.
операционный майкрософт серверный однопользовательский
4. Классификация операционных систем
Операционные системы могут быть классифицированы по базовой технологии (UNIX-подобные, пост-UNIX/потомки UНЙЧ), типу лицензии (проприетарная или открытая), развивается ли в настоящее время (устаревшие или современные), по назначению (универсальные, ОС встроенных систем, ОС PDA, ОС реального времени, для рабочих станций или для серверов), а также по множеству других признаков.
— CTSS (The Compatible TimeShare System, разработанная в MIT — Массачусетском технологическом институте).
— Incompatible Timesharing System (The Incompatible Timeshare System, разработанная в MIT для серверов DEC 10 / 20).
— THE (разработана Эдсгером Дейкстрой и другими).
— MULTICS (проект Bell Labs, GE, и MIT).
— Master programme, разработанная LEO computer, Leo III в 1962 году.
— Business Operating System (BOS) — кросс-платформенная, основанная на командной строке.
— Commodore PET, Commodore 64, и Commodore VIC-20.
— Sinclair Micro и QX, и подобные.
— TRS-DOS, ROM OS (улучшенный интерпретатор Microsoft BASIC с поддержкой файловой системы).
— FLEX от Technical Systems Consultants для микрокомпьютеров, построенных на Motorola 6800 и 6809: SWTPC, Tano, Smoke Signal Broadcasting, Gimix и других.
Что такое операционная система и как она работает?¶
Основа конспекта, лекция — Что такое операционная система и как она работает Автор конспекта/статьи немного переработал и дополнил некоторые моменты: структуру и повествование, постарался дать более глубокое и последовательное разъясление, добавил как скаченные, так и созданные им лично схемы.
Цель конспекта — последовательно рассмотреть и объяснить принципы устройства и функционирования операционной системы, её основных компонентов и абстракций.
Введение¶
Операционные системы окружают нас повсюду – это основное программное обеспечение персональных компьютеров, серверов, мобильных устройств, сетевых устройств (роутеры, коммутаторы) и даже современных автомобилей (борт-компьютер), телевизоров и прочего. Перечислять можно очень долго, ведь они требуются практически в каждой компьютерной системе.
Любой компьютер представляет собой связанную совокупность: процессора, памяти и устройств ввода-вывода.

Рис. 1. Общее представление архитектуры компьютера
Сама по себе, аппаратура умеет делать только очень простые, базовые операции — по типу: сложить два числа, перейти к адресу, записать по адресу и тд.
Например, процессор умеет выполнять только четыре базовых типа инструкции:
- Чтение инструкций/данных из памяти (read)
- Выполнение интрукции (execute)
- Запись результата в память (write)
- Прерывание (interrupt)
Получается, что непосредственное создание и управление сложными процессами (приложениями) на аппаратуре становится крайне неэффективным и неудобным. То есть, например, создать и запустить на исполнение программу-браузер исключительно с помощью данных инструкций становится крайне сложной задачей. Особенно при условии, что помимо этого процесса (браузера) существуют и другие процессы, которые также пользуются ресурсами вычислительной машины.
Возникает вопрос — Как заставить всё это слаженно и эффективно работать, сделав пользование компьютером удобным как для обычного человека, так и для прикладного программиста?
Чтобы ответить на этот вопрос более последовательно, немного заглянем туда, откуда всё начиналось.
Немного истории¶
На заре компьютерной эпохи, первые компьютеры представляли собой огромные блоки (занимавшие большие комнаты), в которых размещались основные его компоненты: процессор, память и устройства ввода-вывода. И всего можно было выделить два состояния, в котором, в реальном времени находится компьютерная система:
- Ввод/Вывод
- Вычисление
Важная идея! Так как вычисления производятся быстрее, чем непосредственный ввод-вывод данных, разработчикам пришла идея о том, что к ресурсам можно допускать не одного пользователя (процесс), а множество, предоставляя им способ независимо друг от друга загружать (ввод) и получать (вывод) данные через отдельные терминалы, чтобы более эффективно использовать ресурсы компьютера и вычислительные модули не простаивали в ожидании ввода/вывода.
Идея многопользовательского режима в использовании ресурсов компьютера нашла свою реализацию в понятии процесс. То есть, каждый процесс — это пользователь ресурсов компьютера.
Эта идея положила начало созданию такой системы, которую мы теперь называем операционной — программной системы, которая управляет ресурсами компьютера, а следовательно осуществляет доступ к этим ресурсам и управляет процессами — пользователями этимх ресурсов.
Далее, термины: процесс, приложение идут как синонимы термину пользователь ресурсов.
Зачем нужна Операционная Система?¶
Операционная система — программная система, которая управляет ресурсами компьютера, а следовательно осуществляет доступ к этим ресурсам, управляет процессами, вводит и реализует различные абстракции, выполняет другие системные функции.
Существует три ключевых элемента операционной системы:
- Абстракции (процессы, потоки, файлы, сокеты, адресное пространство).
- Функции (создание, управление, открытие, запись, распределение).
- Конкретные реализации
- Архитектуры: монолитные, модульные, гибридные;
- Алгоритмы: LRU, EDF;
Фунции ОС¶
- Управление ресурсами и процессами, а также совместное использование вычислительных ресурсов группой приложений (многозадачность) — центральная функция ОС, которая является базой для разных системных архитектур
- Scheduler — планировщик. Механизм управляющий процессами и реализующий многозадачность.
- Memory manager — менеджер памяти. Механизм выделяющий память и управляющий ею.
- то есть реализация единого интерфейса для разного, но схожего по функциям оборудования.
- Inter Process Communication (IPC) — Механизм межпроцессного взаимодействия
- файлы и файловая система
Основные абстракции ОС¶
- Процессы и потоки — программы, что находятся в оперативной памяти и обрабатываются процессором. Другими словами — исполнение программы.
- Файлы и файловые системы — некоторая структура данных и связи между этими структурами, универсальный системный интерфейс.
- Адресное пространство и память — распределение и управление памятью.
- Сокеты, протоколы, устройства — интерфейсы взаимодействия.
Положение ОС в многоуровневой иерархии организации компьютера¶
Современный компьютер можно представить в виде иерархии уровней (от двух и более), где на каждом уровне выделяются свои абстракции и набор возможных функций.

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

Рис. 3. Место ОС в компьютерной системе
- App — пользователь ресурсов;
- Hardware — оборудование;
- Proc — Процессор;
- Memory — Оперативная память;
- I/O — Устройства ввода/вывода;
Интерфейс — набор правил и средств взаимодействия двух систем. Иными словами способ взаимодействия.
Kernel space — адресное пространство ядра ОС, в котором процессы имеют привилегированный доступ к ресурсам компьютера и другим процессам.
User space — адресное пространство, отведённое для пользовательских процессов (приложений), то есть не имеющих привилегированный доступ к ресурсам.
Как операционная система загружается в компьютер?¶
Процесс загрузки операционной системы и вообще компьютера имеет несколько этапов, основные из которых:
- Запуск компьютера – на процессор подаётся напряжение и его элекрические компоненты начинают работу.
- Процессор начинает исполнять инструкции с фиксированного, аппаратно зашитого в него адреса.
- По этому адресу находится специальная программа POST – Power On Self Test. Которая проверяет работоспособность основных компонентов вычислительной системы.
- Далее, управление передаётся BIOS’y — Basic Input Output System (Базовая система ввода-вывода), которая инициализирует основные устройства ввода-вывода: загрузочные устройства (раличные хранители информации: HDD, SSD, Flash и так далее), клавиатура, монитор и прочее. обращается к загрузочному устройству и читает первый блок данных, на котором должен находиться загрузчик. Загружает его в память и передаёт ему управление.
- Загрузчик загружает в память и инициализирует основные компоненты операционной системы и передаёт ей управление.
- Операционная система запускает таймер, который будет возвращать управление операционной системе каждый, заранее установленный разработчиками ОС, квант времени. Это делается для реализация Scheduler’a — планировщика, чтобы ОС могла управлять и контролировать процессы.
- Операционная система создаёт первый процесс-пользователя и дальше от него начинают множится другие процессы.
Что делает ядро ОС?¶
Ядро ОС – центральная часть операционной системы. По сути, это и есть ОС.
Это реакционный механизм, то есть его работа заключается исключительно в реакции на какие-либо события для их последующей обработки.
- Обрабывает запросы приложений
- системные вызовы (программные прерывания)
- прерывания
- Разного рода ошибки
- реализация многопользовательского режима доступа к ресурсам
- время работы процессора делится на фрагменты и они распределяются по процессам
Процессорное время измеряется в тиках или секундах. Часто бывает полезно измерение процессорного времени в процентах от мощности процессора, которое называется загрузкой процессора.

Вывод программы top. Процессорное время каждого процесса (task) указано в колонке «TIME+», «CPU%» — загружаемость процессора относительно его «мощности».
Прерывания¶
Эта часть больше относится непосредственно к аппаратной части, но этот механизм стоит освятить, так как именно это основной аппаратный механизм реализации ОС.
Прерывание – сигнал остановки последовательного выполнения программы, для обработки запроса или реакции на событие.
Чтобы получить код обработки прерывания, в памяти расположена специальная таблица обработчиков прерываний, в которой для каждого типа прерывания содержится указатель на тот участок памяти, где расположен соответствующий код обработки данного прерывания.
Инициализация данной таблицы первично осуществялется BIOS’ом в соответствии с архитектурой процессора. После, её инициализирует операционная система для дополнения этой таблицы какими-либо своими прерываниями.
- Аппаратные прерывания – с помощью специального контроллера прерываний.
- Нажатие на кнопку
- Заполнение памяти сетевой карты
- И тд.
- Открытие/закрытие файла
- Разного рода ошибки
Как приложения взаимодействуют с ОС?¶
Взаимодействие процессов с ОС осуществляется с помощью системных вызовов.
Механизм системных вызовов — это интерфейс, который предоставляет ядро ОС (kernel space) пользовательским процессам (user space).
Системный вызов – программное прерывание, обращение пользовательского процесса к ядру операционной системы для выполнения какой-либо операции.
Например, чтобы выполнить обычное действие, с точки зрения прикладного программиста, – вывод строки в консоль, необходимо загрузить исполнимый код в оперативную память и передать его процессору. С помощью системных вызовов, запускающий процесс (уже запущенный процесс, из которого вызывается новый процесс — одни процессы порождают другие) обращается к соответствующим сервисам ОС и передаёт им управление для выполнения этих функций.
То есть с помощью системных вызовов выполняются те рутинные действия, которые раньше осуществлялись вручную, — загрузка кода программы в память, передача его на исполнение процессору и прочее.
Схема организации ОС расширяется добавлением интерфейса для взаимодействия приложений с ядром ОС — механизмом системных вызовов:

Рис 4. Интерфейс системных вызовов
Как оборудование взаимодействует с ОС?¶
Оборудование взаимодействует с ОС с помощью аппаратных прерываний. И одна из функций ОС — абстрагирование оборудования.
Что это значит?¶
У каждого оборудования есть свой фиксированный интерфейс. Например, операции с флешкой, жестким диском, сетевой платой и многими другими будут похожи по своему типу — «записать/считать данные». Но у каждого устройства для этого, тем не менее, будет свой особенный и отличный от других интерфейс. То есть эти однотипные действия нужно будет выполнять для разных устройств по разному.
ОС должка выполнять одни и те же операции над разными типами устройств. И чтобы она выполняла их однообразно — нужно чтобы был общий интерфейс. Реализацией этого общего интерфейса занимаются специальные программы — драйверы устройств. То есть, ОС обращается к драйверам устройств используя однотипные команды «отправить команду/считать/записать», а драйвера уже превращает эти команды в то, что понимает конкретное устройство.
Схема организации ОС расширяется добавлением интерфейса взаимодействия ОС и оборудования — специальные программы «драйвера»:

Рис 5. Интерфейс драйверов
Сервисы ОС¶
Функции ОС заключены в её сервисах (модулях). Реализация организации которых зависит от архитектуры ядра. Рассмотрим на примере монолитного ядра:

Рис 6. Основные компоненты ОС
Основные¶
- Управление процессами (Process scheduler — планировщик)
- Запуск (помещение на процессор, выделение процессорного времени)
- Приостановка (заморозка)
- Завершение
- Изменение приоритета
Как говорилось в части о загрузке ОС, реализация планировщика осуществляется с помощью прерывания по таймеру — каждый квант времени происходит прерывание, которое передаёт управление ОС и она анализирует состояние всех процессов и что с каким процессом сделать: запустить, приостановить, завершить или изменить приоритет.
- Межпроцессное взаимодействие (IPC — Inter Process Communication)
- Общая память для нескольких процессов (shared memory)
- Способы обмена данными через те или иные механизмы (file, pipe, signals)
- Сетевое взаимодействие
- Механизмы предотвращения коллизий и синхронизации (семафоры, мьютексы)
- Динамическое выделение памяти (Memory allocation)
- Создание иллюзии уникальности адресного пространства для каждого процесса
- Механизм виртуальной памяти
Дополнительные¶
- Файловая система (File system)
- Файлы и их содержимое
- Каталоги и директории
- Прерывания
- Драйвера
- Пользователи («юзеры») и их группы
- Права доступа
- Интерфейс ввода-вывода (I/O Interface)
- Сетевой интерфейс (Network Interface)
Основные абстракции¶
Процесс¶
Процесс — совокупность инструкций и данных, что находятся в оперативной памяти и обрабатываются процессором. Другими словами — исполнение программы в целом (не путать с потоком исполнения).
Компьютерная программа сама по себе — лишь пассивная последовательность инструкций. В то время как процесс — непосредственное выполнение этих инструкций.
В рамках ОС, это абстракция, которая предоставляет иллюзию персональной машины. То есть то, что данный исполнимый код полностью владеет всеми вычислительными ресурсами машины.
Состояние (контекст) процесса¶
- Состояние
- Состояние памяти
- Содержимое регистров процессора
Изнутри, процесс можно условно разделена на четыре части: Stack, Heap (кучу), Text (код) и данные (Data).

Рис 7. Сегменты памяти процесса
Состояния исполнения¶
Когда процесс выполняется, он проходит через разные состояния. Эти этапы могут различаться в разных операционных системах.
Общая картина выглядит так:

Рис 8. Состояния исполнения процесса
- Новый: начальное состояние при создании процесса.
- Готов: процесс ожидает исполнения на процессоре. В течение работы процессор может переключаться между процессами, переводя одни в режим готовности, другие – в режим исполнения.
- Исполнение: непосредственное выполнение инструкций на процессоре.
- Ожидает: процесс переходит в состояние ожидания. Например, ждёт ввода данных или получения доступа к файлу.
- Завершен: как только процесс завершится, он перейдёт в это состояние и будет ожидать удаления.
Информация о процессе¶
Вся информация о процессе содержится в специальной структуре данных, поддерживаемой операционной системой для каждого процесса – PCB (Process Control Block) — Блок управления процессов.

Рис 9. Process Control Block
- Process ID: идентификатор каждого из процессов в ОС.
- State: текущее состояние процесса.
- Privileges: разрешения доступа к системным ресурсам.
- Pointer: указатель на родительский процесс.
- Priority: приоритет процесса и другая информация, которая требуется для планирования процесса.
- Program Counter: указатель на адрес следующей команды, которая должна быть выполнена.
- CPU registers: регистры процессора, необходимые для состояния исполнения.
- Accounting Information: уровень нагрузки на процессор, статистика и другие данные.
- I/O Information: список ресурсов, использующих чтение и запись.
Информацию о процессах в целом, ОС хранит в специальной таблице процессов.
Поток¶
Процесс может делиться на потоки (threads). Они обеспечивают параллелизм, то есть одновременное исполнение нескольких потоков инструкций, на уровне программы.
Поток выполнения (нить, thread) — последовательность исполнения инструкций. Ход исполнения программы**.
Процесс является контейнером ресурсов (адресное пространство, процессорное время и тд), а поток – последовательность инструкций, которые исполняются внутри этого контейнера.
Реализация потоков выполнения и процессов в разных операционных системах отличается друг от друга, но в большинстве случаев поток выполнения находится внутри процесса.

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

Рис 11. Вывод утилиты мониторинга процессов htop
PID — Process ID; Уникальное число идентификатор для каждого процесса
TGID — Tread Group ID; Индентификатор группы потоков
На скриншоте, процесс 2881 имеет множество потоков, отношение которых к нему можно определить по тому, что TGID у этих потоков имеет значение PIDа этого процесса — 2881. Таким образом, один процесс разбивается на множество потоков, в которых инструкции исполняются параллельно.
Чем хороши потоки¶
- Они минимизируют время переключения контекста (процессора).
- Их использование обеспечивает параллелизм процесса.
- Они эффективно общаются между собой.
- Потоки позволяют использовать многопроцессорные архитектуры в большем масштабе.
Это очень широкое и многогранное понятие. Но если выделить наиболее общее, то получится, что файл — это универсальный системный интерфейс для обращения к тем или иным данным.
А файловая система — это система имён. То есть возможность выделять те или иные объекты данных и присваивать им имена, а также выделять иерархию.
По другому, файл и файловую систему можно также представить как структуру данных и связи между этими структурами.
Реализация многозадачности¶
Осуществляется при помощи следующих механизмов:
- Прерывание таймера
- когда при запуске, ОС программирует таймер на то, чтобы он каждый квант времени передавал управление ОС.
- сохранение состояния исполнения (регистров) процесса и установка на процессор контекста другого процесса.
Переключение контекста¶
Контекст процесса — это состояние регистров, при его выполнении на процессоре.
Следовательно, переключение контекста — это смена контекста одного процесса, на контекст другого, без потери данных сменяемого процесса — то есть, чтобы его потом можно было восстановить с того момента, где он был переключён.
Например, у нас на процессоре в данный момент времени выполняется «процесс 1» — в регистрах хранятся данные, которые относятся к этому процессу.
Но происходит прерывание и «процесс 1» снимается с выполнения на процессоре, чтобы вместо него выполнялся «процесс 2». Следовательно, нужно заполнить регистры уже теми данными, что относятся к «процессу 2».
Однако, «процесс 1» ещё не выполнился полностью, и для дальшейнего исполнения ему нужны те данные, что хранились в регистрах при прерываний, то есть необходим его контекст. Операционная система должна обеспечивать подобные смены контекстов без потери данных.
- Как?
- Когда?
- Между кем и кем?
- Значения регистров процесса записываются в Stack этого же процесса в оперативной памяти. Таким образом, процесс в своей памяти хранит свой же контекст.
- Контекст планировщика появляется на процессоре, выполняет анализ имеющихся процессов.
- Переключает процессор на контекст уже другого, нового процесса.
В целом, смена контекста происходит между состояниями «Готов», «Ожидает» и «Исполняется».

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

Рис 12. Критические секции в потоках процесса
Может возникнуть такая ситуация, когда один поток, «потребитель», начинает использовать данные, которые должен подготовить другой поток, «производитель», но этот производитель ещё не закончил их подготовку и снялся с исполнения. Таким образом, «потребитель» использует некорректные данные, что с высокой долей вероятности приведёт к ошибке.
Данная проблема решается с помощью механизма блокировок – когда поток, получивший доступ к ресурсу, блокирует его, не давая другим потокам пользоваться этим захваченным ресурсом до разблокировки. То есть, если один поток хочет захватить (заблокировать) ресурс, а он уже занят другим потоком, то первый будет ожидать пока этот другой поток-владелец сам не освободит этот ресурс.
Все эти механизмы обеспечиваются операционной системой
Чтобы лучше это понять, можно обратиться к аналогии с туалетом — им может пользоваться только один человек. Если другой хочет им воспользоваться, то ему нужно дождаться когда его освободит уже им пользующийся.
Deadlock — взаимная блокировка¶
Из-за блокировки, захвата ресурса может возникнуть другая проблема: Deadlock — взаимная блокировка.

Рис 13. Аналогия пробки на перекрёстке с Deadlock
Deadlock — ситуация, при которой несколько потоков находятся в состоянии ожидания ресурсов, занятых друг другом, и ни один из них не может продолжать свое выполнение.
Пример Deadlock’a на псевдокоде¶
Шаг Поток 1 Поток 2 0 Хочет захватить A и B, начинает с A Хочет захватить A и B, начинает с B 1 lock(A) — Захват А lock(B) — Захват B 2 lock(B) — Ожидает освобождения ресурса B lock(A) — Ожидает освобождения ресурса A … DEADLOCK –> Далее код не выполнится, так как произошел Deadlock в коде выше n unlock(A) — освобждение A unlock(B) — освобждение B n+1 unlock(B) — освобждение B unlock(A) — освобждение A Схематично, Deadlock можно изобразить так:

Рис 14. Deadlock
Проблема Deadlock-ов решаема и существует множество способов сделать это — начиная от недопущения подобных ситуаций в самом коде программы, заканчивая механизмами операционной системы, которые разрешают подобные ситуации. Но, однозначно исключить вероятность возникновения подобных ситуаций нельзя. Однако, это отдельная достаточно большая тема.
Адреса и управление памятью¶
Тема адресации очень сложна, поэтому здесь я лишь проведу краткий обзор общей технологии.
- Физический адрес – непосредственно адрес внутри микросхемы памяти, который передаётся по шине памяти.
- Логический адрес – тот адрес, которым оперирует процесс.
Чтобы отобразить логический адрес в физический, существует специальный аппаратный механизм.
- Реальный режим
- Защищенный режим
Начав с базовой архитектуры и небольшой истории развития компьютера, мы разобрали причины появления такого комплекса программ как операционная система и выделили главную её цель – обеспечение согласованного доступа к ресурсам компьютера множеству пользователям этих ресурсов, а также управление как самими ресурсами, так и пользователями.
Основные механизмы (сервисы)¶
Рассмотрели основные механизмы реализации этой цели: Scheduler (планировщик), Inter Process Communication (межпроцессное взаимодействие), Memory manager (управление памятью) и другие.
Абстракции¶
Ряд абстракций, которые вводит ОС: Process (процесс), Thread (поток исполнения), File (файл).
Заключение¶
Ух, и вот наконец-то я закончил писать этот материал. Надеюсь, вам было интересно и полезно.
Если вы хотите как-то дополнить материал, дать критику по его содержанию или структуре – пожалуйста, пишите в Issue данного репозитория поднимая ту или иную тему для обсуждения и доработки.
Также, вы можете сделать Fork данного репозитория и после внести свои дополнения с помощью Pull Request. Спасибо за внимание!
Понятие открытой системы. Модель OSI. Стеки протоколов
Информационный обмен — процесс многофункциональный. Родственные функции группируются по назначению и эти группы называют «уровнями взаимодействия». Унификация уровней позволяет создавать гетерогенные сети со сложной топологией. В основе унификации — понятие эталонной сетевой модели. Модель как таковая лишь описывает порядок сетевого взаимодействия, который реализуется в виде стека протоколов.
Модель OSI
Обмен информацией между компьютерами, объединенными в сеть, очень сложная задача. Это связано с тем, что существует много производителей аппаратных и программных средств вычислительных систем. Единственный выход — унифицировать средства сопряжения систем, а именно использовать открытые системы. Открытая система взаимодействует с другими системами на основе единых общедоступных стандартов и спецификаций.
В 1984г. Международная Организация по Стандартизации (ISO) представила индустриальный стандарт — модель взаимодействия открытых систем (Open System Interconnection Reference Model — OSI/RM, в советской литературе — ЭМВОС ), чтобы помочь поставщикам создавать совместимые сетевые аппаратные и программные средства. В соответствии с этой моделью выделяются следующие уровни (рис.1):

Рис. 1. Эталонная модель OSI
- физический (Physical);
- канальный (Data Link);
- сетевой (Network);
- транспортный (Transport);
- сеансовый (Session);
- представительский (Presentation) ;
- прикладной (Application).
В соответствии с эталонной моделью OSI эти уровни взаимодействуют так, как показано на рис. 2. Таким образом, сложная задача обмена информацией между компьютерами в сети разбивается на ряд относительно независимых и менее сложных подзадач взаимодействия между смежными уровнями.

Рис. 2. Взаимодействие между уровнями OSI
Связь между уровнями двух сетевых узлов (горизонтальное взаимодействие) выполняется в соответствии с унифицированными правилами — протоколами взаимодействия
В автономной системе передача данных между уровнями (вертикальное взимодействие) реализуется через интерфейсы API
Границу между сеансовым и транспортным уровнями можно рассматривать как границу между протоколами прикладного уровня и протоколами низших уровней. Если прикладной, представительный и сеансовый уровни обеспечивают прикладные процессы сеанса взаимодействия, то четыре низших уровня решают проблемы транспортировки данных.
Два самых низших уровня — физический и канальный — реализуются аппаратными и программными средствами, остальные пять более высоких уровней реализуются, как правило, программными средствами.
При передаче информации от прикладного процесса в сеть на физический уровень происходит ее обработка, которая заключается в разбиении передаваемых данных на отдельные блоки, преобразовании формы представления или кодировки данных в блоке и добавлении к каждому блоку заголовка (header) соответствующего уровня (см. пример). Каждый заголовок характеризует используемый протокол обработки данных, причем каждый уровень воспринимает в качестве данных весь блок, полученный от предыдущего уровня, включая присоединенный заголовок. Такое построение эталонной модели позволяет заложить (инкапсулировать) в каждый передаваемый по физической среде информационный блок сведения, необходимые для выбора последовательности протоколов для осуществления обратных преобразований на принимающей информацию стороне.
Физический уровень
Этот уровень определяет механические, электрические, процедурные и функциональные характеристики установления, поддержания и размыкания физического соединения между конечными системами. Физический уровень определяет такие характеристики соединения, как уровни напряжений, синхронизацию и физическую скорость передачи данных, максимальные расстояния передачи, конструктивные параметры разъемов и другие аналогичные характеристики. Известные стандарты RS-232-C, V.24 и IEEE 802.3 (Ethernet).
Канальный уровень
Канальный уровень (уровень звена данных, информационно-канальный уровень) отвечает за надежную передачу данных через физический канал, а именно:
- обеспечивает физическую адресацию (в отличие от сетевой или логической адресации);
- обеспечивает обнаружение ошибок в передаче и восстановление данных;
- отслеживает топологию сети и обеспечивает дисциплину использования сетевого канала конечной системой;
- обеспечивает уведомление о неисправностях;
- обеспечивает упорядоченную доставку блоков данных и управление потоком информации.
Для ЛВС канальный уровень разбивается на два подуровня:
- LLC (Logical Link Control) — обеспечивает управление логическим звеном, т.е. собственно функции канального уровня;
- MAC (Media Access Control) — обеспечивает специальные методы доступа к среде распространения.
Сетевой уровень
Этот уровень обеспечивает возможность соединения и выбор маршрута между двумя конечными системами, подключенными к разным подсетям (сегментам), которые могут быть разделены множеством подсетей и могут находиться в разных географических пунктах. Протоколы маршрутизации позволяют сети из маршрутизаторов выбирать оптимальные маршруты через связанные между собой подсети.
Транспортный уровень
Транспортный уровень обеспечивает высшим уровням услуги по транспортировке данных, а именно:
- обеспечивает надежную транспортировку данных через объединенную сеть;
- обеспечивает механизмы для установки, поддержания и упорядоченного завершения действия виртуальных каналов;
- обеспечивает обнаружение и устранение неисправностей транспортировки;
- следит за тем, чтобы конечная система не была перегружена слишком большим количеством данных.
Другими словами, транспортный уровень обеспечивает интерфейс между процессами и сетью, устанавливает логические каналы между процессами и обеспечивает передачу по этим каналам информационных блоков. Эти логические каналы называются транспортными.
Сеансовый уровень
Сеансовый уровень реализует установление, поддержку и завершение сеанса взаимодействия между прикладными процессами абонентов. Сеансовый уровень синхронизирует диалог между объектами представительного уровня , определяет точки синхронизации для промежуточного контроля и восстановления при передаче файлов. Этот уровень также позволяет производить обмен данными в режиме, заданном прикладной программой, или предоставляет возможность выбора режима обмена.
Кроме основной функции управления диалогом сеансовый уровень предоставляет средства для выбора класса услуг и уведомления об исключительных ситуациях (проблемах сеансового, представительного и прикладного уровней).
Представительный уровень
Представительный уровень (уровень представления данных) определяет синтаксис, форматы и структуры представления передаваемых данных (но не затрагивает семантику, значение данных). Для того, чтобы информация, посылаемая из прикладного уровня одной системы, была читаемой на прикладном уровне другой системы, представительный уровень осуществляет трансляцию между известными форматами представления информации за счет использования унифицированного формата представления информации.
Таким образом, этот уровень обеспечивает служебные операции, выбираемые на прикладном уровне, для интерпретации передаваемых и получаемых данных: управление информационным обменом, отображение данных и управление структурированными данными. Эти служебные данные позволяют связывать воедино терминалы и вычислительные средства различных типов. Примером протокола этого уровня является XDR.
Прикладной уровень
В отличие от других уровней прикладной уровень — самый близкий к пользователю уровень OSI — не предоставляет услуги другим уровням OSI, однако он обеспечивает прикладные процессы, лежащие за пределами масштаба модели OSI.
Прикладной уровень обеспечивает непосредственную поддержку прикладных процессов и программ конечного пользователя (СУБД, текстовых процессоров, программ банковских терминалов и т.д. ) и управление взаимодействием этих программ с сетью передачи данных:
- идентифицирует и устанавливает наличие предполагаемых партнеров для связи;
- синхронизирует совместно работающие прикладные программы;
- устанавливает соглашение по процедурам устранения ошибок и управления целостностью информации;
- определяет достаточность наличных ресурсов для предполагаемой связи.
Модель OSI не является реализацией, она лишь предлагает порядок организации взаимодействия между компонентами системы. Реализациями этих правил являются стеки протоколов.
Стеки протоколов
Стек OSI
Протоколы стека OSI и их распределение по уровням сетевой модели приведены на рис. 3.
Рис. 3. Протоколы стека OSI ISO
Стек NetBIOS/SMB
Фирмы Microsoft и IBM совместно работали над сетевыми средствами для персональных компьютеров, поэтому стек протоколов NetBIOS/SMB является их совместным детищем. Средства NetBIOS появились в 1984 году как сетевое расширение стандартных функций базовой системы ввода/вывода (BIOS) IBM PC для сетевой программы PC Network фирмы IBM, которая на прикладном уровне (рис. 4) использовала для реализации сетевых сервисов протокол SMB.

Рис. 4. Стек NetBIOS/SMB
Протокол NetBIOS работает на трех уровнях модели взаимодействия открытых систем: сетевом, транспортном и сеансовом. NetBIOS может обеспечить сервис более высокого уровня, чем протоколы IPX и SPX, однако не обладает способностью к маршрутизации. Таким образом, NetBIOS не является сетевым протоколом в строгом смысле этого слова. NetBIOS содержит много полезных сетевых функций, которые можно отнести к сетевому, транспортному и сеансовому уровням, однако с его помощью невозможна маршрутизация пакетов, так как в протоколе обмена кадрами NetBIOS не вводится такое понятие как сеть. Это ограничивает применение протокола NetBIOS локальными сетями, не разделенными на подсети. NetBIOS поддерживает как дейтаграммный обмен, так и обмен с установлением соединений.
Протокол SMB, соответствующий прикладному и представительному уровням модели OSI, регламентирует взаимодействие рабочей станции с сервером. В функции SMB входят следующие операции:
- Управление сессиями. Создание и разрыв логического канала между рабочей станцией и сетевыми ресурсами файлового сервера.
- Файловый доступ. Рабочая станция может обратиться к файл-серверу с запросами на создание и удаление каталогов, создание, открытие и закрытие файлов, чтение и запись в файлы, переименование и удаление файлов, поиск файлов, получение и установку файловых атрибутов, блокирование записей.
- Сервис печати. Рабочая станция может ставить файлы в очередь для печати на сервере и получать информацию об очереди печати.
- Сервис сообщений. SMB поддерживает простую передачу сообщений со следующими функциями: послать простое сообщение; послать широковещательное сообщение; послать начало блока сообщений; послать текст блока сообщений; послать конец блока сообщений; переслать имя пользователя; отменить пересылку; получить имя машины.
Из-за большого количества приложений, которые используют функции API, предоставляемые NetBIOS, во многих сетевых ОС эти функции реализованы в виде интерфейса к своим транспортным протоколам. В NetWare имеется программа, которая эмулирует функции NetBIOS на основе протокола IPX, существуют программные эмуляторы NetBIOS для Windows NT и стека TCP/IP.
Стек TCP/IP
Стек TCP/IP, называемый также стеком DoD и стеком Internet, является одним из наиболее популярных стеков коммуникационных протоколов. Стек был разработан по инициативе Министерства обороны США (Department of Defence, DoD) для связи экспериментальной сети ARPAnet с другими сателлитными сетями как набор общих протоколов для разнородной вычислительной среды. Сеть ARPA поддерживала разработчиков и исследователей в военных областях. В сети ARPA связь между двумя компьютерами осуществлялась с использованием протокола Internet Protocol (IP), который и по сей день является основным в стеке TCP/IP и фигурирует в названии стека.
Большой вклад в развитие стека TCP/IP внес университет Беркли, реализовав протоколы стека в своей версии ОС UNIX. Широкое распространение ОС UNIX привело и к широкому распространению протокола IP и других протоколов стека. На этом же стеке работает всемирная информационная сеть Internet, чье подразделение Internet Engineering Task Force (IETF) вносит основной вклад в совершенствование стандартов стека, публикуемых в форме спецификаций RFC.
Так как стек TCP/IP был разработан до появления модели взаимодействия открытых систем ISO/OSI, то, хотя он также имеет многоуровневую структуру, соответствие уровней стека TCP/IP уровням модели OSI достаточно условно.
Структура протоколов TCP/IP приведена на рис. 5. Протоколы TCP/IP делятся на 4 уровня.

Рис. 5. Стек TCP/IP
Самый нижний (уровень IV) — уровень межсетевых интерфейсов — соответствует физическому и канальному уровням модели OSI. Этот уровень в протоколах TCP/IP не регламентируется, но поддерживает все популярные стандарты физического и канального уровня: для локальных каналов это Ethernet, Token Ring, FDDI, для глобальных каналов — собственные протоколы работы на аналоговых коммутируемых и выделенных линиях SLIP/PPP, которые устанавливают соединения типа «точка — точка» через последовательные каналы глобальных сетей, и протоколы территориальных сетей X.25 и ISDN. Разработана также специальная спецификация, определяющая использование технологии ATM в качестве транспорта канального уровня.
Следующий уровень (уровень III) — это уровень межсетевого взаимодействия, который занимается передачей дейтаграмм с использованием различных локальных сетей, территориальных сетей X.25, линий специальной связи и т. п. В качестве основного протокола сетевого уровня (в терминах модели OSI) в стеке используется протокол IP, который изначально проектировался как протокол передачи пакетов в составных сетях, состоящих из большого количества локальных сетей, объединенных как локальными, так и глобальными связями. Поэтому протокол IP хорошо работает в сетях со сложной топологией, рационально используя наличие в них подсистем и экономно расходуя пропускную способность низкоскоростных линий связи. Протокол IP является дейтаграммным протоколом.
К уровню межсетевого взаимодействия относятся и все протоколы, связанные с составлением и модификацией таблиц маршрутизации, такие как протоколы сбора маршрутной информации RIP (Routing Internet Protocol) и OSPF (Open Shortest Path First), а также протокол межсетевых управляющих сообщений ICMP (Internet Control Message Protocol). Последний протокол предназначен для обмена информацией об ошибках между маршрутизатором и шлюзом, системой-источником и системой-приемником, то есть для организации обратной связи. С помощью специальных пакетов ICMP сообщается о невозможности доставки пакета, о превышении времени жизни или продолжительности сборки пакета из фрагментов, об аномальных величинах параметров, об изменении маршрута пересылки и типа обслуживания, о состоянии системы и т.п.
Следующий уровень (уровень II) называется основным. На этом уровне функционируют протокол управления передачей TCP (Transmission Control Protocol) и протокол дейтаграмм пользователя UDP (User Datagram Protocol). Протокол TCP обеспечивает устойчивое виртуальное соединение между удаленными прикладными процессами. Протокол UDP обеспечивает передачу прикладных пакетов дейтаграммным методом, то есть без установления виртуального соединения, и поэтому требует меньших накладных расходов, чем TCP.
Верхний уровень (уровень I) называется прикладным. За долгие годы использования в сетях различных стран и организаций стек TCP/IP накопил большое количество протоколов и сервисов прикладного уровня: протокол копирования файлов FTP, протоколы удаленного управления telnet и ssh, почтовый протокол SMTP, гипертекстовые сервисы доступа к удаленной информации, такие как WWW и многие другие. Кратко остановимся на некоторых из протоколов стека, наиболее тесно связанных с тематикой данного курса.
Протокол SNMP (Simple Network Management Protocol) используется для организации сетевого управления. Проблема управления разделяется здесь на две задачи. Первая задача связана с передачей информации. Протоколы передачи управляющей информации определяют процедуру взаимодействия сервера с программой-клиентом, работающей на хосте администратора. Они определяют форматы сообщений, которыми обмениваются клиенты и серверы, а также форматы имен и адресов. Вторая задача связана с контролируемыми данными. Стандарты регламентируют, какие данные должны сохраняться и накапливаться в шлюзах, имена этих данных и синтаксис этих имен. В стандарте SNMP определена спецификация информационной базы данных управления сетью. Эта спецификация, известная как база данных MIB (Management Information Base), определяет те элементы данных, которые хост или шлюз должен сохранять, и допустимые операции над ними.
Протокол пересылки файлов FTP (File Transfer Protocol) реализует удаленный доступ к файлу. Для того, чтобы обеспечить надежную передачу, FTP использует в качестве транспорта протокол с установлением соединений — TCP. Кроме пересылки файлов протокол, FTP предлагает и другие услуги. Так пользователю предоставляется возможность интерактивной работы с удаленной машиной, например, он может распечатать содержимое ее каталогов, FTP позволяет пользователю указывать тип и формат запоминаемых данных. Наконец, FTP выполняет аутентификацию пользователей. Прежде, чем получить доступ к файлу, в соответствии с протоколом пользователи должны сообщить свое имя и пароль.
В стеке TCP/IP протокол FTP предлагает наиболее широкий набор услуг для работы с файлами, однако он является и самым сложным для программирования. Приложения, которым не требуются все возможности FTP, могут использовать другой, более экономичный протокол — простейший протокол пересылки файлов TFTP (Trivial File Transfer Protocol). Этот протокол реализует только передачу файлов, причем в качестве транспорта используется более простой, чем TCP, протокол без установления соединения — UDP.
Протокол telnet обеспечивает передачу потока байтов между процессами, а также между процессом и терминалом. Наиболее часто этот протокол используется для эмуляции терминала удаленной ЭВМ.