Единое окно доступа к образовательным ресурсам

Операционные системы. Теория и практика: Учебное пособие

Голосов: 2

В учебном пособии изложены особенности функционирования, назначения и архитектуры современных операционных систем (ОС). В работе отражены: понятие и эволюция операционных систем, архитектурные особенности и классификация ОС по различным критериям, особенности управления процессами и памятью, основы организации файловых систем и некоторые их конкретные примеры, рассмотрены консолидированные серверные системы хранения данных большого объема RAID. Для получения практических навыков работе в операционных системах (на примере систем семейства Unix-Linux) учебное пособие освещает вопросы разработки программных проектов с использованием специализированных утилит, а также по управлению процессами и потоками и средствами их синхронизации. Предназначено для студентов, обучающихся по направлению 230100 Информатика и вычислительная техника.

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.
                        МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
Государственное образовательное учреждение высшего профессионального образования
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»




                              А.В. Замятин




              ОПЕРАЦИОННЫЕ СИСТЕМЫ.
                  Теория и практика




                             Издательство
                Томского политехнического университета
                                 2011


           УДК 681.3.066(075.8)
           ББК 32.973-018.2я73
             З-26


     Замятин А.В.
З-26 Операционные системы. Теория и практика: учебное пособие / А.В.
     Замятин. – Томск: Изд-во Томского политехнического университе-
     та, 2011. – 281 с.

       В учебном пособии изложены особенности функционирования, назначения и
 архитектуры современных операционных систем (ОС). В работе отражены: понятие
 и эволюция операционных систем, архитектурные особенности и классификация ОС
 по различным критериям, особенности управления процессами и памятью, основы
 организации файловых систем и некоторые их конкретные примеры, рассмотрены
 консолидированные серверные системы хранения данных большого объема RAID.
 Для получения практических навыков работе в операционных системах (на примере
 систем семейства Unix-Linux) учебное пособие освещает вопросы разработки про-
 граммных проектов с использованием специализированных утилит, а также по управ-
 лению процессами и потоками и средствами их синхронизации.
      Предназначено для студентов, обучающихся по направлению 230100 Инфор-
 матика и вычислительная техника.
                                                    УДК 681.3.066(075.8)
                                                    ББК 32.973-018.2я73


                               Рецензенты

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

  Кандидат технических наук, заместитель начальника Управления
       информационных технологий ОАО «Востокгазпром»,
                        П.М. Острасть




                                 © Замятин А.В., 2011
                                 © Томский политехнический университет, 2011
                                 © Оформление. Издательство ТПУ, 2011

                                       2


                                           СОДЕРЖАНИЕ
ВВЕДЕНИЕ ....................................................................................................7
1.      ПОНЯТИЕ И ЭВОЛЮЦИЯ ОПЕРАЦИОННЫХ СИСТЕМ...9
  1.1 Основные понятия, назначения и функции ОС ...............................9
  1.2 Эволюция вычислительных и операционных систем ...................12
    1.2.1  История развития ОС ...............................................................12
    1.2.2  Основные функции ОС ............................................................20
    1.2.3  Особенности современного этапа развития ОС ....................21
  1.3 Вопросы для самопроверки .............................................................22
2.      АРХИТЕКТУРНЫЕ ОСОБЕННОСТИ ОС.
КЛАССИФИКАЦИЯ ОС ..........................................................................23
  2.1 Архитектурные особенности ОС ....................................................23
    2.1.1  Монолитное ядро ......................................................................23
    2.1.2  Микроядерная архитектура .....................................................24
    2.1.3  Многоуровневые системы .......................................................26
    2.1.4  Виртуальные машины ..............................................................27
    2.1.5  Смешанные системы ................................................................28
  2.2 Классификация ОС ...........................................................................28
  2.3 Вопросы для самопроверки .............................................................31
3.      УПРАВЛЕНИЕ ПРОЦЕССАМИ .................................................33
  3.1 Мультипрограммирование...............................................................33
    3.1.1  Мультипрограммирование в системах пакетной обработки34
    3.1.2  Мультипрограммирование в системах разделения времени 35
    3.1.3  Мультипрограммирование в системах реального времени .36
    3.1.4  Мультипрограммирование при мультипроцессорной
    обработке..................................................................................................37
    3.1.5  Роль прерываний при мультипрограммировании .................40
  3.2 Планирование процессов и потоков ...............................................46
    3.2.1  Понятие процесса и потока......................................................46
    3.2.2  Создание процессов и потоков ................................................49
    3.2.3  Управляющие структуры процессов и потоков ....................50
    3.2.4  Состояния процесса ..................................................................53
    3.2.5  Критерии планирования ...........................................................56
    3.2.6  Цели и свойства алгоритмов планирования...........................57
    3.2.7  Виды планирования ..................................................................59
    3.2.8  Алгоритмы планирования ........................................................60
  3.3 Взаимодействие и синхронизация процессов и потоков ..............64
    3.3.1  Независимые и взаимодействующие вычислительные
    процессы...................................................................................................64

                                                       3


    3.3.2 Цели и средства синхронизации .............................................65
    3.3.3 Пример необходимости синхронизации ................................66
    3.3.4 Механизмы синхронизации .....................................................68
    3.3.5 Проблемы синхронизации .......................................................75
    3.3.6 Механизмы межпроцессного взаимодействия ......................78
  3.4 Вопросы для самопроверки .............................................................82
4.      УПРАВЛЕНИЕ ПАМЯТЬЮ ........................................................85
  4.1 Основные положения .......................................................................85
    4.1.1  Задачи по управлению памятью ..............................................86
    4.1.2  Типы адресации ........................................................................87
  4.2 Распределение памяти ......................................................................91
    4.2.1  Общие принципы управления памятью в однопрограммных
    ОС     91
    4.2.2  Особенности организации управления памятью в
    мультипрограммных ОС ........................................................................93
    4.2.3  Распределение фиксированными разделами .........................94
    4.2.4  Распределение динамическими разделами ............................96
    4.2.5  Распределение перемещаемыми разделами ...........................98
    4.2.6  Сегментное распределение ......................................................99
    4.2.7  Страничное распределение ....................................................106
    4.2.8  Особенности эффективного использования таблиц страниц
           111
    4.2.9  Сегментно-страничное распределение .................................116
  4.3 Вопросы для самопроверки ...........................................................118
5.      ФАЙЛОВЫЕ СИСТЕМЫ...........................................................120
  5.1 Физическая организация жесткого диска....................................120
  5.2 Принципы построения файловой системы ..................................124
    5.2.1  Интерфейс файловой системы ..............................................124
    5.2.2  Функциональная схема организации файловой системы ...125
    5.2.3  Типовая структура файловой системы на диске .................127
    5.2.4  Способы выделения дискового пространства .....................128
    5.2.5  Управление дисковым пространством .................................132
    5.2.6  Размер логического блока ......................................................133
  5.3 Особенности загрузки ОС ..............................................................134
  5.4 Файлы и файловая система ............................................................136
    5.4.1  Цели и задачи файловой системы .........................................136
    5.4.2  Типы файлов ............................................................................138
    5.4.3  Атрибуты файла ......................................................................141
    5.4.4  Доступ к файлам .....................................................................141
    5.4.5  Операции над файлами ..........................................................144

                                                  4


    5.4.6 Иерархическая структура каталогов .....................................145
    5.4.7 Операции над директориями .................................................146
  5.5 Особенности организации некоторых файловых систем ...........147
    5.5.1 FAT ...........................................................................................147
    5.5.2 VFAT ........................................................................................152
    5.5.3 NTFS .........................................................................................154
    5.5.4 HPFS .........................................................................................157
    5.5.5 UFS ...........................................................................................160
  5.6 Дисковые массивы RAID ...............................................................164
  5.7 Вопросы для самопроверки ...........................................................166
6.      ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 1. ЗНАКОМСТВО С
ОПЕРАЦИОННОЙ СИСТЕМОЙ UNIX ..............................................168
  6.1 Цель работы .....................................................................................168
  6.2 Задание .............................................................................................168
  6.3 Основы работы в операционной системе UNIX ..........................168
    6.3.1  Интерфейс командной строки в системах Unix ...................168
    6.3.2  Основы интерактивной работы в оболочке bash .................178
    6.3.3  Файловая система ...................................................................185
  6.4 Последовательность выполнения работы ....................................196
7.      ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 2. ЗНАКОМСТВО СО
СТАНДАРТНОЙ УТИЛИТОЙ GNU MAKE ДЛЯ ПОСТРОЕНИЯ
ПРОЕКТОВ В ОС UNIX ..........................................................................198
  7.1 Цель работы .....................................................................................198
  7.2 Задание .............................................................................................198
  7.3 Основы использования утилиты построения проектов Make ....198
    7.3.1  Основные правила работы с утилитой make ........................198
    7.3.2  Пример практического использования утилиты make ........204
  7.4 Последовательность выполнения работы ....................................215
8.      ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 3. ЗНАКОМСТВО С
ПОТОКАМИ И ИХ СИНХРОНИЗАЦИЕЙ В ОС UNIX ...................217
  8.1 Цель работы .....................................................................................217
  8.1 Задание .............................................................................................217
  8.2 Управление потоками .....................................................................217
    8.2.1  Программирование потоков ..................................................217
    8.2.2  Основные функции для работы с потоками .........................217
    8.2.3  Запуск и завершение потока ..................................................218
    8.2.4  Досрочное завершение потока ..............................................219
    8.2.5  Синхронизация потоков .........................................................221
  8.3 Мьютексы ........................................................................................222

                                                      5


    8.3.1  Функции синхронизации потоков с использованием
    мьютексов ..............................................................................................222
    8.3.2  Инициализация и удаление объекта атрибутов мьютекса .222
    8.3.3  Область видимости мьютекса ...............................................223
    8.3.4  Инициализация мьютекса ......................................................224
    8.3.5  Запирание мьютекса ...............................................................225
    8.3.6  Удаление мьютекса.................................................................226
    8.3.7  Компиляция многопоточной программы .............................230
    8.3.8  Особенности отладки многопоточной программы .............231
    8.3.9  Примеры практической реализации .....................................231
  8.4 Последовательность выполнения работы ....................................240
9.      ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 4. ЗНАКОМСТВО С
ПРОЦЕССАМИ, ПЕРЕДАЧЕЙ ДАННЫХ МЕЖДУ
ПРОЦЕССАМИ И ИХ СИНХРОНИЗАЦИЕЙ ...................................241
  9.1 Цель работы .....................................................................................241
  9.2 Задание .............................................................................................241
  9.3 Основы оперирования процессами в оболочке bash ...................241
    9.3.1  Задания и процессы ................................................................241
    9.3.2  Передний план и фоновый режим ........................................242
    9.3.3  Перевод заданий в фоновый режим и уничтожение заданий
           243
    9.3.4  Приостановка и продолжение работы заданий ...................245
  9.4 Механизмы межпроцессного взаимодействия в ОС Unix ..........247
    9.4.1  Очереди сообщений ................................................................255
    9.4.2  Работа с разделяемой памятью ..............................................257
    9.4.3  Примеры практической реализации .....................................259
  9.5 Последовательность выполнения работы ....................................278
ЛИТЕРАТУРА ...........................................................................................280




                                                      6


                            Введение
     С каждым годом использование вычислительных систем становится
все более широким, существенно повышая эффективность функционирова-
ния самых различных бизнес-процессов больших и малых предприятий, об-
легчая и делая более разнообразной и интересной работу с персональными
компьютерами рядовых пользователей по всему миру. Во многом, эта за-
слуга операционной системы (ОС) – неотъемлемой части любой современ-
ной вычислительной системы от простого и недорого пользовательского
компьютера до мощного суперкомпьютера с десятками процессоров.
     В связи с вышеизложенным, очевидна ведущая роль современных
ОС и особое внимание, которое следует уделять их изучению. Предлага-
емое учебное пособие направлено в некоторой степени на решение этой
задачи. В нем сделана попытка изложить самые основные элементы осо-
бенностей функционирования, назначения и архитектуры современных
ОС без существенной «привязки» к какой-либо конкретной ОС и лишних
деталей функционирования, усложняющих процесс понимания.
     В пособии изложены общетеоретические вопросы построения и функ-
ционирования ОС: базовые понятия ОС, основные этапы эволюции ОС, со-
ставляющие функционирования мультипроцессной системы – мультипро-
граммирование, планирование процессов и потоков и механизмы их взаи-
модействия и синхронизации, основные задачи по управлению памятью,
особенности реализации распределения оперативной памяти и физической
организации жесткого диска, базовые принципы построения типовой фай-
ловой системы, особенности загрузки ОС и организация консолидирован-
ных серверных систем хранения данных большого объема RAID различного
уровня.
     Значительная часть пособия посвящена приобретению практических
навыков работы в ОС. На сегодняшний день существует множество раз-
личных ОС, построенных на закрытой (OC семейства Windows) и откры-
той архитектурах (ОС семейства Unix). При этом, благодаря своему «от-
крытому» характеру, именно последние более подходят для изучения
базовых аспектов функционирования ОС.
     Unix-подобные ОС являются достаточно популярными уже более
трех десятилетий, что для ОС – очень серьезный срок. Несмотря на
большое число разновидностей систем Unix, все их объединяет ряд ос-
новных черт, таких как язык высокого уровня С, положенный в основу
кода всей системы, наличие стандартов в архитектуре и интерфейсных
решений (POSIX, System V), использование единой, легко обслуживае-
мой иерархической файловой системы, различных дополнительных
средств, включая средства, предназначенные для упрощения сборки
программных проектов.
                                  7


     Современные ОС, включая ОС семейства Unix, поддерживают мно-
гозадачность и многопоточность. При многопоточности в системе одно-
временно может работать несколько задач, и каждая из задач может
быть разбита на подзадачи, выполняемые параллельно. Для этого в со-
временных ОС предусмотрен ряд стандартных механизмов, позволяю-
щих достаточно эффективно обеспечить синхронизацию процессов и
передачу данных между ними, что дает возможность решать задачи и
подзадачи как независимо, так и с кооперацией между ними.
     В рамках предлагаемого учебного пособия предоставляется воз-
можность получить практические навыки работы в одной из разновид-
ностей ОС Unix – Linux на примере решения практических задач: разра-
ботка программного проекта с помощью утилиты для автоматизирован-
ной сборки программных проектов GNU make; разработка многопоточ-
ного приложения и разработка многопроцессного приложения с исполь-
зованием стандартных межпроцессных средств синхронизации и пере-
дачи данных между клиентом и сервером.
     Пособие предназначено для студентов направления 230100 «Ин-
форматика и вычислительная техника», однако оно может быть полезно
и студентам других специальностей, в образовательных программах ко-
торых присутствует дисциплина «Операционные системы», а также ши-
рокому кругу подготовленных пользователей, желающих углубить свои
познания в области ОС. Более глубокие знания основных принципов ор-
ганизации и функционирования ОС позволят обоснованно принимать
решения по приобретению того или иного вычислительного оборудова-
ния и программного обеспечения, организовывать его эффективную и
надежную эксплуатацию, принимать решения о необходимости его ча-
стичного обновления или замены.




                                 8


1. ПОНЯТИЕ И ЭВОЛЮЦИЯ ОПЕРАЦИОННЫХ СИСТЕМ
    1.1 Основные понятия, назначения и функции ОС
    Для того, чтобы ответить на вопрос, что представляет собой опера-
ционная система, необходимо сначала рассмотреть вопрос, из чего со-
стоит вычислительная система (ВС) в целом. Обобщенно структура вы-
числительной системы представлена на рис. 1.
           Пользователь




           Прикладные
           программы




              Прочие                             Программное
            системные                            обеспечение
            программы
                                  Системные
                                  программы

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




           Техническое
           обеспечение

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


стемы в целом. Большинство из них отвечают непосредственно за кон-
троль и объединение в единое целое различных компонентов аппаратно-
го оборудования ВС, обеспечение работы компьютера самого по себе и
выполнение различных прикладных программ. Системное ПО противо-
поставляется прикладному ПО, которое напрямую решает проблемы
пользователя и предназначено для выполнения определенных пользова-
тельских задач и рассчитано на непосредственное взаимодействие с
пользователем. К прикладному ПО, как правило, относят разнообразные
вспомогательные программы (игры, текстовые процессоры и т.п.).
     Следует отметить, что деление на прикладное и системное ПО яв-
ляется отчасти условным и зависит от того, кто осуществляет такое де-
ление. Так, обычный пользователь, неискушенный в программировании,
может считать текстовый процессор Microsoft Word системной про-
граммой, а с точки зрения программиста, это – приложение. Компилятор
языка С для обычного программиста – системная программа, а для си-
стемного – прикладная.
     Принимая во внимание вышеизложенное, следует отметить, что
операционная система является фундаментальным компонентом си-
стемного программного обеспечения. Именно эта часть ПО будет ос-
новным предметом детального рассмотрения далее.
     Очевидно, что операционная система является основным компо-
нентом любой вычислительной системы и во многом определяет эффек-
тивность ее функционирования в целом. При этом, дать однозначное
определение операционной системе затруднительно. Главным образом
это связано с тем, что операционная система выполняет целый ряд раз-
нородных функций, начиная от обеспечения пользователю-
программисту удобств посредством предоставления удобного интер-
фейса к аппаратной части вычислительной системы и заканчивая обес-
печением рационального управления ресурсами вычислительной систе-
мы. В связи с этим целесообразно дать несколько различных определе-
ний и сделать акцент на цели создания операционных систем, их функ-
ции и предназначение.
     Главными целями разработчиков операционных систем являются
следующие:
    1. Эффективное использование всех компьютерных ресурсов.
    2. Повышение производительности труда программистов.
    3. Простота, гибкость, эффективность и надежность организации
вычислительного процесса.
    4. Обеспечение независимости прикладного ПО от аппаратного ПО.



                                 10



    
Яндекс цитирования Яндекс.Метрика