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

1



СОДЕРЖАНИЕ



	ВВЕДЕНИЕ	3

	1.  РАЗЛИЧНЫЕ СОСТАВЛЯЮЩИЕ ОПЕРАЦИОННОЙ СИСТЕМЫ	5

	2. ОСНОВНЫЕ ФУНКЦИИ UNIX СИСТЕМЫ	8

	2.1.  init	8

	2.2. Подключение к системе с терминалов	8

	2.3.  Syslog	9

	2.4.  Периодическое выполнение команд: cron и at	9

	2.5. Графический интерфейс пользователя	10

	2.7.  Подключение к системе через сеть	10

	2.8.Сетевые файловые системы	11

	2.9.  Почта	11

	2.10.  Печать	12

	3.  ФАЙЛОВАЯ СИСТЕМА	13

	4. ЗАПУСК СИСТЕМЫ И ПЕРЕЗАГРУЗКА	17

	4.1.  Обзор	17

	4.2  Процесс запуска при близком рассмотрении	18

	4.3.  Завершение работы и выключение системы	21

	4.4.  Перезагрузка системы	23

	4.5.  Однопользовательский режим работы	24

	4.6.  Дискеты для экстренной загрузки	24

	ЗАКЛЮЧЕНИЕ	26

	СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ	27

	ПРИЛОЖЕНИЕ	28

	


ВВЕДЕНИЕ 



В данной курсовой работе дается обзор операционной системы Linux. Прежде всего, рассматриваются основные функции системы. Затем следует описание программ, реализующих эти функции. 

Linux является Unix-подобной операционной системой, которая используется на различных компьютерах PC-386. Впервые она была представлена как pасшиpение к операционной системе Minix и ее первые версии включали поддержку только файловой системы Minix.

Непрерывное снижение цен,  рост производительности в наше время и ожидаемое  появление новых микро- и супер-микрокомпьютеров делают мощь системы UNIX доступной для все большего круга  пользователей.  Системы UNIX или типа UNIX работают на любых машинах,  от уровня PC-XT до AT и выше.  Доступность больших объемов оперативной памяти и мощных микропроцессоров привела к возрастанию интереса к многозадачности,  системам мультипроцессирования - сфере,  в которой UNIX имеет солидную  репутацию.

Однако применение UNIX с максимальной отдачей  -  дело  нелегкое. Люди  годами  высказывали  неудовлетворение  тем,  что она не является "дружественной" по отношению к пользователю - и это разумная  критика, хотя  на  самом деле UNIX содержит средства для построения интерфейсов любого требуемого уровня сложности.  Наиболее важная причина  трудоемкости  эффективного  использования  UNIX состоит в том,  что в системе используются очень интересные и эффективные идеи,  не знакомые многим людям, работавшим  с  более простыми операционными системами.  UNIX предоставляет также гораздо больше инструментальных средств,  более гибких и  с  существенно большими возможностями,  чем, например, популярная MS-DOS (в чем можно убедиться беглым сравнением соответствующих руководств). 

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

рассмотреть составляющие операционной системы; 

рассмотреть основные функции системы;

рассмотреть файловую систему;

рассмотреть и описать запуск системы и перезагрузку;

сделать соответствующие выводы, изложить материал. 

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

1.  РАЗЛИЧНЫЕ СОСТАВЛЯЮЩИЕ ОПЕРАЦИОННОЙ СИСТЕМЫ



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

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

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

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

Довольно часто операционная система содержит компиляторы и соответствующие им библиотеки (GCC и C библиотеки для Linux), хотя не обязательно все языки программирования должны быть частью операционной системы. Документация, а иногда даже игры, могут являться ее частью. Обычно состав операционной системы определяется содержимым установочного диска или ленты, хотя дело обстоит несколько сложнее, так как различные части операционной системы разбросаны по разным FTP серверам во всем мире.

Важные составляющие ядра.

Ядро системы Linux состоит из нескольких основных частей: 

блок управления процессами, 

блок управления памятью, 

драйверы

устройств, 

драйверы файловых систем, 

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

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

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

Такое сходство позволяет использовать классы драйверов, поддерживающих одинаковые операции. В каждом члене такого класса используется однотипный интерфейс для ядра, но различные схемы взаимодействия с устройством. Например, все драйверы жесткого диска представляются для ядра абсолютно одинаково, то есть у них у всех имеются такие операции как «инициализация жесткого диска» чтение сектора N, «запись сектора N».

Некоторые функции, предоставляемые ядром, имеют одинаковые свойства. Например, различные сетевые протоколы объединены в один программный интерфейс - BSD socket библиотеку. Вот другой пример - различные файловые системы, поддерживаемые системой Linux. Ядро содержит виртуальную файловую систему (Virtual File System - VFS) которая включает в себя все функции, используемые для работы системы, а также драйвер для каждой поддерживаемой файловой системы. При попытке доступа к какой-либо файловой системе запрос проходит через VFS, откуда перенаправляется к соответствующему драйверу файловой системы.



                 


2. ОСНОВНЫЕ ФУНКЦИИ UNIX СИСТЕМЫ



В этом разделе достаточно поверхностно рассматриваются некоторые наиболее важные функции UNIX системы. Более подробно они рассмотрены в следующих главах.

2.1.  init

Единственную и самую важную функцию в UNIX системе предоставляет процесс init. Он запускается в любой UNIX системе как самый первый процесс, а также завершает процедуру загрузки системы. При запуске init, продолжается процесс загрузки (проверяются и устанавливаются файловые системы, запускаются различные программы-демоны и т.д.).

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

Некоторые версии используют понятие «уровень запуска». Например, однопользовательский и многопользовательский режимы - это разные уровни запуска. Также существуют дополнительные уровни, например для запуска X-windows. 

При работающей системе, две самые важные задачи программы init - это удостоверится, что все программы-демоны getty работают (т.е. имеется возможность подключения к системе) и адаптирование orphan-процессов (т.е. процессов, чей родительский процесс был уничтожен; в системе UNIX все процессы должны принадлежать одному дереву процессов, поэтому orphan-процессы должны быть адаптированы).

При завершении работы системы и перезапуске, init уничтожает все оставшиеся процессы, демонтирует файловые системы и останавливает процессор. 

2.2. Подключение к системе с терминалов

Подключение к системе с терминалов (через последовательные линии) и с главной консоли (если не запущены X) обеспечивается программой getty. init запускает отдельный процесс getty для каждого терминала. getty считывает имя пользователя и запускает программу login, которая считывает пароль. Если имя и пароль соответствуют одному пользователю, то login запускает оболочку.

При выходе из оболочки, то есть при выходе из системы, или при завершении программы login в случае если имя пользователя и пароль не подходят, init запускает новый процесс getty. Ядро не контролирует подключения к системе, а только выполняет системные программы.



2.3.  Syslog

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



2.4.  Периодическое выполнение команд: cron и at

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

Например, системному администратору может потребоваться периодически запускать команду для очистки каталогов от временных файлов (/tmp и /var/tmp), для предотвращения переполнения диска.

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

Функция at идентична функции cron, только команда запускается один раз в указанное время и запуск больше не повторяется.

2.5. Графический интерфейс пользователя

Как в системе UNIX так и в Linux, пользовательский интерфейс не встраивается в ядро системы. Вместо этого он представляется программами пользовательского уровня. Это применяется как к текстовым, так и к графическим оболочкам. 

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

Первоначально используемой с системой Linux графической оболочкой была система X Window System (сокращенно X). X не реализует пользовательский интерфейс, а только оконную систему, т.е. средства, с помощью которых может быть реализован графический интерфейс. Три наиболее популярных версии графических интерфейсов на основе X - это Athena, Motif и Open Look. 



2. 6. Работа с сетью

Сеть - это средство, позволяющее соединяться двум или более компьютерам между собой. 

UNIX-подобные операционные системы имеют широкий спектр сетевых возможностей. Большинство базовых функций (файловые системы, печать, создание резервных копий и т.д.) могут быть реализованы посредством сети. Это может значительно облегчить работу системного администратора, так как позволяет использовать централизованное администрирование.





2.7.  Подключение к системе через сеть

Подключение к системе через сеть работает несколько иначе, чем обычное подключение. Существуют отдельные физические последовательные линии для каждого терминала, через которые и происходит подключение. Для каждого пользователя, подключающегося к системе, существует отдельное виртуальное сетевое соединение и их может быть любое количество. Однако не представляется возможным запустить отдельный процесс getty для каждого возможного виртуального соединения. Существуют также и другие способы подключения к системе посредством сети. Например, telnet и rlogin - основные службы в TCP/IP сетях.

При использовании сети для подключения к системе, кроме большого количества процессов getty используется отдельная программа-демон (при использовании как telnet так и login используются различные программы-демоны), которая отслеживает все попытки соединения с компьютером. Если определяется попытка соединения, то программа создает новый процесс - создает сама себя для обработки этого соединения - а затем продолжает отслеживание новых соединений. Создаваемый процесс идентичен программе getty. 



2.8.Сетевые файловые системы

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

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

2.9.  Почта

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

У каждого пользователя имеется отдельный "почтовый ящик" (т.е. файл, где информация хранится в специальном формате), в котором хранится приходящая почта. Если на компьютер приходит письмо, то программа обработки почты находит файл почтового ящика соответствующего пользователя и добавляет туда полученное письмо.

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

Почтовая система состоит из множества различных программ. 

Доставка писем к локальным или удаленным почтовым ящикам производится одной программой (например, sendmail или smail), в то время как для обычной отправки или просмотра писем применяется большое количество различных программ (например, Pine или elm). 

Файлы почтовых ящиков обычно хранятся в каталоге /var/spool/mail. 



2.10.  Печать

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

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



                    


3.  ФАЙЛОВАЯ СИСТЕМА



Файловая система разделяется на несколько частей: файловая система root, состоящая из каталогов /bin, /lib, /etc, /dev и некоторых других, файловая система /usr, где хранятся различные программы и данные не подлежащие изменению, файловая система /var, где содержатся изменяемые файлы (такие как log файлы и др.) и файловая система /home, которая состоит из личных каталогов пользователей. Разделение может существенно отличатся от выше указанного в зависимости от работы системного администратора и конфигурации аппаратного обеспечения.

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

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

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

У большей части файловых систем UNIX сходная структура, а их некоторые особенности очень мало различаются. Основными понятиями являются: суперблок, индексный дескриптор (inode), блок данных, блок каталога и косвенный блок. В суперблоке содержится информация о файловой системе в целом, например, ее размер (точная информация зависит от типа файловой системы). В индексном дескрипторе хранится вся информация о файле, кроме его имени. Имя файла хранится в блоке каталога, вместе с номером дескриптора. Запись каталога содержит имя файла и номер индексного дескриптора соответствующего файла. В этом дескрипторе хранятся номера нескольких блоков данных, которые используются для хранения самого файла. В inode есть место только для нескольких номеров блоков данных, однако, если требуется большее количество, то пространство для указателей на блоки данных динамически выделяется. Такие блоки называются косвенными. Для того, чтобы найти блок данных, нужно сначала найти его номер в косвенном блоке.

В файловых системах UNIX обычно имеется возможность создания дыр в файлах (это можно сделать с помощью команды lseek(2)). Это означает, что файловая система предоставляет ложную информацию о том, что в каком-то месте в файле содержатся нулевые байты, но в действительности для этого не выделяются сектора (это означает, что файл будет занимать несколько меньше места на диске). Это часто используется особенно в небольших двоичных программах, библиотек Linux, в некоторых базах данных и в других отдельных случаях. (Дыры реализуются хранением специального значения в косвенном блоке или индексном дескрипторе вместо адреса блока данных. Это специальное значение показывает, что для данной части файла блоки данных не размещены и, следовательно, что в файле есть дыра.)

Использование дыр достаточно эффективно. На компьютере с общим дисковым пространством в 200 Мб, простые измерения показывают, что применение дыр дает экономию в 4 Мб. Однако, эти измерения проводились на системе, где было установлено относительно мало программ и отсутствовали файлы баз данных. Метод измерения дыр рассмотрен в приложении B. 

Linux поддерживает несколько типов файловых систем. Наиболее важные из них рассмотрены ниже. 

minix Считается самой старой и самой надежной файловой системой, но достаточно ограниченной в своих возможностях (у файлов отсутствуют некоторые временные параметры, длина имени файла ограничена 30-ю символами) и доступных объемах (максимум 64 Мб на одну файловую систему). 

xia Модифицированная версия системы minix, в которой увеличена максимальная длина имени файла и размер файловой системы, хотя она не реализует никаких новых возможностей. 

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

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

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

msdos     Обеспечивается совместимость с системой MS-DOS (а также OS/2 и Windows NT).

umsdos    Расширяет возможности драйвера файловой системы MS-DOS для Linux таким образом, что при работе в Linux, имеется возможность работы с именами файлов нестандартной длины, просмотра прав доступа к файлу, ссылок, имени пользователя, которому принадлежит файл, а также оперирование с файлами устройств. Это позволяет использовать обычную систему MS-DOS, так, как если бы это была система Linux. Таким образом, исключается необходимость создания отдельного раздела для Linux.

iso9660   Стандартная файловая система для CD-ROM. Довольно популярное развитие стандарта CD-ROM, выполненное Rock Ridge'м, которое обеспечивает автоматическую поддержку имен файлов нестандартной длины.

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

hpfs      Файловая система OS/2.

sysv      Файловые системы System V/386, Coherent и Xenix.

Также существует файловая система proc, которая обычно доступна через каталог /proc. В действительности, она не является файловой системой, хотя по ее структуре сложно обнаружить разницу. Эта система позволяет получить доступ к определенным структурам данных ядра, к таким, как список процессов (отсюда название).     

Хотя система /proc и называется файловой, ни одна ее часть не взаимодействует с диском. Она существует только в представлении ядра и при попытке обращения к какой-либо ее части, создается впечатление, что эта часть где-то существует, хотя в действительности это не так. Даже если существует файл /proc/kmem в несколько мегабайт, он не занимает места но диске.




4. ЗАПУСК СИСТЕМЫ И ПЕРЕЗАГРУЗКА



4.1.  Обзор

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

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

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

После загрузки Linux, инициализируются драйверы устройств, а затем запускается init(8), который в свою очередь запускает другие процессы, позволяющие подключаться к системе и обеспечивающие нормальную работу. Этот этап рассмотрен ниже более подробно. 

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



4.2  Процесс запуска при близком рассмотрении

Linux может быть запущена как с дискет, так и с жесткого диска. 

При включении компьютера, сначала BIOS производит тестирование оборудования, а затем запуск операционной системы. Сначала выбирается устройство, с которого будет производится запуск (обычно первый дисковод, если в него вставлена дискета, в противном случае - первый жесткий диск, если он установлен, хотя порядок выбора может быть настроен) и считывается самый первый сектор, который называется загрузочным. Его также называют MBR (Master Boot Record), так как у жесткого диска может быть несколько разделов и у каждого может быть свой загрузочный сектор.

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

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

  При загрузке с использованием LILO обычно сразу же загружается и запускается ядро, заданное по умолчанию, однако можно сконфигурировать LILO так, чтобы можно было бы загрузить одно из нескольких возможных ядер или даже другую операционную систему (в добавление к Linux). Также можно указать требуемое ядро или операционную сиситему во время загрузки. При нажатии клавиши ALT, SHIFT или CTRL (после загрузки LILO) будет выдан запрос, где можно указать ядро или систему. Однако при конфигурировании можно установить опцию, при которой LILO будет всегда выдавать такой запрос, а также указать время, по истечении которого загружается ядро, установленное по умолчанию. 

Существуют и другие загрузчики, подобные LILO, однако у него есть несколько полезных функций, которых нет в других загрузчиках, так как он был написан специально для Linux. Например, имеется возможность передачи ядру параметров во время загрузки или изменения некоторых опций, встроенных в ядро. Среди подобных загрузчиков (bootlin, bootactv и др.) LILO является наилучшим выбором.

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

После того, как ядро системы загружено в память (с жесткого  диска или с дискет) и запущено, выполняются приблизительно следующие действия:

Так как ядро Linux установлено в запакованном виде, то прежде всего оно само себя распаковывает. Это выполняет небольшая программа, расположенная в самом начале кода. 

Если на компьютере установлена видеоплата sVGA, поддерживающая нестандартные текстовые режимы (такие как 100x40), выдается запрос для указания требуемого режима. При компиляции ядра можно сразу указать используемый режим, чтобы он не запрашивался системой во время загрузки. Режим также может быть установлен при помощи LILO или rdev(8).

Затем ядро тестирует аппаратное обеспечение (жесткие диски, дисководы, сетевые адаптеры и др.) и конфигурирует соответствующие драйверы устройств. Во время этого процесса на экран выдаются подсказывающие сообщения. Вот примерно то, что происходит во время загрузки:

LILO boot:

Loading linux.

Console: colour EGA+ 80x25, 8 virtual consoles

Serial driver version 3.94 with no serial options enabled

tty00 at 0x03f8 (irq = 4) is a 16450

tty01 at 0x02f8 (irq = 3) is a 16450

lp_init: lp1 exists (0), using polling driver

Memory: 7332k/8192 available (300k kernel code, 384k reserved, 176k data)

Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M

Loopback device init

Warning WD8013 board not found at i/o = 280

Math coprocessor using irq13 error reporting

Partition check:

  hda: hda1 hda2 hda3

VFS: Mounted root (ext filesystem)

Linux version 0.99.pl9-1 (root@haven) 05/01/93 14:12:20



Хотя текст сообщений довольно сильно различается на разных системах и зависит от аппаратного обеспечения, версии Linux и конфигурации. После этого, ядро пытается смонтиpовать файловую систему root. Место, куда она будет смонтирована, устанавливается во время компиляции или с помощью rdev или LILO. Тип файловой системы определяется автоматически. Если система root не монтируется, например по причине того, что ядро не содержит драйвер соответствующей файловой системы, то система зависает.

Файловая система root обычно монтиpуется в режиме read-only (это устанавливается таким же образом как и узел монтирования). 

Это делает возможным проверку файловой системы в то время как она смонтирована, хотя проверка файловой системы, установленной в режиме read-write не рекомендуется. 

Затем ядро запускает программу init(8) в фоновом режиме (она расположена в каталоге /sbin/init) которая становится главным процессом. init выполняет различные функции, требуемые при установке системы.

В конце концов init запускает программу getty(8) для виртуальных консолей и последовательных линий. Эта программа позволяет подключаться к системе посредством виртуальных консолей и терминалов, подключенных через последовательные порты. Init может быть сконфигурирована также для запуска и других программ. 

После этого процесс запуска системы считается завершенным и система готова к работе.



4.3.  Завершение работы и выключение системы

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

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

Существуют команды, предназначенные для правильного выключения системы - это shutdown(8) и halt(8), расположенные в каталоге /sbin. Есть два обычных способа их применения. 

Если система установлена на компьютере, где работает один пользователь, то обычно завершают работу всех программ, работу всех виртуальных консолей, входят в систему под пользователем root (или остаются подключенными под этим пользователем, только в этом случае нужно перейти в корневой каталог во избежание проблем с демонтированием файловых систем), затем выполняется команда halt или shutdown -h now (при желании можно установить задержку, которая устанавливается заменой параметра now на знак '+' и числом минут, по истечении которых будет завершена работа системы) или просто halt.

Если на компьютере, на котором установлена система, работает одновременно несколько пользователей, то возможно использование команды shutdown в следующем формате: 

shutdown -h +time message,

где time это время, по истечении которого работа системы будет завершена, а message - сообщение, в котором объясняется причина выключения. Например, root# shutdown -h +10 'We will install a new disk.  System should > be back on-line in three hours.'

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

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

Broadcast message from root (ttyp0) Wed Aug 2 01:03:25 1995...

We will install a new disk. System should be back on-line in three hours.

The system is going DOWN for system halt in 10 minutes !!

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

Замечание: файл /etc/inittab содержит команды, выполняющиеся при выключении системы. 

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

В некоторых случаях невозможно завершить этот процесс соответствующим образом. Например, при повреждении кода ядра в памяти, нарушается его работа или система зависает и просто нет возможности ввести новую команду можно только надеяться, что ничего не повредится и выключить питание. Если же неполадки не такие серьезные (например вышла из строя клавиатура), а ядро и программа update работают нормально, то наилучшим вариантом будет подождать несколько минут, пока update(8) не сохранит на диске информацию, хранящуюся в кэш-буфере и только после этого выключить питание.

Некоторые выключают компьютер после трехкратного выполнения команды sync(8), которая сбрасывает на диск содержимое буфера, и, после прекращения обращения к диску, выключают компьютер. Если в момент выключения работа всех программ была завершена, то эта процедура почти идентична выполнению команды shutdown. Однако, файловые системы не демонтируются, что может привести к некоторым проблемам, связанным с флагом 'clean filesystem' системы ext2fs. В любом случае использование этого способа не рекомендуется. 



4.4.  Перезагрузка системы

Процесс перезагрузки может быть достигнут путем прекращения работы системы, выключения питания и включения снова. Более простой способ - это указать команде shutdown перезагрузить систему установив опцию -r. Например, для этого можно использовать команду shutdown -r now. Также можно использовать команду reboot. 



4.5.  Однопользовательский режим работы

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



4.6.  Дискеты для экстренной загрузки

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

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

   Поэтому может возникнуть необходимость в создании специально настроенного диска. В документации "Bootdisk HOWTO" содержится необходимая информация для создания подобного диска.

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


ЗАКЛЮЧЕНИЕ 



Linux является Unix-подобной операционной системой, которая используется на различных компьютерах PC-386. Впервые она была представлена как pасшиpение к операционной системе Minix и ее первые версии включали поддержку только файловой системы Minix.

При запуске оболочки автоматически выполняется один или несколько заранее установленных файлов. Различные оболочки используют разные файлы. 

Большинство оболочек сначала запускает один общий файл, напpимеp, оболочка Bourne (/bin/sh) и ей подобные выполняют файл /etc/profile, в дополнение к нему она выполняет файл ~/.profile. В файле /etc/profile системным администpатоpом указываются установки и оболочка для всех пользователей, в частности, переменная оболочки PATH и дp. В то время как файл ~/.profile используется для личных установок пользователя и индивидуальной настройки оболочки.

В ходе выполнения данной курсовой работы были рассмотрены следующие вопросы:

составляющие операционной системы; 

основные функции системы;

файловая система;

запуск системы и перезагрузка;

Кратко изложены основные положения по каждому из рассмотренных вопросов выбранной темы. 




СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ



Аврин С. Страну готовят к Интернету. М. 2001.

Батурин Ю.М.Право и политика в компьютерном мире. - М. 1997

Белл Д. Грядущее индустриальное общество. М. 1999.

Володин А. Интерфейс системы защиты информации. М. 1998. 

Король Л., Судов Е. Информационная безопасность: системный подход. СПб. 2002. 

Ларс Виржениус. ОС Linux. Руководство системного администратора. М. 1998. 

Милославская Н.Г., Толстой А.И. Интрасети: доступ в Интернет. Защита. М. 2000.

Рассел Сейдж. Приемы профессиональной работы в UNIX. М. 1999.

Таили Эд. Безопасность компьютера. Минск. 1997

Фигурнов В.Э. «IBM PC для пользователя». 7-е изд., пераб.и доп. - М.: ИНФРА-М, 2002. – 640 с.: ил.

Фоменков Г. Уязвимость сетевых операционных систем. // БАНКОВСКИЕ ТЕХНОЛОГИИ 5'98.

Юфа В. Unix и Internet: приведение к общему знаменателю. М. 2000.  


ПРИЛОЖЕНИЕ 



Краткое описание некоторых команд
операционной системы
UNIX



alias 

Создает синоним команды. 

bg 

Запускает прерванный процесс в "фоновом" режиме. 

bye 

Заканчивает сеанс связи. 

cat 

Выводит на экран содержимое текстового файла. 

cd 

Изменяет "текущую" директорию. 

conf 

Дает возможность читать и посылать статьи в телеконференции. 

decode 

Восстанавливает бинарный файл, присланный по электронной почте в закодированном виде. 

dir 

Показывает список файлов в "домашней" директории. 

du 

Подсчитывает об'ем файлов в "домашней" директории, исчисляемый в килобайтах. 

echo 

Отображает на экран все указанное этой команде в качестве параметра. 

encode 

Трансформирует бинарный файл в формат 'uudecode'. 

exit 

Заканчивает сеанс связи. 

fg 

Переводит процесс из "фонового" режима в "активный" режим. 

finger 

Дает возможность узнать, кто из пользователей телекоммуникационной сети работает на линии в данный момент. 

ftp 

Позволяет получать файлы со специалицированных файл-серверов сети "Интернет". 

gopher 

Позволяет пользоваться одноименным информационным сервисом сети "Интернет". 

head 

Выдает на экран первые десять строк текстового файла. 

help 

Раз'ясняет смысл некоторых комманд на английском языке. 

history 

Показывает список использованных комманд. 

id 

Показывает идентификатор пользователя системы. 

irc 

Дает возможность пользоваться сервисом IRC (Internet Relay Chat). 

joe 

Текстовый редактор. 

logout 

Заканчивает сеанс связи. 

ls 

Показывает фалы в домашней директории. 

mail 

Дает возможность пользоваться электронной почтой. 

man 

Раз'ясняет смысл некоторых комманд на английском языке. 

map 

Включает/выключает перекодировку русских символов. 

mkdir 

Создает поддиректорию в "домашней" директории. 

pine 

Дает возможность пользоваться электронной почтой. 

ping 

Показывает наличие связи с определенным сервером сети "Интернет". 

ps 

Показывает процессы операционной системы UNIX. 

pwd 

Показывает полное название "текущей" директории. 

sz 

Пересылает файл на Ваш компьютер. 

talk 

Позволяет вести интерактивный диалог с пользователем сети "Интернет". 

telnet 

Соединяет с другими серверами сети "Интернет". 

unalias 

Уничтожает синоним команды. 

uname 

Информирует о версии операционной системы на сервере телекоммуникационной сети. 

w 

Дает возможность узнать, кто из пользователей телекоммуникационной сети работает на линии в данный момент. 

who 

Дает возможность узнать, кто из пользователей телекоммуникационной сети работает на линии в данный момент. 

www 

Позволяет пользоваться информационным сервисом WWW (World-Wide Web).