Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ekzamen korabliov.doc
Скачиваний:
78
Добавлен:
22.02.2016
Размер:
2.25 Mб
Скачать

1) Определение операционных систем

2) Свойство современных ОС

3) Структура построения ОС(иерархическая и неирерархическая)

4) Свободное программное обеспечение gnu gpl.

5) ОС Linux. Создание.

6) Архитектура Linux.

7) Стандартизация(классификация) ядра и модуля ОС Linux.

8) Понятия дистрибутивов ОСLinux. Основные разработчики ОСLinux.

9) Дистрибутив ОСLinux. Понятие репозитория, менеджер пакетов.

10) Структура дистрибутивов ОСLinux.

11) Дистрибутив OC Linux Debian.

12) Менеджер пакетов АРТ.

13) Структура файловой системы Debian.

14) Структура каталога Debian.

15) Консольная оболочка Bash.

16) Текстовый редактор win, nano.

17) Основные способы установки debian.

18) Установка debian, разделы жесткого диска.

19) Установка debian, выбор компонентов для установки.

20) Интерпретатор Bash.

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

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

ОС как расширенная машина

Использование большинства компьютеров на уровне машинного языка затруднительно, особенно это касается ввода-вывода. Например, для организации чтения блока данных с гибкого диска программист может использовать 16 различных команд, каждая из которых требует 13 параметров, таких как номер блока на диске, номер сектора на дорожке и т. п. Когда выполнение операции с диском завершается, контроллер возвращает 23 значения, отражающих наличие и типы ошибок, которые, очевидно, надо анализировать. Даже если не входить в курс реальных проблем программирования ввода-вывода, ясно, что среди программистов нашлось бы не много желающих непосредственно заниматься программированием этих операций. При работе с диском программисту-пользователю достаточно представлять его в виде некоторого набора файлов, каждый из которых имеет имя. Работа с файлом заключается в его открытии, выполнении чтения или записи, а затем в закрытии файла. Вопросы подобные таким, как следует ли при записи использовать усовершенствованную частотную модуляцию или в каком состоянии сейчас находится двигатель механизма перемещения считывающих головок, не должны волновать пользователя.

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

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

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

ОС как система управления ресурсами

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

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

Управление ресурсами включает решение двух общих, не зависящих от типа ресурса задач:

1. планирование ресурса - то есть определение, кому, когда, а для делимых ресурсов и в каком количестве, необходимо выделить данный ресурс;

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

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

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

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

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

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

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

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

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

Монолитные системы

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

Рис. 4.1. Монолитная структура ОС

Для построения монолитной системы необходимо скомпилировать все отдельные процедуры, а затем связать их вместе в единый объектный файл с помощью компоновщика (примерами могут служить ранние версии ядра UNIX или Novell NetWare). Каждая процедура видит любую другую процедуру ( в отличие от структуры, содержащей модули, в которой большая часть информации является локальной для модуля, и процедуры модуля можно вызвать только через специально определенные точки входа).

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

1. Главная программа, которая вызывает требуемые сервисные процедуры.

2. Набор сервисных процедур, реализующих системные вызовы.

3. Набор утилит, обслуживающих сервисные процедуры.

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

Рис. 4.2. Простая структуризация монолитной ОС

Многоуровневые системы

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

Первой системой, построенной таким образом была простая пакетная система THE, которую построил Дейкстра и его студенты в 1968 году.

Система имела 6 уровней. Уровень 0 занимался распределением времени процессора, переключая процессы по прерыванию или по истечении времени. Уровень 1 управлял памятью - распределял оперативную память и пространство на магнитном барабане для тех частей процессов (страниц), для которых не было места в ОП, то есть слой 1 выполнял функции виртуальной памяти. Слой 2 управлял связью между консолью оператора и процессами. С помощью этого уровня каждый процесс имел свою собственную консоль оператора. Уровень 3 управлял устройствами ввода-вывода и буферизовал потоки информации к ним и от них. С помощью уровня 3 каждый процесс вместо того, чтобы работать с конкретными устройствами, с их разнообразными особенностями, обращался к абстрактным устройствам ввода-вывода, обладающим удобными для пользователя характеристиками. На уровне 4 работали пользовательские программы, которым не надо было заботиться ни о процессах, ни о памяти, ни о консоли, ни об управлении устройствами ввода-вывода. Процесс системного оператора размещался на уровне 5.

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

Дальнейшее обобщение многоуровневой концепции было сделано в ОС MULTICS. В системе MULTICS каждый уровень (называемый кольцом) является более привилегированным, чем вышележащий. Когда процедура верхнего уровня хочет вызвать процедуру нижележащего, она должна выполнить соответствующий системный вызов, то есть команду TRAP (прерывание), параметры которой тщательно проверяются перед тем, как выполняется вызов. Хотя ОС в MULTICS является частью адресного пространства каждого пользовательского процесса, аппаратура обеспечивает защиту данных на уровне сегментов памяти, разрешая, например, доступ к одним сегментам только для записи, а к другим - для чтения или выполнения. Преимущество подхода MULTICS заключается в том, что он может быть расширен и на структуру пользовательских подсистем. Например, профессор может написать программу для тестирования и оценки студенческих программ и запустить эту программу на уровне n, в то время как студенческие программы будут работать на уровне n+1, так что они не смогут изменить свои оценки.

Многоуровневый подход был также использован при реализации различных вариантов ОС UNIX.

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

4) GNU General Public License (переводят как Универсальная общественная лицензия GNUУниверсальная общедоступная лицензия GNU или Открытое лицензионное соглашение GNU) — лицензия на свободное программное обеспечение, созданная в рамках проекта GNU в 1988 г., по которой автор передаёт программное обеспечение в общественную собсHYPERLINK "https://ru.wikipedia.org/wiki/Общественная_собс"тHYPERLINK "https://ru.wikipedia.org/wiki/Общественная_собс"венностьHYPERLINK "https://ru.wikipedia.org/wiki/GNU_General_Public_License#cite_note-1"[1]. Её также сокращённо называют GNU GPL или даже просто GPL, если из контекста понятно, что речь идёт именно о данной лицензии (существует довольно много других лицензий, содержащих слова «general public license» в названии). Вторая версия этой лицензии была выпущена в 1991 году, третья версия, после многолетней работы и длительной дискуссии — в 2007 годуGNU Lesser General Public License (LGPL) — это ослабленная версия GPL, предназначенная для некоторых библиотек ПО.GNU Affero General Public License — это усиленная версия GPL для программ, предназначенных для доступа к ним через сеть[2].

Цель GNU GPL — предоставить пользователю права копировать, модифицировать и распространять (в том числе на коммерческой основе) программы, а также гарантировать, что и пользователи всех производных программ получат вышеперечисленные права[Прим. 1]. Принцип «наследования» прав называется «копилефт» (транслитерация c англ. copyleft) и был придуман Ричардом Столлманом. По контрасту с GPL, лицензии проприетарного ПО «очень редко дают пользователю такие права и обычно, наоборот, стремятся их ограничить, например, запрещая восстановление исходного кода»[3].

Согласно подготовленным Фондом разъяснениям по применению лицензии GNU GPL к конкретным лицензируемым программам (эти разъяснения приложены к размещенному на сайте Фонда тексту лицензии), лицензия должна в электронной форме присоединяться к компьютерной программе[4].

Лицензируя работу на условиях GNU GPL, автор сохраняет за собой авторство[Прим. 2].

GNU GPL не позволяет включать программу в проприетарное ПО. Если данная программа является библиотекой, вероятно, лучшим будет разрешить проприетарному ПО линковаться с ней. Для данной цели необходимо использовать GNU Lesser General Public License вместо GPL[5].

GPL предоставляет получателям компьютерных программ следующие права, или «свободы»[6]:

  • свободу запуска программы с любой целью;

  • свободу изучения того, как программа работает, и её модификации (предварительным условием для этого является доступ к исходному коду);

  • свободу распространения копий как исходного, так и исполняемого кода;

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

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

GPL была написана Ричардом Столлманом для использования с программами как часть проекта GNU. Она базируется на сходных лицензиях, использовавшихся для ранних версий GNU EmacsGDB (отладчика GNU) и Коллекции компиляторов GNU (GCC), унифицирует и обобщает их.

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

В чем заключается причина популярности Unix? Многие хакеры чувствуют, что Unix — это «правильная штука», Единственная Настоящая Операционная Система. Отсюда следует и разработка Linux все более расширяющейся группой энтузиастов Unix, которые хотят поко-выряться с собственной системой.

Существуют версии Unix для многих систем от персонального компьютера до суперкомпьютеров, таких как Cray Y-MP. Большинство версий Unix для персональных компьютеров достаточно дороги и сложны.

Linux - свободно распространяемая версия Unix, первоначально разработанная Линусом Торвальдсом (Linus Torvalds), начавшим работу над ней, будучи студентом Хельсинкского университета в Финляндии. Сейчас Линус работает в Transmeta Corporation, молодой фирме в го­роде Санта-Клара в Калифорнии, и продолжает поддерживать ядро Linux, т. е. основной низкоуровневый компонент операционной системы.

Линус поместил первоначальную версию Linux в Интернете для бесплатного использования, непреднамеренно породив при этом один из крупнейших феноменов всех времен в разработке программного обеспечения. Сегодня Linux создается и поддерживается группой, состоящей из нескольких тысяч, если не больше, разработчиков, свободно сотрудничающих между собой при помощи Интернета. Некоторые компании стали обеспечивать поддержку Linux, создавать легкие для установки дистрибутивы этой системы и продавать рабочие станции с предустановленной на них Linux. В марте 1999 года в Сан-Хосе в Калифорнии состоялась первая всемирная выставка Linux World Expo, которую, как сообщалось, посетило 12000 человек. По многочислен­ным оценкам число пользователей Linux в мире находится около 10-миллионной отметки (сейчас, когда вы это читаете, оно, вероятно, еще больше).

Первоначально Linux создавался Линусом Торвальдсом как курсовая работа, вдохновением для которой послужила созданная Эндрю Та-ненбаумом (Andrew Tanenbaum) операционная система Minix (еще одна бесплатная реализация Unix для PC, хотя и совсем простенькая). Линус хотел создать простую Unix-систему, которая могла бы работать на 386-м PC. Первое обсуждение Linux состоялось в рамках телеконференции Usenet comp.os.minix. Это обсуждение касалось, в основном, создания маленькой Unix-системы для учебных и научных заведений и тех пользователей, которым хотелось чего-то большего, чем Minix.

Версия Linux 0.01 никогда не анонсировалась. Из исходных текстов версии 0.01 нельзя было даже получить исполняемый код: в них были лишь зачатки ядра, и предполагалось наличие доступа к машине, работающей под Minix, чтобы откомпилировать их и повозиться с ними.

5 октября 1991 года Линус объявил о первой «официальной» версии Linux, версии 0.02. К этому моменту в Linux уже работали bash (GNU Bourne Again Shell) и gcc (GNU С compiler), но больше почти ничего. По-прежнему эта система предназначалась для хакеров. Внимание было сосредоточено на создании ядра. Никакие вопросы поддержки пользователей, документации, распространения и т. п. даже не обсуждались. Сегодня ситуация в корне изменилась: мир Linux в основном озабочен графическими средами пользователей, созданием простых в установке дистрибутивов и приложениями высокого уровня, такими как графические утилиты и офисные пакеты.

После версии 0.03 Линус сразу перескочил в нумерации к версии 0.10. В это время над проектом стало работать много людей. После нескольких последующих исправлений Линус присвоил очередной версии номер 0.95, чтобы тем самым показать, что до «официальной» вер­сии уже совсем недалеко. (Обычно программа получает номер версии 1.0, когда теоретически она завершена и отлажена.) Это произошло в марте 1992 года. Прошло почти полтора года, и в конце декабря 1993 года версия ядра все еще имела название Linux 0.99.pll4, асимптотически приближаясь к 1.0. Версия 1.0 появилась в марте 1994 года. Во время написания книги (март 1999 года) текущая версия стабильного ядра имеет номер 2.2.6, и одновременно разрабатываются

версии 2.3 (ниже мы подробнее обсудим принципы нумерации версий Linux).1

Linux не смогла бы появиться без инструментария GNU, созданного Free Software Foundation. Компилятор gcc, о котором мы расскажем в главе 13 «Языки программирования», дал жизнь коду Линуса Тор-вальдса. С самого начала инструментарий GNU тесно взаимодействует с разработкой Linux. Поскольку инструментарий GNU внес значительный вклад в Linux, Free Software Foundation даже требует, чтобы дистрибутивы Linux с сопровождающими утилитами назывались GNU/Linux.

Разработанная в Университете Беркли операционная система Berkeley Unix (BSD) также сыграла важную роль в отношении Linux - не столько в ее создании, сколько в предоставлении инструментов, которые делают ее популярной. Большая часть утилит, входящих в дистрибутивы Linux, перенесена из BSD. Особую важность представляют демоны и сетевые утилиты. Поддержка сети в ядре Linux была разработана с нуля (фактически, дважды или трижды), но демоны и утилиты - это классика BSD.

Сегодня Linux является полноценным клоном Unix. Под ним работают X Window, TCP/IP, Emacs, Web, программы для работы с электронной почтой и телеконференциями - трудно все перечислить. Почти все основные свободно распространяемые программные пакеты перенесены на Linux. На практике многие разработчики сначала пишут свои приложения для Linux, а затем переносят их на другие Unix-системы. Поддерживается большее разнообразие аппаратных средств, чем в первоначальных версиях ядра. Было выполнено много тестов производительности Linux-систем, которые показали, что они работают быстрее рабочих станций Sun и Compaq. В большом числе тестов Li-nux-системы работают лучше или, по крайней мере, не хуже, чем Windows 98 или Windows NT. Кто мог предположить, что этот «ма­ленький» Unix вырастет настолько, что бросит вызов целому миру персональных компьютеров и серверов?

6 Архитектура ос Linux. Ядро, файловая система, компоненты.

Операционная система GNU/Linux, которую чаще называют просто "Linux", на самом деле состоит из двух основных частей: собственно ядра системы - Linux и наборапрограмм и инструментов проекта GNU, включающего в себя элементы звуковой и графической подсистем, рабочие столы, различные прикладные приложения и т.п.

Ядро Linux и его загрузка

Linux - монолитное (большое) ядро операционной системы. Оно включает в себя все необходимые для работы системы драйверы (графические X11 и звуковые ALSA в т.ч.) и функционирует логически целостно. Однако, Linux так же поддерживает и динамическое, "горячее", подключение внешних модулей для поддержки оборудования, в виде которых и распространяются, например, закрытые (проприетарные) драйверы для видеокарт NVidia и AMD/ATI.

Загрузкой ядра Linux при старте операционной системы в большинстве случаев управляет универсальный загрузчик Grub (хотя встречаются и конфигурации с загрузчиком LILO), код которого может записываться как в загрузочный сектор основного носителя данных, так и одного из его логических разделов (для активации загрузочным флагом впоследствии). Файлы конфигурации Grub при этом как правило хранятся в "корневом" разделе установленной операционной системы, в папке /boot/grub. Таким образом вы можете использовать несколько полностью независимых установок Grub, Linux, других загрузчиков и ОС, при необходимости.

7 Типы архитектур ядер операционных систем[править | править вики-текст] Монолитное ядро[править | править вики-текст]

Основная статья: Монолитное ядро

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

  • Достоинства: Скорость работы, упрощённая разработка модулей.

  • Недостатки: Поскольку всё ядро работает в одном адресном пространстве, сбой в одном из компонентов может нарушить работоспособность всей системы.

Примеры: Традиционные ядра UNIX (такие как BSD), Linux; ядро MS-DOS, ядро KolibriOS.

Некоторые старые монолитные ядра, в особенности систем класса UNIX/Linux, требовали перекомпиляции при любом изменении состава оборудования. Большинство современных ядер позволяют во время работы подгружатьмодули, выполняющие часть функций ядра. В этом случае компоненты операционной системы являются не самостоятельными модулями, а составными частями одной большой программы, называемой монолитным ядром (monolithic kernel), которое представляет собой набор процедур, каждая из которых может вызвать каждую. Все процедуры работают в привилегированном режиме.

Модульное ядро[править | править вики-текст]

Основная статья: Модульное ядро

Модульное ядро — современная, усовершенствованная модификация архитектуры монолитных ядероперационных систем.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]