1.1 GNU/Linux, как POSIX. Linux – ядро ОС GNU/Linux, сертифицированной по стандартам POSIX. UNIX — семейство переносимых, многозадачных и многопользовательских операционных систем. Основное отличие UNIX-подобных систем от других операционных систем заключается в том, что это изначально многопользовательские многозадачные системы. Первоначально UNIX была разработана в конце 1960-х годов сотрудниками Bell Labs, в первую очередь Кеном Томпсоном, Деннисом Ритчи и Дугласом Макилроем. В 1969 г. Bell Labs решает выйти из проекта MULTICS, чтобы сосредоточить усилия на создание мобильной операционной среды под условным названием UNIX. В 1969 году Кен Томпсон, стремясь реализовать идеи, которые были положены в основу MULTICS, но на более скромном аппаратном обеспечении (DEC PDP-7), написал первую версию новой операционной системы для миникомпьютеров 1970-х.
GNU (рекурсивный акроним от англ. GNU’s Not Unix — «GNU — это не Unix») — проект по созданию свободной UNIX-подобной операционной системы, начатый Ричардом Столлмэном 27 сентября 1983 года. В 1991 году, когда Линус Торвальдс опубликовал ядро Linux и привлёк помощников, использование инструментов, разработанных в рамках проекта GNU, было очевидным выбором. Операционная система GNU и ядро Linux вместе составляют ОС, известную, как GNU/Linux. Дистрибутивы этой системы (такие как Red Hat и Debian), включающие ядро, утилиты GNU и дополнительное программное обеспечение стали популярными как среди любителей, так и среди представителей бизнеса.
Мобильность программного обеспечения - способность программного обеспечения работать на различных аппаратных платформах или под управлением различных операционных систем.
POSIX (англ. portable operating system interface for Unix — переносимый интерфейс операционных систем Unix) — набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API), библиотеку языка C и набор приложений и их интерфейсов. Стандарт создан для обеспечения совместимости различных UNIX-подобных операционных систем и переносимости прикладных программ на уровне исходного кода, но может быть использован и для не-Unix систем. Серия стандартов POSIX была разработана комитетом 1003 IEEE. Международная организация по стандартизации (ISO) совместно c Международной электротехнической комиссией (IEC) приняли данный стандарт (POSIX) под названием ISO/IEC 9945. Название «POSIX» было предложено Ричардом Столлманом. POSIX — это функциональная модель совместимой с UNIX операционной системы, в которой описано, как должна вести себя система в той или иной ситуации, но не приводится никаких указаний, как это следует реализовать программными средствами
Задачи POSIX: содействовать облегчению переноса кода прикладных программ на иные платформы; способствовать определению и унификации интерфейсов заранее при проектировании, а не в процессе их реализации; сохранять по возможности и учитывать все главные, созданные ранее и используемые прикладные программы; определять необходимый минимум интерфейсов прикладных программ, для ускорения создания, одобрения и утверждения документов;
OS и POSIX. Полностью соответствующие POSIX: BSD/OS, Mac OS X, Minix, OpenSolaris.
Официально не сертифицированные как POSIX-совместимые, но соответствующие по большей части: FreeBSD, GNU/Linux, OpenBSD
Платные дистрибутивы нацелены на использование преимущественно компаниями: они могут содержать некоторые платные компоненты, а также в них осуществлена поддержка. При использовании бесплатных дистрибутивов, пользователь, при возникновении какой-либо неисправности должен устранять ее сам. В основном компании выпускают и платные и бесплатные дистрибутивы для того, чтобы первые использовались в компаниях, а вторые бы проверялись пользователями на наличие каких-либо багов.
Пользовательский интерфейс – это набор команд и сервисных услуг, которые упрощают работу с ЭВМ.
1.2 Принципы проектирования ос.
Принцип модульности
Под модулем в общем случае понимают функционально законченный элемент системы, выполненный в соответствии с принятыми межмодульными интерфейсами.
Принцип функциональной избирательности
В ОС выделяется некоторая часть важных модулей, которые должны постоянно находиться в оперативной памяти для более эффективной организации вычислительного процесса. Эту часть в ОС называют ядром.
Принцип генерируемости ОС
Основное положение этого принципа определяет такой способ исходного представления центральной системной управляющей программы ОС, который позволял бы настраивать эту системную супервизорную часть, исходя из конкретной конфигурации конкретного вычислительного комплекса и круга решаемых задач.
Принцип функциональной избыточности
Этот принцип учитывает возможность проведения одной и той же работы различными средствами.
Принцип виртуализации
Построение виртуальных ресурсов, их распределение и использование теперь используется практически в любой ОС. Этот принцип позволяет представить структуру системы в виде определенного набора планировщиков процессов и распределителей ресурсов.
Принцип независимости программ от внешних устройств
Этот принцип заключается в том, что связь программ с конкретными устройствами производится не на уровне трансляции программы, а в период планирования ее исполнения.
Принцип совместимости
Одним из аспектов совместимости является способность ОС выполнять программы, написанные для других ОС или для более ранних версий данной операционной системы, а также для другой аппаратной платформы.
Принцип открытой и наращиваемой ОС
Открытая ОС доступна для анализа как пользователям, так и системным специалистам, обслуживающим вычислительную систему. Наращиваемая ОС позволяет не только использовать возможности генерации, но и вводить в ее состав новые модули, совершенствовать существующие и т. д.
Принцип мобильности (переносимости)
Операционная система относительно легко должна переноситься с процессора одного типа на процессор другого типа и с аппаратной платформы одного типа на аппаратную платформу другого типа.
Принцип обеспечения безопасности вычислений
Правила безопасности определяют такие свойства, как защита ресурсов одного пользователя от других и установление квот по ресурсам для предотвращения захвата одним пользователем всех системных ресурсов.
ОСНОВНЫЕ КОМПОНЕНТЫ ОС.
• Ядро • Системный загрузчик • Утилиты поддержки (работа с файловыми системами, сетью, процессами, жестким диском, и т.п.) • Рабочие средства пользователя (командный процессор, редакторы, базовые утилиты утилиты) • Главная системная библиотека (glibc)
ТИПИЧНАЯ СТРУКТУРА КАТАЛОГОВ.
Иерархия директорий стандартизируется, чтобы упорядочить каталоги. В таком случае разработчики четко знают, в какой директории что находится, и программе не приходится искать нужную директорию. В таком случае, программа будет работать на всех совместимых с POSIX системах
• / Корневой каталог • /bin Базовый набор утилит общего пользования
• /boot Каталог, содержащий ядро системы (хотя часто оно размещается в корневом разделе) и системный загрузчик • /dev Каталог с виртуальными файлами, соответствующими устройствам компьютера • /etc Каталог общесистемных конфигурационных файлов • /home Каталог для домашних каталогов реальных и виртуальных пользователей. Содержимое его не регламентировано. • /lib Системные библиотеки • /media Каталог предназначенный для автоматического монтирования сменных устройств • /mnt Каталог, предназначенный для монтирования временно используемых файловых систем • /opt Каталог, предназначенный для размещения коммерческого ПО и крупных программных пакетов • /proc Каталог с виртуальными файлами, соответствующими запущенным процессам • /root Домашний каталог пользователя root • /sbin Набор утилит администрирования системы • /sys Системные файлы • /tmp Аналог каталога /var, хранящий временные файлы
текущего сеанса работы • /usr Каталог для пользовательских приложений и данных. • /var Хранилище изменяемых файлов, генерируемых в ходу жизнедеятельности программ – программных кэшей, log-файлов…
ОСНОВНЫЕ КОМАНДЫ.
СПРАВОЧНЫЕ.
• man Получение справочной информации по команде или утилите, имя которой указано в командной строке. Например, команда “man man” даст подробное руководство по использованию справочной системы man
• info Аналог man
РАБОТЫ С ДИРЕКТОРИЯМИ
• pwd Вывод пути к текущему каталогу • ls Вывод списка файлов и каталогов текущего или указанного каталога
• cd Смена текущего каталога • mkdir Создание каталога • rmdir Удаление каталога
РАБОТЫ С ФАЙЛАМИ
• which Поиск пути до исполняемого файла • locate Поиск файла содержащего в названии запрашиваемую фразу – Ex: $ locate phrase • file Определение типа файла – Ex: $ file /bin/ls • grep Поиск в файлах строк, совпадающих с заданным шаблоном и их вывод – Ex: $ grep «hello» textfile
• sort Сортировка строк текстовых файлов • diff Поиск различий между двумя файлами • more Постраничный вывод файла • less Постраничный вывод файла с возможностью навигации в обоих направлениях
УПРАВЛЕНИЯ ПРАВАМИ ДОСТУПА
• chmod Изменение прав доступа к файлу – Ex: $ chmod <permission mode> filename
• chown Изменение владельца файла -Ex: $ chown owner filename • chgrp Изменение группы-владельца файла
– Ex: $ chgrp newgroup filename
УПРАВЛЕНИЯ ПРОЦЕССАМИ
• ps Вывод списка работающих процессов • fg Продолжение работы отложенного процесса – Ex: $ fg %PID
• bg Продолжение работы отложенного процесса в фоне • kill Завершение работы указанного процесса.
– Ex: $ kill PID – Ex: $ kill -9 PID – принудительное завершение процесса
• & Запуск процесса в фоновом режиме – Ex: $ firefox &
ОБРАБОТКА ПОТОКОВ ФИЛЬТРАМИ
Поток – это всего лишь последовательность байтов, которые могут быть считаны или записаны с помощью библиотечных функций, скрывающих подробности реализации и работы устройств от приложений.
Передаваемые командам параметры могут служить входными данными этих команд, а выходные данные могут выводиться на ваш терминал.
echo -e "apple\npear\nbanana"|sort
- Перенаправление вывода с помощью оператора >
- Команды cat, od и split. od – создает (выводит) дамп файла в восьмеричном формате
split – разбивает файл на части (-b N – размер каждого файла-части)
Для вывода содержимого файла на стандартное устройство вывода используется команда cat. С помощью cat вы можете объединить несколько файлов и вывести их содержимое на экран.
Команда wc выводит количество содержащихся в файле строк и слов, а также размер файла в байтах, определить который можно также с помощью команды ls -l. Команды head и tail позволяют отображать либо первую часть файла (заголовок), либо последнюю (хвост).
Команды expand, unexpand и tr. Команды sort и uniq. Команды cut, paste и join
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
grep — утилита командной строки, которая находит на вводе строки, отвечающие заданному регулярному выражению, и выводит их, если вывод не отменён специальным ключом.
УПРАВЛЕНИЕ ЗАДАНИЯМИ. ПОСЫЛКА СИГНАЛОВ ПРОЦЕССУ.
• Нажатие Ctrl+C посылает текущему процессу сигнал SIGINT и обычно приводит к его прерыванию
• Ctrl+\ посылает процессу сигнал SIGQUIT, сигнал немедленно завершит процесс и создаст дамп памяти (core dump) • Использование Ctrl+Z посылает сигнал SIGSTOP • Большинство сигналов в Linux отправляются программе и обрабатываются ею. – Например, нажатие Ctrl+C посылает SIGINT процессу, а тот его обрабатывает
• Процесс может проигнорировать сигнал • Может выполнить некоторые действия перед завершением работы
• Но два сигнала – SIGSTOP и SIGKILL – процессу не отправляются. Вместо этого они передаются непосредственно ядру, потому что требуют внешнего воздействия на процесс отправка. SIGSTOP и запуск fg (возобновление) похожи на нажатие паузы на вашем CD-плейере, поскольку процесс на самом деле не прекращает существование, а просто временно приостанавливает работу. %1 означает, что Bash должен послать сигнал заданию №1. jobs - возвращает список всех созданных нами заданий.
УПРАВЛЕНИЯ ПРОЦЕССАМИ
• ps Вывод списка работающих процессов • fg Продолжение работы отложенного процесса – Ex: $ fg %PID
• bg Продолжение работы отложенного процесса в фоне • kill Завершение работы указанного процесса.
– Ex: $ kill PID – Ex: $ kill -9 PID – принудительное завершение процесса
• & Запуск процесса в фоновом режиме – Ex: $ firefox &
АВТОМАТИЗАЦИЯ РАБОТЫ. КОМАНДА AT.
Команда at обычно работает интерактивно, то есть вы сначала вызываете программу, указав время, когда задание должно выполниться, затем вводите свои команды и нажимаете Ctrl+D, чтобы сохранить задание. Вот пример «диалога» с at:
user@user:~$ at midnight
at> du / > ~/diskusage
at <EOT>
job 1 at 2007-02-13 00:00
В первой строке запускаем at и указываю полночь (midnight) как время старта для задания. При этом at запустится, и появится приглашение at>, показывающее, что можно вводить содержимое задания. Задание, которое мы хотим выполнить в полночь – выяснить, сколько дискового пространства используется на моём компьютере, так что запускаем du и перенаправляем её вывод в файл в домашнем каталоге. <EOT> – это Ctrl+D, что приводит к сохранению задания, выводу его номера и сообщению, когда оно будет выполнено (сегодня в полночь). Узнать, какие задания уже поставлены в очередь, вы можете, набрав atq.
– 1 2007-02-13 00:00 a user
В Linux можно выбрать много очередей заданий, и чем дальше буква от начала алфавита, тем ниже
приоритет. Очередь «a» имеет наивысший приоритет, и будет исполнена с нормальным для пользователя значением nice (то есть так быстро, как только сможет).
Удалить задание: atrm N (N-номер задания)
Есть несколько способов указать время в at, и midnight – лишь один из них. Из предопределённых есть tomorrow (завтра), noon (полдень) и teatime (4 часа вечера), но вы можете указывать и точное время, например, 16:00 (те же 4 вечера) или комбинировать эти значения (16:00 tomorrow). Простейший способ – указывать
относительное время, используя now (сейчас), например, так: at now + 5 minutes
КОМАНДА BATCH
Если время выполнения для вас не имеет значения, используйте batch. Различие заключается в том, что batch начнёт выполнять ваши задания сразу же, как только загрузка системы опустится ниже 0,8 (т.е. машина будет не слишком занята). Синтаксис намного проще, поскольку не нужно указывать время: просто наберите batch, нажмите Enter, добавьте свои команды и нажмите Ctrl+D, чтобы сохранить задание. Введя atq, вы увидите ваше задание в очереди «B», что означает запуск с более низким приоритетом, чем у других заданий и большинства программ в системе. По этой причине ваше задание стартует только тогда, когда система бездействует, но, если оно запустится, а в следующую секунду машину потребует другая работа, ваше задание тихонько переберется в фоновый режим и отдаст ресурсы процессора. Оно не останавливается, но из-за более низкого приоритета получит намного меньше процессорного времени.
За команды at и batch отвечает демон atd. При его запуске мы можем задать параметр загруженности системы, при котором нужно запускать выполнение задания. По умолчанию он равен 0.8
Синтаксис atd –l –b –d –s
-l Минимальный фактор загрузки
-b Минимальный интервал, в секундах, между запуском двух пакетных заданий (по умолчанию 60).
-d Отладка; выводит сообщения об ошибках на стандартный поток ошибок
-s Эта опция используется для совместимости со старыми версиями at
ПОМЕЩЕНИЕ ЗАДАНИЙ В ФАЙЛЫ.
Если вы хотите, чтобы at или batch читали ваши задания из файла, просто используйте -f имяфайла перед указанием времени, например, так:
– at -f myjob.job tomorrow – batch -f myjob.job
