UNIX-подобные и другие POSIX-совместимые операционные

advertisement
1. Эволюция систем.
Что такое операционная система?
1. Минималистское определение
Операционная система - это программа, именуемая ядром ОС.
Что применительно, например, к Linux, должно трактоваться так,
что под это определение подпадает только разрабатываемое
Линусом сотоварищи ядро. А все, что существует в составе любого
Linux-дистрибутива помимо оного, суть системные утилиты и
пользовательские приложения, к самой ОС отношения не
имеющие.
1. Эволюция систем.
Что такое операционная система?
2. Максималистское определение (последовательно проводится
Microsoft с ее Windows любого рода.)
Операционная система - это не только ядро, но и все его
системное окружение, и графический интерфейс, и даже
программы, которые испокон веков относились к категории
пользовательских приложений - браузеры, например.
С позиции Microsoft состав операционной системы определяется
исключительно произволом производителя ОС. "Ну а вздумается,
скажем, ихнему цеху" объявить завтра неотъемлемым
компонентом ОС не только Internet Explorer, но и MS Word с
Excell'ем? И получится, что кроме ОС, и программ-то других не
бывает.
1. Эволюция систем.
Что такое операционная система?
3. Формулировки придерживаются разработчики BSD-систем*
Операционная система – «это ядро и самодостаточный
комплекс средств, необходимых для его функционирования на
благо пользователя» (Алексей Федорчук «Введение в
POSIX'ивизм»).
То есть пользователь любой ОС, загрузив ее, должен иметь
возможность в первую очередь устанавливать, не обращаясь ни к
каким сторонним инструментам, необходимое ему программное
обеспечение, запускать его и работать с ним.
*ПРИМЕЧАНИЕ
BSD (англ. Berkeley Software Distribution) — система распространения программного
обеспечения в исходных кодах, созданная для обмена опытом между учебными
заведениями. Особенностью пакетов ПО BSD была специальная лицензия BSD, которую
кратко можно охарактеризовать так: весь исходный код — собственность BSD, все
правки — собственность их авторов.
1. Эволюция систем.
Что такое операционная система?
Другой подход
1. Операционная система – это расширенная машина.
Операци
онная
система
Операци
онная
система
Операци
онная
система
1. Эволюция систем.
Что такое операционная система?
Другой подход
2. Операционная система – это менеджер ресурсов.
Мультиплексирование
Разделение ресурсов во времени (центральный процессор,
принтер) и пространстве (оперативная память).
1. Эволюция систем.
Исследовательский центр Bell Labs — подразделение
компании AT&T.
В 1957 году в лаборатории начали
разрабатывать операционную систему, которая
получила название BESYS (сокращение от Bell
Operating System). Руководителем проекта был
Виктор Высотский — сын русского астронома,
эмигрировавшего в Америку.
IBM 704
В первую очередь BESYS
предназначалась для пакетного
выполнения большого количества
программ, то есть таким образом, когда
задается список программ, и их
выполнение планируется таким
образом, чтобы занимать максимально
возможные ресурсы, чтобы компьютер
не простаивал.
1. Эволюция систем.
1956 год
TX-0 (сокр. от англ. Transistorized Experimental computer zero),
также упоминаемый как tixo (произносится «тиксо») — один из
первых компьютеров созданных полностью на транзисторной базе
и имевший для своего времени огромный объём памяти на
магнитных сердечниках в 64К 18-битных слов.
TX 0 - Компьютер, который занимал небольшую комнату, но в
конце пятидесятых эта машина, стоимостью в $3 миллиона
долларов была первым в мире персональным компьютером, возле
которого сформировалось сообщество хакеров МТИ.
1. Эволюция систем.
1959 год
«Когда TX-0 привезли в МТИ, ее немного "раздели" по сравнению с
тем оснащением, которое у нее было в стенах Lincoln Lab. Была
существенно уменьшена память; до 4,096 "слов" из восемнадцати
битов каждое. ("Бит" ' двоичная цифра: 1 или 0. Эти двоичные
числа – единственное, что понимают компьютеры.
Последовательность из двоичных чисел представляет собой
"слово"). Кроме того, TX-0 не имел почти никакого программного
обеспечения. Поэтому Джек Дэннис, еще до того как он показал
TX-0 ребятам из TMRC , написал "системные программы", то есть
такое программное обеспечение, которое помогало пользователям
работать с машиной.»
Стивен Леви
1. Эволюция систем.
1961 год
Digital Equipment Corporation (DEC)
PDP-1 (Programmed Data Processor («Процессор Данных,
Программируемый») $120,000
Системное ПО + Ассемблер
«В начале 60-х годов, МТИ получило долгосрочный грант
на работы связанные с проектом системы с разделением времени,
который назывался Project MAC (по первым буквам (Multiple Access
Computing – Вычисления с Множественным Доступом)).
Дядя Сэм «откашливал» на это дело по три миллиона долларов в год.»
Стивен Леви
1. Эволюция систем.
Первая система с разделением времени работала с середины 60-х
годов, и назвалась Compatible Time'sharing System (CTSS) (Совместимая
система с разделением времени).
CTSS была полностью написана одним человеком, профессором МТИ, по
имени Ф. Дж. Корбейт. С многих точек зрения это была виртуозная работа,
тщательно написанная и готовая к запуску на IBM 7094.
1963 год (подготовлена спецификация Multics Джеком Дэннисом)
Другая, очень дорогая, которую долго готовили к выходу в свет,
называлась Multics (сокращение от слов Multiplexed Information and
Computing Service). (Система создавалась на языке программирования PL/1,
разработанном IBM)
Multics создавался в сотрудничестве MIT с General Electric, затем к
разработке подключилась Honeywell.
В Multics была мощная система безопасности, а также система
биллинга пользовательских ресурсов.
Первый релиз – октябрь 1969 года. Выпускалась до 1992 года.
1. Эволюция систем.
1964 год
PDP-6
36-битная машина с
разделением времени.
Считался большим
миникомпьютером или
мейнфреймом.
Признаком того, что эта система на PDP-6 отличается от остальных (такой,
например, как Совместимая Система с Разделением Времени CTSS) было
название, которое дал этой хакерской программе Том Найт:
Несовместимая система с разделением времени
(Incompatible Time'sharing System (ITS))
Как и в любой системе разделения времени, на ITS несколько
пользователей могли запускать несколько программ одновременно. Но в
этой системе один пользователь мог одновременно запускать несколько
программ.
1. Эволюция систем.
1969 год
Компьютерная игра «Space Travel» —
космическая леталка, которую
написал Кен Томпсон, была
рассчитана сначала на операционную
систему Multics. Чтобы портировать
игру на PDP – 7 требовалось написать
новую операционную систему
PDP - 7
Так зародился Unics (Uniplexed Information and
Computing System).
Первые версии ядра Unics были написаны на
ассемблере занимали всего 12 кБ оперативной памяти
против 135 кБ у Multics.
В разработке Unics приняли участие сам Томпсон,
Денис Ритчи, позже к ним присоединились Дуглас
Макилрой, Джои Оссанна и Рад Кеннедей.
1. Эволюция систем.
1970 год
Реализована многозадачность, операционку
переименовали в UNIX и перестали считать
сокращением. Именно этот год считается
официальным годом рождения UNIX, и именно от
первого января 1970 года отсчитывается системное
время (количество секунд, начиная с этой даты). Эту
же дату называют более пафосно — начало эры UNIX
(по-английски — UNIX Epoch).
PDP - 11
К 1971 году UNIX была уже полноценной
операционной системой и Bell Labs даже застолбила за
собой торговую марку UNIX. В этом же году UNIX была
переписана для работы на более мощном компьютере
PDP-11, и именно в этом году вышла первая
официальная версия UNIX (ее еще называют First
Edition).
1. Эволюция систем.
Помните, нас все пугали проблемой 2000-го года?
Так вот подобная проблема нас ждет еще в 2038
году, когда для представления времени не будет
хватать 32-битных целых чисел, которые часто
используются для определения даты, и время с
датой станут отрицательными. Хочется верить,
что к этому времени весь жизненно важный софт
будет использовать для этой цели 64-битные
переменные, чтобы отодвинуть эту страшную дату
еще на 292 миллиона лет, а там уж что-нибудь
придумаем.
1. Эволюция систем.
Параллельно с разработкой Unics/UNIX Кен
Томпсон и Денис Ритчи, начиная с 1969 года,
разрабатывали новый язык B (Би), который был
основан на языке BCPL, а тот, в свою очередь,
можно считать потомком языка Algol-60.
Ритчи предложил переписать UNIX на B, который
был переносимый, хотя и интерпретируемый,
после чего он продолжил модифицировать этот
язык под новые нужды. В 1972 году вышла вторая
версия UNIX — Second Edition, которая была
написана практически полностью на B, на
ассемблере оставался довольно небольшой
модуль примерно в 1000 строк, так что перенос
UNIX на другие компьютеры теперь давался
сравнительно легко. Так UNIX стал портируемым.
Язык B развивался вместе с UNIX, пока из него не родился язык C.
В 1973 году вышла третья редакция UNIX со встроенным компилятором
языка C, а начиная с 5-й версии, появившейся на свет в 1974 году,
считается, что UNIX был переписан полностью на C.
1. Эволюция систем.
Появление BSD
Размножению этой операционной системы во
многом поспособствовали американские
чиновники, еще до рождения UNIX, в 1956 году,
наложившие ограничения на компанию AT&T,
которой принадлежала лаборатория Bell Labs.
Министерство юстиции вынудило AT&T подписать соглашение,
запрещавшее компании заниматься деятельностью, не связанной с
телефонными и телеграфными сетями и оборудованием, но к 70-ым
годам AT&T уже поняли, какой удачный проект получился из UNIX и
захотели сделать его коммерческим. Для того, чтобы чиновники
разрешили им это сделать, AT&T передала исходники UNIX некоторым
американским вузам.
Одним из таких вузов, имевших доступ к исходникам был
Калифорнийский университет в Беркли
В 1978 году появилась первая UNIX-совместимая система, созданная не в
стенах AT&T. Это был BSD UNIX.
1. Эволюция систем.
BSD (Berkeley Software Distribution) UNIX –
Вторая версия BSD, вышедшая в 1979 году
включала в себя такие известные программы,
как vi и C Shell
FreeBSD
1. Эволюция систем.
1983 год
Solaris
SunOS 1.0 основана на коде 4.1 BSD. SunOS
регулярно обновлялась вплоть до 1994 года,
Переименована в Solaris
2005 год
Solaris 10 и проект OpenSolaris
Начало 2010 года
ORACLE Solaris
1. Эволюция систем.
1987 год
UNIX-подобная система Minix. Первая версия
Minix вышла вместе с первым изданием книги
«Операционные системы: разработка и
реализация» в 1987 году. Авторы: Эндрю
Таненбаум и Альберт Вудхалл.
Последняя на данный момент версия Minix
3.2.0 появилась на свет в июле 2011 года
7 сентября 1983 года появился проект GNU, что
переводится как «Gnu is Not UNIX». Первой
программой, относящейся к GNU стал EMACS
(семейство многофункциональных расширяемых
текстовых редакторов). В рамках же проекта GNU
в 1988 году была разработана собственная
лицензия GNU GPL — GNU General Public License,
которая обязывает авторов программ на основе
исходников, распространяющихся под этой
лицензией, также открывать исходники под
лицензией GPL.
Эндрю Таненбаум
профессор
Амстердамского
свободного университета
Ричард Столлман
1. Эволюция систем.
25 августа 1991 года в конференции
comp.os.minix появилось следующее
историческое сообщение: «Привет всем
пользователям minix! Я тут пишу
(бесплатную) операционную систему
(любительскую версию — она не будет такой
большой и профессиональной, как gnu) для
386-х и 486-х AT. Я вожусь с этим с апреля, и
она, похоже, скоро будет готова. Напишите
мне, кому что нравится/не нравится в minix,
поскольку моя ОС на нее похожа (кроме всего
прочего, у нее — по практическим
соображениям — то же физическое
размещение файловой системы). Пока что я
перенес в нее bash (1.08) и gсс (1.40) [GNU C
Compiler], и все вроде работает. Значит, в
ближайшие месяцы у меня получится уже
что-то работающее, и мне бы хотелось
знать, какие функции нужны большинству.
Все заявки принимаются, но выполнение не
гарантируется :-)»
Линус Торвальдс
1. Эволюция систем.
17 сентября 1991 года Линус Торвальдс
впервые выложил на публичный FTP-сервер
свою операционную систему (он назвал ее
Freax), но…
Название Linux укрепилось, потому что адрес,
куда была выложена операционная система
выглядела как ftp.funet.fi/pub/OS/Linux.
Ари Лемке — преподавателю, который выделил
Линусу место на сервере, показалось, что
Freax выглядит не очень презентабельно, и он
назвал директорию «Linux» — как смесь имени
автора и «x» на конце от UNIX.
Линус Торвальдс
1. Эволюция систем.
Android Inc, появившейся в 2003 году +
Google = первый релиз Android состоялся 22
октября 2008 года, после чего у него регулярно
стали выходить новые версии
Android — не единственный мобильный
представитель Linux, кроме него есть еще
операционная система MeeGo. Если за спиной
Android стоит такая мощная корпорация, как
Google, то у MeeGo одного сильного попечителя
нет, она разрабатывается сообществом под
эгидой The Linux Foundation, которому
помогают такие компании как Intel, Nokia, AMD,
Novell, ASUS, Acer, MSI и другие.
Еще один мобильный Linux — Openmoko
1. Эволюция систем.
Mac OS X
После изгнания Стива Джобса из Apple в
1985 году он основал компанию NeXT,
которая занималась разработкой
компьютеров и софта к ним.
В компанию NeXT попал программист Аветис Теванян,
который до этого занимался разработкой микроядра
Mach для UNIX-совместимой операционной системы,
разрабатываемой в Carnegie Mellon University. Ядро Mach
должно было заменить собой ядро BSD UNIX.
Аветис Теванян был лидером команды, разрабатывающей новую UNIXсовместимую операционную систему, которая получила название
NeXTSTEP. NeXTSTEP была основана на том же ядре Mach. С точки зрения
программирования, NeXTSTEP, в отличие от многих других операционных
систем, являлась объектно-ориентированной, огромную роль в ней играл
язык программирования Objective-C, который сейчас широко
используется в Mac OS X. Первая версия NeXTSTEP была выпущена в 1989
году.
1. Эволюция систем.
Mac OS X
В 1996 году компания Apple
предложила Джобсу купить
компанию NeXT с тем, чтобы
использовать NeXTSTEP вместо
Mac OS
В 1997 году Джобс вернулся в Apple, при нем продолжилась политика
приспособления NeXTSTEP для компьютеров Apple, а еще через
несколько лет эта операционная система была портирована на
процессоры PowerPC и Intel.
Серверная версия Mac OS X (Mac OS X Server 1.0) вышла в 1999 году, а в
2001 вышла операционная система для конечных пользователей — Mac
OS X (10.0).
Позже, на основе Mac OS X была разработана операционная система для
телефонов iPhone, которая получила название Apple iOS. Первая версия
iOS вышла в 2007 году. На этой же операционной системе работает и iPad
1. Эволюция систем.
Что такое POSIX?
POSIX - это стандарт, описывающий интерфейс между операционной
системой и прикладной программой.
Фактически, этот стандарт описывает то, как программа должна вызывать
системные функции для того, чтобы свободно запускаться под всеми
операционными системами, отвечающими данному стандарту.
Сама аббревиатура POSIX расшифровывается как Portable Operating System
Interface for UNIX (Переносимый интерфейс операционных систем Unix).
Стандарт POSIX не накладывает никаких ограничений на фантазию
разработчиков операционных систем в плане реализации тех или иных
функций, которые он описывает.
Международная организация по стандартизации (ISO) совместно c
Международной электротехнической комиссией (IEC) приняли данный
стандарт (POSIX) под названием ISO/IEC 9945.
Название «POSIX» было предложено Ричардом Столлманом
1. Эволюция систем.
Что такое POSIX?
2. Принципы организации и структура ОС
Монолитные системы – вся ОС работает как единая
программа в режиме ядра (Э.Таненбаум).
1. Основная процедура вызывает требуемую служебную процедуру
2. Служебная процедура выполняет служебный вызов (одна процедура –
один служебный вызов)
3. Вспомогательные процедуры выполняют действия, необходимые
нескольким служебным процедурам.
4. Загружаемые расширения: драйверы устройств ввода-вывода, файловые
системы.
2. Принципы организации и структура ОС
Многоуровневые системы – вся ОС является иерархией
уровней, каждый из которых является надстройкой над
нижележащим уровнем (Э.Таненбаум).
На примере системы THE (Technische Hogeschool Eindhoven) 1968 год
Уровень
5
4
3
2
1
0
Функция
Оператор
Программы пользователя
Управление вводом-выводом
Связь оператора с процессом
Управление основной памятью и магнитным барабаном
Распределение ресурсов процессора и
обеспечение многозадачного режима
Развитие концепции – OS MULTICS
2. Принципы организации и структура ОС
Микроядра – вся ОС разбита на небольшие вполне
определенные модули. Только один из них – микроядро запускается в режиме ядра, остальные в виде обычных
пользовательских процессов(Э.Таненбаум).
Предпосылки: 10 ошибок на 1000 строк кода. А если монолит 5 000 000 строк?
Пример: MINIX 3, Symbian
MINIX 3 – это 3200 строк кода на С и 800 строк на ассемблере
2. Принципы организации и структура ОС
Клиент-серверная модель – вариация идеи микроядер,
в которой обособляются два класса процессов: серверы,
каждый из которых предоставляет службу и клиенты,
которые пользуются этими службами(Э.Таненбаум).
Реализация модели в сети
2. Принципы организации и структура ОС
Виртуальные машины – (Э.Таненбаум).
1
2
3 Виртуальная машина Java
2. Принципы организации и структура ОС
Экзоядро – разновидность виртуальной машины
(Э.Таненбаум).
3. Ядро и основные компоненты ОС.
1. Любая ОС не способна функционировать без ядра.
Ядро отвечает за взаимодействие пользовательских
приложений (в данном случае - в самом широком
смысле слова, включая средства администрирования) с
аппаратурой компьютера.
Однако с точки зрения пользователя это - (почти)
обычный исполняемый бинарный файл,
функциональность которого определяется при
конфигурировании, предшествующем сборке.
3. Ядро и основные компоненты ОС.
1. Ядро (функции).
A. распределение процессорного времени
между задачами,
B. управление памятью - как физической, так и
виртуальной (то есть процессом своппинга),
C. взаимодействие с устройствами,
D. доступ к файловым системам,
E. обеспечение ввода/вывода данных,
F. сетевая поддержка.
3. Ядро и основные компоненты ОС.
1. Ядро (особенности).
A. функционирует в отдельной области памяти,
которая так и называется пространством ядра
(kernelland). И в которую пользовательские
процессы доступа не имеют. (Все прочие же
программы располагаются в так называемом
пользовательском пространстве памяти
(userland).)
B. в отличие от всех других программ, оно всегда
должно находиться в оперативной памяти
физически - то есть не может свопироваться.
3. Ядро и основные компоненты ОС.
1. Ядро (ВЫВОД).
Рост функциональности ядра с течением времени
неизбежен - для поддержки новых устройств, при
сохранении обратной совместимости с устройствами
старыми, новых файловых систем, сетевых
протоколов, и так далее. Что столь же неизбежно
ведет к разрастанию ядра, расходу памяти и падению
быстродействия.
3. Ядро и основные компоненты ОС.
1. Ядро (решение проблемы).
Поддержка загружаемых модулей. Это - фрагменты
кода, обеспечивающие определенные функции ядра и
функционирующие в его пространстве памяти. Но не
перманентно, а загружаясь по мере необходимости вручную, соответствующими командами, или
автоматически. И которые могут быть изъяты из
памяти, когда в них минует надобность, без
перезагрузки системы - до следующего раза.
3. Ядро и основные компоненты ОС.
1. Ядро (решение проблемы).
Ядра могут быть разделены на
монолитные (со встроенной поддержкой всего, чего
нужно),
модульные,
микроядра (в Mach - драйверы устройств, не просто
вынесены в отдельные модули, но и функционируют в
пользовательском пространстве памяти. А собственно
за ядром оставлены функции коммуникаций между
ними.)
3. Ядро и основные компоненты ОС.
2. Сочетание инициирующей программы и стартовых
скриптов.
- для функционирования системы необходимо, чтобы
ядро запустило некий стартовый процесс
- в процессе загрузки следует выполнить комплекс
мероприятий, определяемый набором сценариев,
создающих пользовательское окружение
3. Ядро и основные компоненты ОС.
3. Утилиты поддержки функций ядра,
обеспечивающие работу с устройствами, файловыми
системами, сетевыми протоколами.
- средства обращения к физическим носителям,
создания на них разделов и файловых систем, их
проверки, монтирования и т.д.
Если ядро предусматривает поддержку нескольких
файловых систем (как, например, для ядра Linux) в
качестве родных (native) - к каждой из них должен
прилагаться свой комплекс обслуживающих утилит.
3. Ядро и основные компоненты ОС.
4. Инструментарий для просмотра файловых систем,
манипулирования файлами и их контентом,
архивирования и компрессии
- поскольку файлы пользователя могут располагаться
не только на локальной машине, сюда же примыкают
и средства сетевого доступа (в том числе и доступа к
Интернету.
3. Ядро и основные компоненты ОС.
5. Системные библиотеки
- Для своего функционирования как ядро, так и
системные и пользовательские утилиты нуждаются в
так называемых системных библиотеках. Из них
главной оказывается libc - библиотека функций
языка Си (главного средства разработки в контексте
Unix-систем). Однако не менее важны и некоторые
другие библиотеки, например, свойств терминала.
3. Ядро и основные компоненты ОС.
6. Командная оболочка, она же - интерпретатор
языка команд, по простому - шелл (shell).
- Любые действия в любой системе выполняются,
прямо или косвенно, путем отдачи соответствующих
командных директив. И потому интегрирующей
надстройкой над всем описанным богатством
выступает командная оболочка.
Система инициализации - лишь набор сценариев
оболочки, и всякого рода приложения с
навороченными интерфейсами - лишь надстройки
над элементарными шелл-командами и их
комбинациями.
3. Ядро и основные компоненты ОС.
7. Внутренняя система документации, дающая
пользователю возможность изучения возможностей
системы.
- Таковой в Unix выступает система man-страниц
(Manual Pages). Не смотря на появление множества
других форматов для представления документов,
при всей своей архаичности остающаяся простым и
универсальным средством оперативного получения
исчерпывающей информации.
3. Ядро и основные компоненты ОС.
Два дополнительных компонента.
1. Средства наращивания системы
дополнительными программами, то есть
комплекса инструментов, объединяемых
понятием пакетного менеджмента: установки,
отслеживания и удовлетворения зависимостей,
удаления.
Вариант 1 – «ручная сборка»
Компилятор для языка Си/Си++ и сопутствующего инструментария
(линкера, ассемблера, средств ведения проекта). В свободных POSIXсистемах такой инструментарий практически безальтернативен, включая
пакеты gcc (компилятор) и binutils с сопутствующими утилитами типа
make, automake, autoconfig.
3. Ядро и основные компоненты ОС.
Два дополнительных компонента.
1. Средства наращивания системы
дополнительными программами, то есть
комплекса инструментов, объединяемых
понятием пакетного менеджмента: установки,
отслеживания и удовлетворения зависимостей,
удаления.
Вариант 2 – компиляция их из исходников по определенным правилам,
освобождающим пользователя от необходимости самому отслеживать и
удовлетворять зависимости.
Компилятор для языка Си/Си++ и система автоматизации сборки=
система портов (FreeBSD)
3. Ядро и основные компоненты ОС.
Два дополнительных компонента.
1. Средства наращивания системы
дополнительными программами, то есть
комплекса инструментов, объединяемых
понятием пакетного менеджмента: установки,
отслеживания и удовлетворения зависимостей,
удаления.
Вариант 3 – в виде бинарных (прекомпилированных) пакетов.
Пакетный менеджер, обеспечивающего, кроме собственно
развертывания пакета, отслеживание и удовлетворение его
зависимостей.
Именно пакетными менеджерами различаются между собой различные
дистрибутивы Linux
3. Ядро и основные компоненты ОС.
Два дополнительных компонента.
2. Средства для обеспечения работы в графическом
режиме.
Эта функция возлагается на кросс-платформенную систему –
X Window System, именуемую также оконной системой X или, в народе,
просто Иксами.
Изначально не привязанная ни к аппаратной архитектуре, ни к какой-либо
ОС, сама по себе она не имеет отношения ни к одному из дистрибутивов
Linux, ни к BSD-семейству ОС, ни даже к Unix вообще.
Иксы (в виде ли XFree86, или в реализации Xorg) - это не Linux, не
FreeBSD, и не какая-либо другая ОС: это общее достояние всех свободных
операционок POSIX-семейства.
3. Ядро и основные компоненты ОС.
Итак:
В состав любой POSIX-совместимой системы входит базовый набор из
семи обязательных компонентов:
1. ядро ОС;
2. средства инициализации системы;
3. системные утилиты, обеспечивающие исполнение ядром его функций;
4. средства "боевого обеспечения" - минимальный набор
пользовательских утилит;
5. средства "тылового обеспечения" - системные библиотеки;
6. командная оболочка;
7. система документации.
Они дополняются двумя как бы опциональными (на практически столь же
обязательными компонентами): той или иной системой управления
пакетами и системой поддержки работы в графическом режиме.
Весь этот комплекс вполне резонно было бы назвать Base POSIX.
4. Файловая структура ОС.
В самом общем виде файл можно определить как последовательность
байтов, идентифицируемую тем или иным образом.
Определение может быть применено к любой операционной системе.
В Unix'ах всякого рода (POSIX-совместимых ОСях) к этому следует
прибавить, что файл состоит из двух частей, не обязательно находящихся
в одном месте (а в общем случае - как раз разобщенных).
Первая часть файла - так называемая область метаданных, именуемая
по английски inode (index node или information node)
Вторая часть - область данных файла заключает в себе собственно ту
информацию, для хранения которой файл и предназначен.
Она может быть самой различной - текстовые символы, двоичные коды и
многое, многое другое. Однако характер этой информации для
операционной системы POSIX-типа безразличен (чего нельзя сказать о
пользовательских приложениях) - она воспринимает их просто как
последовательность байтов.
4. Файловая структура ОС.
Классификация файлов
Классификация основана на принципах отличных от OS Windows.
Выделяются следующие типы файлов (и тип в данном случае - это
атрибут, описанный в соответствующем поле inode каждого файла):
•
•
•
•
•
каталоги;
символические ссылки;
специальные файлы устройств;
именованные каналы и сокеты;
обычные, или регулярные, файлы.
4. Файловая структура ОС.
Каталоги
(по английски directory) - в некотором смысле противопоставляются всем
другим типам.
Это - специальные файлы, объединяющие другие файлы (и подкаталоги,
называемые также вложенными каталогами) в обособленные друг от
друга группы (по крайней мере, так они видятся пользователю в
специальных программах управления файлами - файловых менеджерах).
Каталоги - суть не более чем списки имен входящих в них файлов и тех
самых числовых идентификаторов, речь идет об идентификаторах
процессов (и по которым собственно данные и находятся системой).
Поэтому метафора библиотечного каталога (или книжного оглавления)
как нельзя лучше отражает физический смысл соответствующего понятия.
4. Файловая структура ОС.
Исторически в Unix сложилась определенная структура каталогов,
весьма сходная в разных представителях этого семейства в общих чертах,
но несколько различающаяся в деталях.
В частности, файловая структура в BSD-системах почти идентична,
отличаясь от таковой в Linux. А в последней существенные отличия
обнаруживаются между разными дистрибутивами. Вплоть до того, что
структура файловой иерархии является одним из дистрибутивспецифичных признаков.
Такое положение дел затрудняет создание кросс-платформенных
приложений. И потому существует и активно развивается проект
стандартизации файловой иерархии - FHS (Filesystem Hierarchy Standard)
Стандарт на структуру каталогов файловой системы. (Filesystem
Hierarchy Standard)
http://rus-linux.net/MyLDP/file-sys/fhs-2.2-rus/index.html
4. Файловая структура ОС.
Стандарт на структуру каталогов файловой системы. (Filesystem
Hierarchy Standard)
http://rus-linux.net/MyLDP/file-sys/fhs-2.2-rus/index.html
Можно определить два независимых критерия разбиения множества
файлов на независимые типы :
• разделяемые файлы в противоположность неразделяемым
• неизменяемые (статические) файлы как противоположность
изменяемым файлам.
Разделяемые данные - это те, к которым может быть разрешен доступ с
различных хостов; неразделяемые - те, которые являются
специфическими для данного хоста.
Например, домашние каталоги пользователей содержат разделяемые
данные, а файлы блокирования устройств (device lock files) являются
неразделяемыми.
Неизменяемые (или статические) данные - это исполняемые файлы,
библиотеки, документация, и все, что не должно изменяться без
вмешательства системного администратора; изменяемые данные - это
все, что может изменяться без участия системного администратора.
4. Файловая структура ОС.
Стандарт на структуру каталогов файловой системы. (Filesystem
Hierarchy Standard)
http://rus-linux.net/MyLDP/file-sys/fhs-2.2-rus/index.html
Пример того, как должны распределяться данные для того, чтобы
файловая система могла считаться совместимой со стандартом FHS
Статические
Изменяемые
Разделяемые
Неразделяемые
/usr
/etc
/opt
/boot
/var/mail
/var/run
/var/spool/news
/var/lock
4. Файловая структура ОС.
Корневая файловая система
/bin : Основные исполняемые файлы (доступные всем пользователям)
/boot : Неизменяемые файлы для загрузчика
/dev : Файлы устройств
/etc : Специфичная для данного хоста конфигурационная информация
/home : Домашние каталоги пользователей (optional)
/lib : Основные разделяемые библиотеки и модули ядра
/lib<qual> : Основные разделяемые библиотеки для альтернативных
форматов (optional)
/mnt : Точка монтирования для временно монтируемых файловых систем
/opt : Дополнительные пакеты программного обеспечения
/root : Домашний каталог пользователя root (optional)
/sbin : Системные исполняемые файлы (System binaries)
/tmp : Временные файлы
4. Файловая структура ОС.
Каталоговая структура /usr
/usr/X11R6 : X Window System, Version 11 Release 6 (optional)
/usr/bin : Большая часть команд пользователя
/usr/include : Каталог для стандартных подключаемых файлов
/usr/lib : Библиотеки для программирования и приложений
/usr/lib<qual> : Библиотеки для альтернативных форматов (optional)
/usr/local : Каталог для локального ПО
/usr/sbin : Не обязательные стандартные системные команды
/usr/share : Архитектурно-независимые данные
/usr/src : Исходные коды (optional)
4. Файловая структура ОС.
Каталоговая структура /var
/var/account : Протоколы работы процессов (optional)
/var/cache : Данные кэша приложений
/var/crash : Дампы памяти при крахе системы (optional)
/var/games : Временные данные игровых приложений (optional)
/var/lib : Переменные данные о состоянии системы
/var/lock : Файлы блокирования
/var/log : Каталоги и файлы протоколов
/var/mail : Почтовые ящики пользователей (optional)
/var/opt : Переменные данные для /opt
/var/run : Переменные данные времени выполнения
/var/spool : Очереди данных для приложений
/var/tmp : Временные файлы, сохраняемые между перезапусками
системы
/var/yp : Файлы базы данных сетевой информационной системы NIS
(optional)
5. Методы инсталляции и настройки ОС.
Последовательность действий при установке ОС
Первый шаг
Загрузка соответствующей ОС с какого-либо внешнего носителя и запуск
программы-инсталлятора.
Второй шаг
Подготовка накопителя (HDD), на который ОС будет устанавливаться
(разметка, форматирование).
Третий шаг
Перенос с установочного носителя на диск ОС и всего, что ей (и
пользователю) необходимо. (На установщик возложена одна очень важная
функция - обеспечение контроля зависимостей между пакетами).
Четвертый шаг
Обеспечение загрузки установленной системы после рестарта машины.
Пятый шаг
Настройка графического режима работы.
5. Методы инсталляции и настройки ОС.
Установка
Третий этап установки - это разворачивание компонентов системы,
хранящихся обычно в архивированном и компрессированном виде, и
помещение их на смонтированные файловые системы на дисковых
разделах.
Однако этому предшествует стадия выбора компонентов, подлежащих
установке.
Дистрибутивы Linux организованы по пакетному принципу. Пакет - это, по
выражению Максима Отставнова, атом Linux-системы, наименьшая
часть, на которую ее можно разделить.
Пакет может быть добавлен в систему только целиком, и также
целиком - удален.
5. Методы инсталляции и настройки ОС.
Установка
В состав дистрибутива пакеты могут быть включены в трех формах:
• в виде т.н. исходных текстов (sources - "исходников"), которые перед
установкой и использованием подлежат определенным действиям трансформации в исполняемый код (процесс этот называется сборкой);
• в виде набора правил для получения (из Сети) и сборки готовых к
использованию пакетов из исходников - так называемых портов, хотя в
Linux такие наборы правил имеют собственные названия в каждом
дистрибутиве; при этом сами исходники в состав дистрибутива входить
не обязаны;
• в виде заранее собранных, т.н. бинарных (или прекомпилированных)
пакетов, которые необходимо только развернуть из архивов и
поместить куда нужно.
5. Методы инсталляции и настройки ОС.
Обеспечение загрузки
стандартный способ загрузки ядра - это специальная программа, которая
незамысловато называется - системный загрузчик.
Теоретически рассуждая, можно обойтись и без него, записав в
соответствующее место диска (которое так и называется - загрузочным
сектором) некий код, позволяющий обратиться к ядру Linux, как
говориться, без посредников.
На практике в Linux принято два системных загрузчика - традиционный
Lilo и GRUB, имеющий шансы стать стандартным в мире Open Sources
вообще. Оба они - не просто системные, а мультисистемные, то есть
позволяют загружать не только Linux, но и многие другие ОС, от Windows
до любой BSD.
5. Методы инсталляции и настройки ОС.
Обеспечение работы в графическом режиме
Этой цели служит так называемая оконная система X (X Window System),
которую называют просто Иксами.
Настройка Иксов сводится к двум основным моментам - настройке
устройств ввода и настройке устройств вывода.
С первыми (а это - обычные клавиатура и мышь) проблем, как правило, не
возникает.
С устройством вывода - то есть сочетанием видеокарты и монитора, несколько сложнее.
Если Иксы по каким-либо причинам не удалось настроить при
инсталляции, то обеспечить корректную работу XFree86 (как и Xorg)
можно будет потом, запустив ее штатные средства автоконфигурирования
или ручной правкой главного настроечного файла.
Download