Основы современных операционных систем
Покупка
Тематика:
Программы-оболочки
Издательство:
ИНТУИТ
Автор:
Сафонов Владимир Олегович
Год издания: 2016
Кол-во страниц: 631
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9963-0495-0
Артикул: 410741.03.99
Курс предназначен для студентов младших курсов в области ИТ. Он знакомит с принципами архитектуры и функционирования современных операционных систем (ОС) и сетей, дает теоретические знания и практические навыки для работы в распространенных ОС - Windows, Linux,
Solaris, а также в ОС для мобильных устройств и облачных вычислений. Особое внимание уделяется алгоритмам и структурам данных, используемым в ОС, их надежности и безопасности.
В курсе подробно рассматриваются архитектура операционных систем (ОС), основные алгоритмы и структуры данных, используемые в ОС. Рассмотрены методы управления оперативной и внешней памятью, виртуальная память, ее страничная и сегментная организация, методы управления процессами и потоками и их синхронизации, методы диспетчеризации процессов, методы распределения ресурсов и алгоритмы предотвращения и обнаружения тупиков, системы вводавывода, файловые системы, сети и сетевые протоколы, безопасность ОС и сетей. Изложение сопровождается практическими примерами, помогающими студентам практически овладеть излагаемыми концепциями. Материал курса отражает 35-летний опыт автора в использовании широкого спектра зарубежных и отечественных ОС (ОС ДИСПАК для БЭСМ-6, ОС "Эльбрус”, ОС ЕС ЭВМ, ОС СМ ЭВМ, MS-DOS, Windows, Solaris, Linux). Курс входит в число основных дисциплин для студентов 2 курса по специальности 010503 (математическое обеспечение и администрирование операционных систем) и 080801, 080802 (прикладная информатика).
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 01.03.02: Прикладная математика и информатика
- 09.03.01: Информатика и вычислительная техника
- 10.03.01: Информационная безопасность
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Основы современных операционных систем 2-е издание, исправленное Сафонов В.О. Национальный Открытый Университет “ИНТУИТ” 2016 2
УДК 004.451(075.8) ББК 20 С21 Основы современных операционных систем / Сафонов В.О. - M.: Национальный Открытый Университет “ИНТУИТ”, 2016 (Основы информационных технологий) ISBN 978-5-9963-0495-0 Курс предназначен для студентов младших курсов в области ИТ. Он знакомит с принципами архитектуры и функционирования современных операционных систем (ОС) и сетей, дает теоретические знания и практические навыки для работы в распространенных ОС – Windows, Linux, Solaris, а также в ОС для мобильных устройств и облачных вычислений. Особое внимание уделяется алгоритмам и структурам данных, используемым в ОС, их надежности и безопасности. В курсе подробно рассматриваются архитектура операционных систем (ОС), основные алгоритмы и структуры данных, используемые в ОС. Рассмотрены методы управления оперативной и внешней памятью, виртуальная память, ее страничная и сегментная организация, методы управления процессами и потоками и их синхронизации, методы диспетчеризации процессов, методы распределения ресурсов и алгоритмы предотвращения и обнаружения тупиков, системы вводавывода, файловые системы, сети и сетевые протоколы, безопасность ОС и сетей. Изложение сопровождается практическими примерами, помогающими студентам практически овладеть излагаемыми концепциями. Материал курса отражает 35-летний опыт автора в использовании широкого спектра зарубежных и отечественных ОС (ОС ДИСПАК для БЭСМ-6, ОС “Эльбрус”, ОС ЕС ЭВМ, ОС СМ ЭВМ, MS-DOS, Windows, Solaris, Linux). Курс входит в число основных дисциплин для студентов 2 курса по специальности 010503 (математическое обеспечение и администрирование операционных систем) и 080801, 080802 (прикладная информатика). (c) ООО “ИНТУИТ.РУ”, 2011-2016 (c) Сафонов В.О., 2011-2016 3
Понятие операционной системы (ОС), цели ее работы. Классификация компьютерных систем В лекции дано определение понятия “операционная система” (ОС). Дан краткий обзор функциональности и назначения ОС, краткий обзор широкого спектра видов и архитектур современных компьютерных систем (настольные, распределенные, мобильные, облачные и др.) и операционных систем для них. Введение Данный курс познакомит Вас с основами современных операционных систем и сетевых технологий и научит их практически использовать. Комментарии к списку литературы Список литературы по курсу приведен в конце данной лекции. Вот некоторые комментарии к этому списку. Книга [1] классический учебник по ОС Йельского университета (США). Некоторые материалы презентаций к этому курсу использованы при подготовке презентаций моего курса, за что автор выражает признательность коллегам из Йельского университета. Книги [2], [3] профессора Эндрю Таненбаума входят в “золотой фонд” современной учебной литературы по ИТ. Настоятельно рекомендую их студентам в качестве основной литературы по моему курсу. Учебник [4] представляет классическую литературу по ОС прошлых лет (1970-х гг.). Несмотря на свой возраст, он является фундаментальной работой, одной из лучших книг по операционным системам, материал которой не устарел и по сей день. Книги [5], [6], [8], [9] посвящены некоторым конкретным современным операционным системам – Windows, Linux, MacOS. Книга [7] уникальна, так как является первой книгой по внутренней архитектуре Windows. Она написана специалистами, несколько лет работавшими совместно с подразделением разработки Windows в Microsoft (один из ее авторов стал сотрудником Microsoft). Рекомендую для использования также материалы своих курсов по ОС в электронном виде на русском и английском языках [20], [10]. Краткое содержание курса Данный курс посвящен основным концепциям операционных систем и сетей. Однако он не является чисто теоретическим, а дает практические навыки работы в 4
современных ОС, рассматривает методы и приемы администрирования ОС и сетей, а также содержит лабораторные работы, помогающие студентам практически освоить рассматриваемые концепции. Набор операционных систем, рассматриваемых в курсе, очень широк. Это прежде всего ОС семейства Windows (2000, XP, 2003, Vista, 2008, 7), в том числе – Windows для встроенных систем (Windows Embedded), Windows для мобильных устройств (Windows Mobile) и Windows для облачных вычислений (Windows Azure). Кроме того, рассматриваются популярные ОС семейства Linux, а также особенно хорошо известная автору ОС Solaris разработки Sun / Oracle, которая была для автора основным рабочим инструментом в течение 10 лет. Рассмотрена также популярная современная ОС для мобильных устройств Google Android. Современность курса нашла свое выражение также в рассматриваемых сетевых протоколах. Рассмотрена не только классическая модель сетевых протоколов ISO / OSI, но и некоторые современные протоколы, например, Wi-Fi, GPRS, EVDO, SIMPLE/SIP. Почему важно знать операционные системы – мнение эксперта из Microsoft По мнению Дэвида Проберта, менеджера по разработке ОС Windows (Microsoft), знание операционных систем является основой успешной карьеры в сфере программирования. Предмет ОС сочетает в себе как математические методы, так и методы проектирования современного программного обеспечения, которые используются и во многих других современных областях – при разработке игр, клиентсерверных приложений, бизнес-приложений, Web-технологий и программных инструментов. Знание ОС способствует становлению зрелого мышления программиста и хорошему знанию сетевых технологий и протоколов, виртуальных машин, методов современного программирования. С этим компетентным мнением нельзя не согласиться. Расцвет ОС в 2000-х гг В настоящее время мы являемся свидетелями небывалого расцвета операционных систем, поэтому для их изучения сейчас для студентов открываются огромные возможности: выпускаются новые ОС для настольных компьютеров, кластеров компьютеров и параллельных вычислений, мобильных устройств, облачных вычислений. Бесспорным лидером в данной области является корпорация Microsoft, выпустившая менее чем за 10 недавних лет целую серию ОС семейства Windows: Windows XP, 5
Windows 2003, Windows Vista (2007), Windows 2008, Windows 2008 High-Performance Computing (HPC), Windows 7. Развиваются также диалекты ОС Linux (Red Hat, Fedora, Mandrake, Ubuntu, SuSE и др.– сотни диалектов). Linux – операционная система типа UNIX, ядро которой свободно распространяется с исходными кодами. Фирма Sun (в 2010 г. вошедшая в состав фирмы Oracle) разрабатывает и выпускает ОС Solaris – одну из наиболее современных ОС типа UNIX с развитой поддержкой параллельного программирования, новыми видами файловых систем, отличающуюся своей повышенной надежностью. Это лишь некоторые ОС, которым в данном курсе будет уделено значительное внимание. Существует также много других операционных систем. В США и Канаде, как известно, весьма популярны компьютеры семейства Macintosh фирмы Apple (коротко – Mac) со своей операционной системой MacOS, являющейся законодателем мод в области графических пользовательских интерфейсов (GUI) и обмена мультимедийной информацией (например, речевого ввода). Назовем также ОС фирмы IBM для суперкомпьютеров и компьютеров общего назначения (mainframes). Особенно важно для успешного изучения операционных систем то, что в настоящее время многие из них (или их крупные части, например, ядро) доступны с открытым исходным кодом. Корпорация Microsoft положила начало этому движению в 2003 г., когда была объявлена академическая программа Windows Embedded Shared Source – был открыт исходный код Windows для встроенных систем. А в 2006 г. произошло и вовсе невероятное доселе в программистском мире событие – Microsoft открыла “святую святых”, исходный код ядра ОС Windows семейства NT (NT/2000/XP/2003/2008/7) и предоставила в распоряжение университетов и академических организаций Windows Research Kernel (WRK) – самодокументированный исходный код “исследовательского” ядра Windows. Теперь каждый студент, преподаватель и исследователь имеют возможность изучать систему Windows “изнутри” и даже развивать ее, но только для целей обучения и исследований, а не для коммерции. Фирма Sun (ныне – Oracle) положила начало аналогичной инициативе для ОС Solaris – несколько лет назад был начат проект OpenSolaris. Результаты этого академического проекта используются при выпуске новых версий коммерческой ОС Solaris. По традиции, еще с начала 1990-х гг., ядро ОС Linux также распространяется свободно, с исходными кодами, что вызвало целую волну работ по созданию новых диалектов Linux, а также по разработке новых ОС для мобильных устройств на базе ядра Linux (например, ОС Google Android). Также интенсивно развиваются ОС для мобильных устройств. Еще несколько лет назад наиболее используемыми ОС в этой области были ОС семейства Symbian. Однако сейчас ОС Microsoft Windows Mobile и Google Android активно теснят Symbian с рынка. ОС для облачных вычислений – принципиально новый вид ОС, отражающий 6
современную тенденцию к организации вычислений как облачных (cloud computing).Облако – это метафора Интернета. При облачных вычислениях пользователь со своего компьютера получает платный доступ через Интернет к Webсервисам, работающим на компьютерах мощных центров обработки данных (например, на серверах Microsoft). При этом не только используемое программное обеспечение (в виде набора Web-сервисов), но и сами обрабатываемые данные пользователя хранятся на серверах “облачного” центра обработки данных. На своем компьютере пользователь имеет лишь простой и удобный и не требующий больших ресурсов “облачный” Web-интерфейс. Наиболее распространенной ОС для облачных вычислений является в настоящее время Microsoft Windows Azure. Вот лишь очень краткий обзор развития операционных систем в наши дни. По мнению автора, крупные фирмы открывают исходные коды своих операционных систем, привлекая молодых талантливых специалистов интересными проектами ОС с открытым исходным кодом, так как им необходимы молодые программисты и новые интересные идеи, которые позволят сделать ОС еще более мощными, масштабируемыми, удобными, эффективными, надежными и безопасными. Понятие операционной системы и цели ее работы После краткого вводного обзора перейдем к основным понятиям и их определениям. Прежде всего, дадим определение операционной системы. Операционная система ( ОС, в англоязычном варианте - operating system ) – базовое системное программное обеспечение, управляющее работой компьютера и являющееся посредником ( интерфейсом ) между аппаратурой ( hardware ), прикладным программным обеспечением ( application software ) и пользователем компьютера ( user ). Фактически операционная система с точки зрения пользователя– это как бы продолжение аппаратуры, надстройка над ней, обеспечивающая более удобное, надежное и безопасное использование компьютеров и компьютерных сетей. Основные цели работы операционной системы следующие. 1. Обеспечение удобства, эффективности, надежности, безопасности выполнения пользовательских программ. Для пользователя самое главное – чтобы его программа работала, вела себя предсказуемо, выдавала необходимые ему правильные результаты, не давала сбоев, не подвергалась внешним атакам. Вычислительную среду для такого выполнения программ и обеспечивает операционная система. 2. Обеспечение удобства, эффективности, надежности, безопасности использования компьютера. Операционная система обеспечивает максимальную полезность и эффективность использования компьютера и его ресурсов, обрабатывает прерывания, защищает компьютер от сбоев, отказов и хакерских атак. Эта деятельность ОС может быть не столь заметной для пользователя, но она осуществляется постоянно. 3. Обеспечение удобства, эффективности, надежности, безопасности использования 7
сетевых, дисковых и других внешних устройств, подключенных к компьютеру. Особая функция операционной системы, без которой невозможно использовать компьютер, - это работа с внешними устройствами. Например, ОС обрабатывает любое обращение к жесткому диску, обеспечивая работу соответствующего драйвера (низкоуровневой программы для обмена информацией с диском) и контроллера (специализированного процессора, выполняющего команды вводавывода с диском). Любая “флэшка”, вставленная в USB-слот компьютера, распознается операционной системой, получает свое логическое имя (в системе Windows – в виде буквы, например, G) и становится частью файловой системы компьютера на все время, пока она не будет извлечена (демонтирована). 4. Подчеркнем особую важность среди функций современных ОС обеспечения безопасности, надежности и защиты данных. Следует учитывать, что компьютер и операционная система работают в сетевом окружении, в котором постоянно возможны и фактически происходят атаки хакеров и их программ, ставящие своей целью нарушение работы компьютера, “взлом” конфиденциальных данных пользователя, хранящихся на нем, похищение логинов, паролей, использование компьютера как “робота” для рассылки реклам или вирусов и др. В связи с этим в 2002 г. фирма Microsoft объявила инициативу по надежным и безопасным вычислениям (trustworthy computing initiative ), целью которой является повышение надежности и безопасности всего программного обеспечения, прежде всего – операционных систем. В данном курсе мы будем подробно останавливаться на том, какие действия по обеспечению надежности, безопасности и защите данных предпринимают современные ОС. Компоненты компьютерной системы Чтобы лучше понять место и роль операционной системы в процессе вычислений, рассмотрим компьютерную систему в целом. Она состоит из следующих компонентов: 1. Аппаратура (hardware) компьютера, основные части которой – центральный процессор (Central Processor Unit - CPU ), выполняющий команды (инструкции) компьютера; память (memory),хранящая данные и программы, и устройства вводавывода, или внешние устройства (input-output devices, I/O devices ), обеспечивающие ввод информации в компьютер и вывод результатов работы программ в форме, воспринимаемой пользователем-человеком или другими программами. Часто на программистском слэнге аппаратуру называют “железом”. 2. Операционная система (operating system) – основной предмет нашего курса; системное программное обеспечение, управляющее использованием аппаратуры компьютера различными программами и пользователями. 3. Прикладное программное обеспечение (applications software) – программы, предназначенные для решения различных классов задач. К ним относятся, в частности, компиляторы, обеспечивающие трансляцию программ с языков программирования, например, C++, в машинный код (команды); системы управления базами данных (СУБД ); графические библиотеки, игровые программы, офисные программы. Прикладное программное обеспечение образует следующий, более высокий уровень, по сравнению с операционной системой, и позволяет решать на компьютере различные прикладные и повседневные задачи. 8
4. Пользователи (users) – люди и другие компьютеры. Отнесение пользователя человека к компонентам компьютерной системы - вовсе не шутка, а реальность: любой пользователь фактически становится частью вычислительной системы в процессе своей работы на компьютере, так как должен подчиняться определенным строгим правилам, нарушение которых приведет к ошибкам или невозможности использования компьютера, и выполнять большой объем типовых рутинных действий – почти как сам компьютер. Одна из важных функций ОС как раз и состоит в том, чтобы избавить пользователя от большей части такой рутинной работы (например, резервного копирования файлов) и позволить ему сосредоточиться на работе творческой. Другие компьютеры в сети также могут играть роль пользователей ( клиентов ) по отношению к данному компьютеру, выступающему в роли сервера, используемого, например, для хранения файлов или выполнения больших программ. Девизом фирмы Sun Microsystems еще в 1982 г., при ее создании, стал афоризм ” The network is the computer ” (Сеть – это компьютер). Эту истину следует помнить всем пользователям компьютеров и их операционных систем и шире использовать возможности компьютерных сетей, распределяя различные функции между ее различными компьютерами (или хостами – hosts, как на компьютерном слэнге принято называть компьютеры в сети). Изолированный от сети компьютер ныне – это “каменный век”. Отсюда – неразрывная связь операционных систем и сетей. Общая картина функционирования компьютерной системы Рис. 1.1. Общая картина функционирования компьютерной системы 9
Пользователям компьютера доступны верхние уровни программного обеспечения – системные и прикладные программы (например, компиляторы, текстовые редакторы, системы управления базами данных). Эти программы взаимодействуют с операционной системой, которая, в свою очередь, управляет работой компьютера. Классификация компьютерных систем Для того, чтобы представить себе разнообразие и масштабируемость операционных систем, рассмотрим прежде всего классификацию современных компьютерных систем, для которых разрабатываются и используются ОС – от суперкомпьютеров до мобильных устройств, - и суммируем требования к ОС для этих классов компьютеров. Суперкомпьютеры (super-computers) – мощные многопроцессорные компьютеры, наиболее современные из которых имеют производительность до нескольких petaflops (1015 вещественных операций в секунду; аббревиатура flops расшифровывается как floating-point operations per second ). Пример – суперкомпьютер “Ломоносов”, установленный в МГУ. Суперкомпьютеры используются для вычислений, требующих больших вычислительных мощностей, сверхвысокой производительности и большого объема памяти. В реальной практике это прежде всего задачи моделирования – например, моделирования климата в регионе и прогнозирования на основе построенной модели погоды в данном регионе на ближайшие дни. Особенностью суперкомпьютеров является их параллельная архитектура – как правило, все они являются многопроцессорными. Соответственно, ОС для суперкомпьютеров должны поддерживать распараллеливание решения задач и синхронизацию параллельных процессов, одновременно решающих подзадачи некоторой программы. Многоцелевые компьютеры, или компьютеры общего назначения (mainframes) – традиционное историческое название для компьютеров, распространенных в 1950-х – 1970-х гг., еще до эпохи всеобщего распространения персональных компьютеров. Именно для mainframe-компьютеров создавались первые ОС. Типичные примеры таких компьютеров: IBM 360/370; из отечественных – М-220, БЭСМ-6. На таких компьютерах решались все необходимые задачи – от расчета зарплаты сотрудников в организации до расчета траекторий космических ракет. Подобный компьютер выглядел достаточно неуклюже и громоздко и мог занимать целый большой зал. Вспомните, например. огромный компьютер HAL на космическом корабле в фантастическом фильме 1960-х гг. Стэнли Кубрика “Космическая одиссея 2001 г.” Но никакие фантасты не смогли предвидеть прогресса компьютерной техники XXI века – прежде всего, того, что мощный компьютер будет не занимать целую комнату, а помещаться в небольшом ящике. Параметры ранних mainframe-компьютеров были весьма скромными: быстродействие - несколько тысяч операций в секунду, оперативная память – несколько тысяч ячеек (слов). Недостаточно удобным был пользовательский интерфейс (интерактивное взаимодействие с компьютерами было реализовано гораздо позже, в 1960-х гг.). Тем не менее, на таких компьютерах решались весьма серьезные задачи оборонного и космического назначения. С появлением персональных и портативных компьютеров классические mainframeкомпьютеры ушли в прошлое. Однако следует подчеркнуть, что в именно в операционных системах для mainframe-компьютеров были реализованы все основные 10