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) можно будет потом, запустив ее штатные средства автоконфигурирования или ручной правкой главного настроечного файла.