Главная страница
Навигация по странице:

  • 1.10. Вычислительные среды

  • 1.10.1 Традиционные вычисления

  • 1.10.2 Мобильные вычисления

  • 1.10.3 Клиент-серверные вычисления

  • 1.10.4 Одноранговые вычисления

  • 1.10.5 Облачные вычисления

  • Публичное облако

  • Платформа как услуга (PaaS)

  • 1.11. Свободные и открытые операционные системы

  • 1.11.2. Свободные операционные системы

  • ИССЛЕДОВАНИЕ ЭКСПЛУАТАЦИОННЫХ СИСТЕМ

  • 1.11.6 Системы с открытым исходным кодом как средства обучения

  • Список используемой литературы

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


    Скачать 0.54 Mb.
    НазваниеКонцепция операционных систем
    Анкорdmaster
    Дата13.10.2022
    Размер0.54 Mb.
    Формат файлаdocx
    Имя файлаГлава 1. Введение.docx
    ТипДокументы
    #731212
    страница7 из 7
    1   2   3   4   5   6   7

    1.9.3 Хэш-функции и карты Хеш-функция принимает данные в качестве входных данных, выполняет числовую операцию с данными и возвращает числовое значение. Это числовое значение может затем использоваться в качестве индекса в таблице (обычно в массиве) для быстрого извлечения данных. Если для поиска элемента данных через список размером n может потребоваться до O (n) сравнений, использование хеш-функции для извлечения данных из таблицы может быть таким же хорошим, как O (1), в зависимости от деталей реализации. Из-за этой производительности хэш-функции широко используются в операционных системах.

    Одна потенциальная проблема с хэш-функциями заключается в том, что два уникальных входных данных могут привести к одному и тому же выходному значению, то есть они могут ссылаться на одно и то же место таблицы. Мы можем приспособить это хеш-коллизию, используя связанный список в таблице, который содержит все элементы с одинаковым хеш-значением. Конечно, чем больше коллизий, тем менее эффективна хеш-функция. Одним из применений хэш-функции является реализация карты хэш-функции, которая связывает (или отображает) пары [ключ: значение] с использованием хэш-функции. Как только сопоставление установлено, мы можем применить хеш-функцию к ключу, чтобы получить значение из хеш-карты (рисунок 1.21). Например, предположим, что имя пользователя сопоставлено с паролем. Затем аутентификация по паролю происходит следующим образом: пользователь вводит свое имя пользователя и пароль. Хеш-функция применяется к имени пользователя, которое затем используется для получения пароля. Затем полученный пароль сравнивается с паролем, введенным пользователем для аутентификации.

    1.9.4 Битовые карты Битовые карты представляют собой набор двоичных цифр, которые могут быть использованы для представления n элементов. Например, предположим, что у нас есть несколько ресурсов, и доступность каждого ресурса указывается значением двоичной цифры: 0 означает, что ресурс доступен, тогда как 1 указывает на то, что он недоступен (или наоборот). Значение i-й позиции в битовой карте связано с i-м ресурсом. В качестве примера рассмотрим растровое изображение, показанное ниже:

    001011101

    Ресурсы 2, 4, 5, 6 и 8 недоступны, а ресурсы 0, 1, 3 и 7 доступны.

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

    1.10. Вычислительные среды

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

    1.10.1 Традиционные вычисления По мере взросления вычислений происходит размытие линий, разделяющих многие традиционные вычислительные среды. Рассмотрим «типичную офисную среду». Всего несколько лет назад эта среда состояла из компьютеров, подключенных к сети, с серверами, предоставляющими файловые и печатные услуги. Удаленный доступ был неудобным, и портативность была достигнута с использованием портативных компьютеров. Сегодня веб-технологии и расширяющаяся полоса WAN расширили границы традиционной вычислительной техники. Компания выпускает порталы, обеспечивающие доступ веб-сайтов к их внутренним серверам. Сетевые компьютеры (или тонкие клиенты), которые, по сути, являются терминалами, которые понимают и основаны на веб-вычислениях, используются вместо традиционных рабочих станций, где требуется более высокий уровень безопасности или более простое обслуживание. Мобильные компьютеры могут синхронизироваться с ПК, что позволяет очень портативно использовать информацию компании. Мобильные устройства также могут подключаться к беспроводным сетям и сотовой сети через веб-портал компании (а также множество других веб-ресурсов). В настоящее время большинство пользователей имеют один компьютер с высокой скоростью подключения модемом, подключенным к офису, Интернету или обоим. Сегодня скорость сетевого подключения достаточно высокая, когда-то была доступная только по высокой цене, теперь во многих местах относительно недорогая, предоставляя домашним пользователям больший доступ к большему количеству данных. Эти быстрые соединения для передачи данных позволяют домашним компьютерам обслуживать веб-страницы и запускать сети, которые включают принтеры, клиентские ПК и серверы. Многие дома используют брандмауэр для защиты своих сетей от нарушений безопасности. Брандмауэры ограничивают связь между устройствами в сети. Во второй половине 20-го века вычислительные ресурсы были относительно скудными. (До этого они не существовали!) В течение этого периода времени системы были либо пакетными, либо интерактивными. Пакетные системы обрабатывали задания массово, с заранее заданным входом из файлов или других источников данных. Интерактивные системы ожидали ввода от пользователей, чтобы оптимизировать использование вычислительных ресурсов, несколько пользователей делили время на этих системах. Эти системы с разделением времени использовали таймер и алгоритмы планирования для быстрой циклической обработки процессов через ЦП, предоставляя каждому пользователю долю ресурсов. Сегодня используется традиционная система распределения времени. Техника планирования по-прежнему используется на настольных компьютерах, ноутбуках, серверах и даже мобильных компьютерах, но зачастую все процессы принадлежат одному и тому же пользователю (или одному пользователю и операционной системе). Пользовательские процессы и системные процессы, которые предоставляют услуги пользователю, управляются таким образом, чтобы каждый из них часто получал частичку компьютерного времени. Например, учитывайте, когда пользователь работает на ПК, и тот факт, что они могут выполнять разные задачи в одно и то же время из нескольких процессов, которые в настоящее время посещаются одним веб-сайтом, и время от времени применяются к каждому процессу веб-браузера.

    1.10.2 Мобильные вычисления Мобильные вычисления - это вычисления на портативных смартфонах и планшетных компьютерах. Эти устройства имеют отличительные физические характеристики, будучи портативными и легкими. Исторически, по сравнению с настольными и портативными компьютерами, мобильные системы увеличивают размер экрана, емкость памяти и общую функциональность в обмен на мобильный доступ к таким службам, как электронная почта и просмотр веб-страниц. Однако за последние несколько лет возможности мобильных устройств стали настолько богатыми, что различие в функциональности, скажем, между потребительским ноутбуком и планшетным компьютером, может быть трудно различить. На самом деле, мы можем утверждать, что функции современного мобильного устройства позволяют ему предоставлять функциональность, которая либо недоступна, либо непрактична для настольного компьютера или ноутбука. Сегодня мобильные системы используются не только для просмотра электронной почты и просмотра веб-страниц, но также для воспроизведения музыки и видео, чтения цифровых книг, фотографирования и записи и редактирования видео высокой четкости. Соответственно, огромный рост продолжается в широком спектре приложений, работающих на таких устройствах. Многие разработчики в настоящее время разрабатывают приложения, в которых используются уникальные функции мобильных устройств, такие как микросхемы глобальной системы позиционирования (GPS), акселерометры и гироскопы; к близлежащим услугам, таким как рестораны. Акселерометр позволяет мобильному устройству определять его ориентацию относительно земли и обнаруживать некоторые другие силы, такие как наклон и встряхивание. В некоторых компьютерных играх, в которых используются акселерометры, игроки взаимодействуют с системой не с помощью мыши или клавиатуры, а с помощью переворота, вращения и встряхивания мобильного устройства! Возможно, более практическое использование этих функций можно найти в приложениях дополненной реальности, которые накладывают информацию на дисплей и текущую среду. Сложно представить, как можно разрабатывать аналогичные приложения на традиционных портативных или настольных компьютерных системах. Для обеспечения доступа к онлайновым услугам мобильные устройства обычно используют беспроводные или сотовые сети передачи данных стандарта IEEE 802.11. Однако объем памяти и скорость обработки мобильных устройств более ограничены, чем у ПК. Принимая во внимание, что у смартфона или планшета может быть 256 ГБ памяти, весьма обычно найти 8 ТБ памяти на настольном компьютере. Точно так же, поскольку потребление энергии связано с тем, что мобильные устройства часто используют процессоры, которые меньше, они медленнее и предлагают меньше обработки процессоров, чем традиционные настольные компьютеры и ноутбуки. В настоящее время в мобильных вычислениях доминируют две операционные системы: Apple iOS и Google Android. iOS были разработаны для работы на мобильных устройствах Apple iPhone и iPad. Android обеспечивает работу смартфонов и планшетных компьютеров, доступных у многих производителей. Мы расскажем о мобильных и операционных системах более подробно в главе 2.

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

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

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

    1.10.4 Одноранговые вычисления Другой структурой для распределенной системы является модель одноранговой (peer-to-peer - P2P) системы. В этой модели клиенты и серверы не отличаются друг от друга. Вместо этого все узлы в системе считаются равноправными, и каждый из них может выступать в роли клиента или сервера, в зависимости от того, запрашивает он или предоставляет услугу. Одноранговые системы предлагают преимущество по сравнению с традиционными системами клиент-сервер. Система сервер-сервер, в котором сервер - узкое место, но в системе с равноправными узлами службы могут быть предоставлены по нескольким узлам, распределенным по всей сети. Чтобы участвовать в одноранговой системе, узел должен сначала присоединиться к сети одноранговых узлов. Как только узел присоединился к сети, он может начать предоставлять услуги и запрашивать услуги у других узлов в сети. Определение доступных услуг осуществляется одним из двух основных способов:

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

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

    Одноранговые сети получили широкую популярность в сети в 1990 с несколькими службами совместного использования файлов, такими как Napste и Gnutella, которые позволили равноправным пользователям обмениваться файлами с одного на другой. Система Gnutella использовала метод, аналогичный второму типу: клиентский широковещательный файл запрашивает другие узлы в системе, а узлы, которые могли обслуживать запрос, отвечали непосредственно клиенту. Одноранговые сети могут использоваться для анонимного обмена защищенными авторским правом материалами (например, музыкой), и существуют законы, регулирующие распространение защищенных авторским правом материалов. Примечательно, что Napster столкнулся с юридической проблемой из-за нарушения авторских прав, и его услуги были закрыты в 2001 году. По этой причине будущее обмена файлами остается неопределенным.

    Skype является еще одним примером одноранговых вычислений. Он позволяет клиентам совершать голосовые и видеозвонки и отправлять текстовые сообщения через Интернет с помощью технологии, известной как передача голоса по IP (voice over IP - VoIP). Skype использует гибридный одноранговый доступ. Включает в себя централизованный логический сервер, но включает в себя децентрализованные одноранговые узлы и позволяет двум партнерам общаться.

    1.10.5 Облачные вычисления Облачные вычисления - это тип вычислений, который обеспечивает вычисления, хранение и даже приложения в качестве службы по сети. В некотором смысле это логическое расширение виртуализации, поскольку она использует виртуализацию в качестве основы для своей функциональности. Например, средство Amazon Elastic Compute Cloud (ec2) имеет тысячи серверов, миллионы виртуальных машин и петабайт хранилища, доступных любому пользователю в Интернете. Пользователи платят в месяц в зависимости от того, сколько ресурсов они используют. Есть фактически много типов облачных вычислений, включая следующие:

    • Публичное облако - облако, доступное через Интернет всем, кто готов платить за услуги.

    • Частное облако - облако, управляемое компанией для собственного использования этой компании.

    • Гибридное облако - облако, которое включает в себя компоненты как публичного, так и частного облака - услуга (SaaS) - одно или несколько приложений (таких как текстовые процессоры или электронные таблицы), доступных через Интернет.

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

    • Инфраструктура как услуга (IaaS) - серверы или хранилище, доступное через Интернет (например, хранилище, доступное для создания резервных копий производственных данных).

    Эти типы облачных вычислений не являются дискретными, поскольку среда облачных вычислений может предоставлять комбинацию нескольких типов. Например, организация может предоставлять как SaaS, так и IaaS в качестве общедоступных услуг. Безусловно, существуют традиционные работающие системы с множеством типов облачной инфраструктуры. Помимо них, VMM управляют виртуальными машинами, на которых работают пользовательские процессы. На более высоком уровне самими VMM управляют инструменты управления облаком, такие как VMware vCloud Director и набор инструментов Eucalyptus с открытым исходным кодом. Эти инструменты управляют ресурсами с помощью облака и предоставляют интерфейс к облачным компонентам, создавая хороший аргумент для рассмотрения нового типа операционной системы. На рисунке 1.24 показано общедоступное облако, предоставляющее IaaS. Обратите внимание, что облачные службы и облачный пользовательский интерфейс защищены межсетевым экраном.

    1.10.6 Встроенные системы реального времени Встроенные компьютеры являются наиболее распространенной формой существующих компьютеров. Эти устройства встречаются повсеместно, начиная с автомобильных двигателей и заканчивая производством робототехнических приводов и микроволновых печей. Они стремятся решать очень специфические задачи. Системы, на которых они работают, обычно примитивны, и поэтому операционные системы предоставляют ограниченные возможности. Обычно они сокращают пользовательский интерфейс, предпочитая тратить свое время на мониторинг и управление аппаратными устройствами, такими как автомобильные двигатели и роботизированное оружие. Эти встроенные системы значительно различаются. Некоторые из них являются компьютерами общего назначения, работающими под управлением стандартных операционных систем, таких как Linux, со специальными приложениями для реализации этой функциональности. Другие являются аппаратными устройствами со встроенной операционной системой специального назначения, обеспечивающей только желаемую функциональность. Третьи - это аппаратные устройства со специализированными интегральными схемами (ASIC), которые выполняют свои задачи без операционной системы. Использование встроенных систем продолжает расширяться. Мощность этих устройств, как автономных устройств, так и элементов сетей и Интернета, несомненно, возрастает. Хорошо, что все они могут быть компьютеризированы, так как центральный компьютер, как, например, универсальная компьютерная встроенная система, может управлять отоплением и освещением, системами сигнализации и даже кофеварками. Доступ в Интернет может позволить владельцу дома сообщить дому о том, что дом должен нагреваться до того, как он прибудет в дом. Однажды холодильник сможет уведомить магазин, когда он заметит, что молоко пропало. Встроенные системы почти всегда работают в режиме реального времени. Система реального времени используется, когда жесткие требования к времени предъявляются к работе процессора или потоку данных; таким образом, он часто используется в качестве устройства управления назначенным приложением. Датчики доставляют данные на компьютер. Компьютер должен анализировать данные и, возможно, настраивать элементы управления для изменения входов датчика. Системы, управляющие научными экспериментами, медицинские системы визуализации, промышленные системы управления и некоторые системы отображения, представляют собой системы реального времени. Некоторые системы впрыска автомобильного двигателя, контроллеры бытовой техники и системы вооружения также являются системами реального времени. Система реального времени имеет четко определенные фиксированные временные ограничения. Обработка должна быть выполнена в рамках определенных ограничений, иначе система выйдет из строя. Например, роботу не нужно было бы останавливаться после того, как он врезался в машину, которую строил. Система реального времени функционирует корректно только в том случае, если вернется правильный результат с ограничениями времени. Контраст этой системы с обычной системой портативных компьютеров лежит там, где желательно (но не обязательно), реагировать быстро. В главе 5 мы рассмотрели запланированную функциональность, необходимую для реализации функциональности реального времени в операционной системе, а в главе 20 мы описываем компоненты Linux в реальном времени.

    1.11. Свободные и открытые операционные системы

    Изучение операционных систем стало проще благодаря наличию огромного количества бесплатных программ и выпусков с открытым исходным кодом. Как бесплатные операционные системы, так и операционные системы с открытым исходным кодом доступны в формате исходного кода, а не в виде скомпилированного двоичного кода. Тем не менее, обратите внимание, что свободное программное обеспечение и программное обеспечение с открытым исходным кодом - это две разные идеи, отстаиваемые различными группами людей (см. http://gnu.org/philosophy/open-source-misses-the-point.html/ для обсуждения тема). Свободное программное обеспечение (иногда называемое свободным) не только делает исходный код доступным, но и лицензируется для бесплатного использования, распространения и модификации. Программное обеспечение с открытым исходным кодом не обязательно предлагает такое лицензирование. Таким образом, хотя все свободное программное обеспечение имеет открытый исходный код, некоторое программное обеспечение с открытым исходным кодом не является «бесплатным». GNU / Linux - самая известная операционная система с открытым исходным кодом, причем некоторые дистрибутивы бесплатны, а другие - только с открытым исходным кодом (http://www.gnu.org/distros/). Microsoft Windows является хорошо известным примером противоположного подхода с закрытым исходным кодом. Windows является проприетарным программным обеспечением - Microsoft владеет им, ограничивает его использование и тщательно защищает свой исходный код. Операционная система Apple MacOS включает в себя гибридный подход. Он содержит ядро ​​с открытым исходным кодом по имени Darwin, но также включает в себя проприетарные компоненты с закрытым исходным кодом. Начиная с исходного кода, программист может создавать двоичный код, который может быть выполнен в системе. Делать обратное - обратный инжиниринг исходного кода из двоичных файлов - довольно много работы, и полезные элементы, такие как комментарии, никогда не восстанавливаются. Изучение операционных систем путем изучения исходного кода также имеет и другие преимущества. Имея исходный код в руках, учащийся может изменить операционную систему, а затем скомпилировать и запустить код, чтобы опробовать эти изменения, что является отличным инструментом обучения. Этот текст включает в себя проекты, которые включают изменение исходного кода операционной системы, а также описание алгоритмов на высоком уровне, чтобы быть уверенным, что все важные темы операционной системы были раскрыты. В этом тексте мы даем ссылки на примеры открытого исходного кода для более глубокого изучения. Существует много преимуществ для операционных систем с открытым исходным кодом, включая сообщество заинтересованных (и обычно неоплачиваемых) программистов, которые вносят свой вклад в код, помогая писать, отлаживать его, анализировать, обеспечивать поддержку и предлагать изменения. Можно утверждать, что код с открытым исходным кодом более безопасен, чем код с закрытым исходным кодом, потому что гораздо больше глаз просматривает код. Конечно, в открытом исходном коде есть ошибки, но сторонники открытого исходного кода утверждают, что ошибки, как правило, обнаруживаются и исправляются быстрее из-за количества людей, использующих и просматривающих код. Компании, которые получают доход от продажи своих программ, часто колеблются с открытым исходным кодом для своего кода, но Red Hat и множество других компаний делают именно это и показывают, что коммерческие компании выигрывают, а не страдают, когда они открывают исходный код. Доход может быть получен, например, через контракты на поддержку и продажу оборудования, на котором работает программное обеспечение.

    1.11.1 История В первые дни современных вычислений (то есть 1950-х годов) программное обеспечение обычно поставлялось с исходным кодом. Оригинальные хакеры (компьютерные энтузиасты) из TechModelRailroadClub из MIT оставили свои программы в ящиках, чтобы другие могли работать над ними. «Доморощенные» группы пользователей обменивались кодом во время своих встреч. Группы пользователей конкретных компаний, такие как компании Digital Equipment Corporation (DECUS), принимали вклады программ с исходным кодом, собирали их на ленты и распространяли ленты среди заинтересованных участников. В 1970 году операционные системы Digital были распространены в виде исходного кода без каких-либо ограничений или уведомления об авторских правах. Компьютерные и программные компании в конечном итоге стремились не ограничивать использование своего программного обеспечения для авторизованных компьютеров и платных клиентов. Распространение только двоичных файлов, скомпилированных из исходного кода, а не самого исходного кода, помогло им достичь этой цели, а также защитить свой код и свои идеи от своих конкурентов. Несмотря на то, что домашние группы пользователей обменивались кодом во время своих встреч, операционные системы для машин-любителей (таких как CPM) были проприетарными. К 1980 году проприетарное программное обеспечение стало обычным делом.

    1.11.2. Свободные операционные системы В дополнение к удалению программного обеспечения и перераспределению, Ричард Столлман в 1984 году начал разработку бесплатной UNIX-совместимой операционной системы под названием GNU (которая является рекурсивным акронимом для «NotUnix GNU!»). Для Столлмана «бесплатно» означает свободу использования, а не цену: обменять копию на определенную сумму денег, но считает, что пользователи имеют право на четыре определенные свободы:

    1. свободно запускать программу,

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

    3. давать или продавать копии с оригинала или

    4. делать изменения и продавать или просто отдавать.

    В 1985 году Столлман опубликовал GNUM, который утверждает, что все программное обеспечение должно быть бесплатным. Он также создал Фонд свободного программного обеспечения (FSF) с целью поощрения использования и разработки свободного программного обеспечения. FSF использует авторские права на свои программы для реализации «copyleft», формы лицензирования, изобретенной Столлманом. Копирайтинг произведения дает любому человеку, обладающему копией произведения, четыре основных свободы, которые делают произведение свободным, с условием, что перераспределение должно сохранить эти свободы. Стандартная общественная лицензия GNU (GPL) - это общая лицензия, по которой выпускается свободное программное обеспечение. По сути, GPL требует, чтобы исходный код распространялся с любыми двоичными файлами, а все копии (включая модифицированные версии) должны выпускаться под той же лицензией GPL. Лицензия Creative Commons «Attribution Sharealike» также является лицензией с авторским левом; «Sharealike» - еще один способ сформулировать идею авторского лева.

    1.11.3 GNU / Linux В качестве примера бесплатной операционной системы с открытым исходным кодом рассмотрим GNU / Linux. К 1991 году операционная система GNU была почти завершена. Проект GNU разработал компиляторы, редакторы, утилиты, библиотеки и игры - какие бы части они не могли найти в другом месте. Однако ядро ​​GNU никогда не было готово к прайм-тайм. В 1991 году студент из Финляндии Линус Торвальдс выпустил элементарное UNIX-подобное ядро, используя компиляторы и инструменты GNU, и пригласил участников со всего мира. Появление Интернета означало, что любой желающий мог загрузить исходный код, изменить его и представить изменения в Torvalds. Выпуск обновлений один раз в неделю позволил этой так называемой операционной системе «Linux» быстро развиваться, улучшенной несколькими тысячами программистов. В 1991 году Linux не был свободным программным обеспечением, поскольку его лицензия позволяла только некоммерческое распространение. Однако в 1992 году Торвальдс повторно выпустил Linux под лицензией GPL, сделав его свободным программным обеспечением (а также, если позже использовать термин «открытый исходный код»). В результате операционная система GNU / Linux (с ядром, называемым Linux, но с полной операционной системой, включая инструменты GNU, называемые GNU / Linux) породила сотни уникальных дистрибутивов или пользовательских сборок системы. Основные дистрибутивы включают Red Hat, SUSE, Fedora, Debian, Slackware и Ubuntu. Распределения различаются по функциям, утилитам, установленным приложениям, поддержке оборудования, пользовательскому интерфейсу и назначению. Например, Red Hat Enterprise Linux предназначена для широкого коммерческого использования. PCLinuxOS - это live CD - операционная система, которая может загружаться и запускаться с CD-ROM без установки на загрузочный диск системы. Вариант PCLinuxOS, называемый PCLinuxOS Supergamer DVD - это альтернативный DVD, который включает в себя графические драйверы и игры. Геймер может запустить его на любой совместимой системе, просто загрузившись с DVD. Когда геймер завершит работу, перезагрузка системы переустановится на установленную операционную систему. Вы можете запустить Linux в системе Windows (или другой системе), используя следующий простой бесплатный подход:

    1. Загрузите бесплатный инструмент Virtualbox VMM с

    https://www.virtualbox.org/

    и установите его в своей системе.

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

    http://virtualboxes.org/images/

    Эти образы предустановлены с операционными системами и приложениями и включают в себя множество разновидностей GNU / Linux.

    3. Загрузите виртуальную машину в Virtualbox.

    Альтернативой использованию Virtualbox является использование бесплатной программы Qemu (http://wiki.qemu.org/Download/), которая включает команду qemu-img для преобразования образов Virtualbox в образы Qemu для упрощения их импорта. С этим описанием мы предоставляем образ виртуальной машины GNU / Linux с выпуском Ubuntu. Этот образ содержит исходный код GNU / Linux, а также инструменты для разработки программного обеспечения. Мы приводим примеры с изображением GNU / Linux по всему тексту, а также в детальном исследовании главы 20.

    1.11.4 BSD UNIX BSD UNIX имеет более длинную и сложную историю, чем Linux. Это началось в 1978 году как производное от UNIX от AT & T. Выпуски из Университета Калифорнии в Беркли (UCB) пришли в исходном и двоичном виде, но они не были открытыми, потому что требовалась лицензия от AT & T. Разработка BSD UNIX была замедлена судебным иском AT & T, но в итоге полностью функциональная, открытая версия 4.4 BSD-lite, был выпущен в 1994 году. Как и в Linux, существует множество дистрибутивов BSD UNIX, включая FreeBSD, NetBSD, OpenBSD и DragonflyBSD. Чтобы изучить исходный код FreeBSD, просто загрузите образ виртуальной машины интересующей версии и загрузите его в Virtualbox, как описано выше для Linux. Исходный код поставляется с дистрибутивом и хранится в / usr / src /. Исходный код ядра находится в / usr / src / sys. Например, чтобы изучить код реализации виртуальной памяти в ядре FreeBSD, посмотрите файлы в /usr/src/sys/vm. Альтернативно, вы можете просто просмотреть исходный код в Интернете по адресу https://svnweb.freebsd.org. Как и во многих проектах с открытым исходным кодом, этот исходный код содержится и контролируется системой контроля версий - в данном случае, «subversion» (https://subversion.apache.org/source-code). Системы контроля версий позволяют пользователю «вытягивать» целое дерево исходного кода на свой компьютер и «выталкивать» любые изменения обратно в хранилище, чтобы другие затем извлекали их. Эти системы также предоставляют другие функции, включая полную историю каждого файла и функцию разрешения конфликтов в случае одновременного изменения одного и того же файла. Другой системой контроля версий является git, который используется для GNU / Linux, а также для других программ (http://www.git-scm.com). Darwin, основной компонент ядра macOS, основан на BSD UNIX и также имеет открытый исходный код. Этот исходный код доступен по адресу http://www.opensource.apple.com/. Каждый релиз macOS имеет свои компоненты с открытым исходным кодом, размещенные на этом сайте. Название пакета, содержащего ядро, начинается с «xnu». Apple также предоставляет обширные инструменты разработчика, документацию и поддержку на http://developer.apple.com.

    ИССЛЕДОВАНИЕ ЭКСПЛУАТАЦИОННЫХ СИСТЕМ

    Никогда еще не было более интересного времени для изучения операционных систем, и, тем не менее, оно стало более легким периодом для создания разнообразных операционных систем. Открытое движение источника перешло на работу операционных систем, в результате чего многие из них стали доступны в обоих источниках и в двоичном (исполняемом) формате. Список операционных систем, доступных в обеих формах, включает Linux, BSD UNIX, Solaris и часть macOS. Наличие исходного кода позволяет нам изучать операционные системы изнутри. На вопросы, на которые мы могли бы когда-то ответить, только взглянув на документацию или поведение операционной системы, теперь мы можем ответить, изучив сам код. Операционные системы, которые больше не являются коммерчески жизнеспособными, также были с открытым исходным кодом, что позволяет нам изучать, как системы функционируют во время меньшего количества ресурсов ЦП, памяти и хранилища. Обширный, но неполный список проектов операционной системы с открытым исходным кодом доступен по адресу http://dmoz.org/Computers/Software/Operating Systems / Open Source /. Кроме того, термическая виртуализация как основная (и часто свободная) компьютерная функция позволяет запускать множество операционных систем поверх одной базовой системы. Например, VMware (http://www.vmware.com) предоставляет бесплатный «проигрыватель» для Windows, на котором могут работать сотни бесплатных «виртуальных устройств». Virtualbox (http://www.virtualbox.com) предоставляет бесплатный менеджер виртуальных машин с открытым исходным кодом во многих операционных системах. Используя такие инструменты, учащиеся могут получить сотни функционирующих систем без специального оборудования. В некоторых случаях также доступны симуляторы конкретного оборудования, позволяющие операционной системе работать на «родном» оборудовании, все в рамках современного компьютера и современной операционной системы. Например, симулятор DECSYSTEM-20, работающий в macOS, может загружать TOPS-20, загружать исходные ленты, а также модифицировать и компилировать новое ядро ​​TOPS-20. Заинтересованный студент может поискать в Интернете оригинальные документы, описывающие операционную систему, а также оригинальные руководства. Появление операционных систем с открытым исходным кодом также упростило переход от студента к разработчику операционной системы. Обладая определенными знаниями, некоторыми усилиями и подключением к Интернету, мы можем создать новый дистрибутив операционной системы. Не так много лет назад было трудно или невозможно получить доступ к исходному коду. Теперь такой доступ ограничен только тем, сколько у ученика интереса, времени и дискового пространства.

    1.11.5 Solaris Solaris - это коммерческая операционная система компании Sun Microsystems, основанная на UNIX. Первоначально операционная система SunOS компании Sun была основана на BSD UNIX. Sun перешла на AT & T System V UNIX в качестве своей базы в 1991 году. В 2005 году Sun открыла большую часть кода Solaris в качестве проекта OpenSolaris. Однако покупка Sun компанией Oracle в 2009 году оставила неясным состояние этого проекта. Несколько групп, заинтересованных в использовании OpenSolaris, расширили свои функции, и их рабочий набор - Project Illumos, который расширился от базы OpenSolaris, чтобы включить больше функций и стать основой для нескольких продуктов. Illumos доступен на http://wiki.illumos.org.

    1.11.6 Системы с открытым исходным кодом как средства обучения Движение за свободное программное обеспечение заставляет легионы программистов создавать тысячи проектов с открытым исходным кодом, включая операционные системы. Такие сайты, как http://freshmeat.net/ и http://distrowatch.com/ являются порталом для многих таких проектов. Как мы заявляли ранее, проекты с открытым исходным кодом позволяют учащимся использовать исходный код в качестве инструмента обучения. Они могут изменять программы и тестировать их, помогать находить и исправлять ошибки, а также исследовать зрелые, полнофункциональные операционные системы, компиляторы, инструменты, пользовательские интерфейсы и другие типы программ. Доступность исходного кода для исторических проектов, таких как Multics, может помочь учащимся разобраться в этих проектах и ​​построить знания, которые помогут в реализации новых проектов. Еще одно преимущество работы с различными системами - источниками – заключается в их разнообразии. Например, GNU / Linux и BSD UNIX являются операционными системами с открытым исходным кодом, но у каждой из них свои цели, утилиты, лицензирование и назначение. Иногда лицензии не являются взаимоисключающими, и происходит перекрестное опыление, что позволяет быстро улучшать проекты операционной системы. Например, несколько основных компонентов OpenSolaris были перенесены в BSD UNIX. Преимущества свободного программного обеспечения и открытых источников, вероятно, увеличат количество и качество проектов с открытым исходным кодом, что приведет к увеличению числа людей и компаний, которые используют эти проекты.

    1.12. Резюме

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

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

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

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

    • Энергонезависимое хранилище является расширением основной памяти и способно постоянно хранить большие объемы данных.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Бесплатные операционные системы с открытым исходным кодом доступны в формате исходного кода. Бесплатное программное обеспечение лицензируется для бесплатного использования, распространения и модификации. GNU / Linux, FreeBSD и Solaris являются примерами популярных систем с открытым исходным кодом.

    Практические упражнения

    1.1 Каковы три основных цели операционной системы?

    1.2. Мы нуждались в эффективном использовании вычислительной аппаратуры. Когда операционной системе целесообразно отказаться от этого принципа и «тратить» ресурсы? Почему такая система не совсем бесполезна?

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

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

    1.5. Каковы пути взаимодействия между режимом ядра и функцией пользователя как элементарной формы защиты (безопасности)?

    1.6 Какие из следующих инструкций должны быть привилегированными?

    1. Установите значение таймера.

    2. Читай часы.

    3. Очистка памяти.

    4. Выпустите инструкцию ловушки.

    5. Отключить прерывания.

    6. Модифицируйте записи в device-statustable.

    7. Переключиться из режима пользователя в режим ядра. час Доступ к устройству ввода / вывода.

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

    1.8. Некоторые ЦПУ предоставляют информацию о нескольких режимах работы. Каковы возможные варианты использования этих нескольких режимов?

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

    1.10. Приведите две причины полезности кэшей. Какие проблемы они решают? Какие проблемы они вызывают? Если кеш можно сделать таким большим, как устройство, для которого оно кэшируется (например, кэш размером с диск), почему бы не сделать его таким большим и исключить устройство?

    1.11. Различение клиент-серверных и одноранговых моделей распределенных систем.

    Дальнейшее чтение

    Многие общие учебники охватывают операционные системы, в том числе [Stallings (2017)] и [Tanenbaum (2014)].

    [HennessyandPatterson (2012)] обеспечивают общее представление об I / Osystems и шинах и системной архитектуре.

    [KuroseandRoss (2017)] предоставляет общий обзор компьютерных сетей.

    [Russinovichetal. (2017)] дает обзор Microsoft Windows и раскрывает значительные технические подробности о внутренних компонентах и ​​компонентах системы.

    [McDougall and Mauro (2007)] описывает внутреннюю часть операционной системы Solaris.

    Внутренние компоненты macOS и iOS обсуждаются в [Levin (2013)].

    [Левин (2015)] описывает внутреннюю часть Android.

    [Love (2010)] дает обзор операционной системы Linux и дает подробную информацию о структурах данных, используемых в ядре Linux.

    Фонд свободного программного обеспечения опубликовал свою философию на http://www.gnu.org/philosophy/free-software-for-freedom.html.

    Список используемой литературы

    [Hennessy and Patterson (2012)] J.HennessyandD.Patterson, Компьютерная архитектура: количественный подход, пятое издание, Morgan Kaufmann (2012).

    [Kurose and Ross (2017)] J. Kurose и K. Ross, Компьютерные сети - подход ATop– Down, седьмое издание, Addison-Wesley (2017).

    [Левин (2013)] Дж. Левин, Mac OS X и iOS Internals для ядра Apple, Wiley (2013).

    [Левин (2015)] Дж. Левин, Android Internals - Поваренная книга кондитера. Том I (2015).

    [Любовь (2010)] Р. Лав, Разработка ядра Linux, третье издание, Библиотека разработчика (2010).

    [McDougall and Mauro (2007)] R. McDougall и J. Mauro, Solaris Internals, Second Edition, Prentice Hall (2007).

    [Руссинович и др. (2017)] М.Русинович, Д.А.Соломон и А.Ионеску, Windows Internals - часть 1, седьмое издание, Microsoft Press (2017).

    [Stallings (2017)] W. Stallings, операционные системы, внутреннее оборудование и принципы проектирования (9-е издание), девятое издание, Prentice Hall (2017).

    [Tanenbaum (2014)] A. S. Tanenbaum, Современные операционные системы, Prentice Hall (2014).

    Глава 1 Упражнения

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

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

    1.14 Какова цель прерываний? Чем прерывание отличается от ловушки? Могут ли ловушки генерироваться намеренно пользовательской программой? Если да, то с какой целью?

    1.15. Объяснить, как переменные ядра Linux HZ и jiffies можно использовать для определения количества секунд, в течение которых система работала с момента загрузки.

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

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

    б. Как процессор узнает, когда операции с памятью завершены?

    с. ЦПУ разрешено выполнять другие программы, пока контроллер DMA передает данные. Этот процесс мешает выполнению пользовательских программ? Если да, опишите, какие формы помех вызваны.

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

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

    1.19. Оцените следующие системы хранения от самых медленных до самых быстрых:

    1. Жесткие диски

    2. Регистры

    3. Оптический диск

    4. Основная память

    5. Энергонезависимая память

    6. Магнитные ленты.

    7. Cache

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

    1.21. Обсудите на примерах, как проблема поддержания согласованности кэшированных данных проявляется в следующих средах обработки:

    1. Однопроцессорные системы

    2. Многопроцессорные системы

    3. Распределенные системы

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

    1.23 Какая конфигурация сети - LAN или WAN - лучше всего подходит для следующих сред?

    а. Студенческий союз Акампус

    б. Несколько кампусов в общегосударственной университетской системе

    c. Окрестности

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

    1.25 Каковы некоторые преимущества одноранговых систем над системами клиент-сервер?

    1.26. Описать некоторые распределенные приложения, которые подходят для одноранговой системы.

    1.27. Определить несколько преимуществ и несколько недостатков операционных систем с открытым исходным кодом. Определите типы людей, которые сочли бы каждый аспект преимуществом или недостатком.
    1   2   3   4   5   6   7


    написать администратору сайта