Министерство транспорта Российской Федерации
Федеральное агентство железнодорожного транспорта
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
САМАРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ
Кафедра информационных систем и телекоммуникаций
ОПЕРАЦИОННЫЕ СИСТЕМЫ
Методические указания к лабораторным работам
для студентов специальности 230201
очной и заочной форм обучения
Составители: Д. Н. Франтасов
![]() |
Самара 2012
УДК 004.7:681.324
Операционные системы: Методические указания лабораторным работам для студентов специальности 230201 очной и заочной форм обучения / составители А. М. Косолапов, Д. Н. Франтасов. – Самара: СамГУПС, 2012. – 25.
Утверждено на заседании кафедры информационных систем и телекоммуникаций, протокол №8.
Печатается по решению редакционно – издательского совета университета.
Методические указания посвящены практическому изучению вопросов управления системными ресурсами в операционной системе UNIX. Указанные вопросы включены в программу курса для студентов специальности 230201.
В методических указаниях последовательно рассматриваются вопросы управления ресурсами ОС Unix средствами Shell-интерпретатора, управления файловой системой и системой ввода-вывода, средства создания, синхронизации и взаимодействия процессов с помощью сигналов и программных каналов, механизмы клиент-серверного и межпроцессного взаимодействия программ. Необходимым условием для выполнения лабораторных работ является знание основ ОС UNIX, владение языком Си и соответствующим инструментарием для разработки и отладки программ в указанной операционной системе.
Приведены контрольные вопросы и задания для самостоятельного решения.
Составители: Франтасов Дмитрий Николаевич
Рецензенты:
Редактор:
Компьютерная верстка:
Подписано в печать Формат 60х90 1/16
Усл. печ.л. Тираж экз. Заказ №.
© Самарский государственный университет путей сообщения, 2012
Основные принципы функционирования операционной системы Unix
Лабораторная работа №1
Основные команды shell интерпретатора
Введение
Одной из задач любой операционной системы (ОС) является поддержание надежного и эффективного механизма управления ресурсами вычислительной системы. Функции управления системными ресурсами присущи любой развитой операционной системе и включают в себя управление оперативной памятью, файловой системой, средства создания, синхронизации и диспетчеризации задач (процессов), службу времени, обработку программных прерываний, клиент-серверные взаимодействия и т.д.
При этом в рамках различных операционных систем и разных аппаратных платформ функции управления системными ресурсами поддерживаются различными средствами.
Командные процессоры или оболочки - это программы, позволяющие пользователю взаимодействовать с компьютером. Их можно рассматривать как настоящие интерпретируемые языки, которые воспринимают команды пользователя и обрабатывают их. Поэтому командные процессоры также называют интерпретаторами команд. На языках оболочек можно писать программы и выполнять их подобно любым другим программам. UNIX обладает большим количеством оболочек. Наиболее популярными являются следующие четыре оболочки:
·оболочка Борна (Bourne) - первоначальная командная оболочка UNIX: базовый, но полный набор функций;
·c-оболочка - добавка университета Беркли к коллекции оболочек: она надстраивается над оболочкой Борна, используя Си-подобный синтаксис команд, и сохраняет историю выполненных команд;
·оболочка Корна - напоминает оболочку С, но операторы управления программой совместимы с операторами оболочки Борна;
·BASH - сокращение от Bourne Again Shell (опять оболочка Борна), в основе своей совмещает свойства оболочек С и Корна (разработка компании Free Software Foundation).
Цель работы: изучить архитектуры и принципы функционирования многопользовательской многозадачной операционной системы Unix.
Порядок выполнения работы
Формат команд в операционной системе (ОС) имеет следующий вид:
имя команды [аргументы] [параметры] [метасимволы]
Имя команды может содержать:
- любое допустимое имя файла;
- аргументы (одна или несколько букв со знаком минус «-»;
- параметры (передаваемые значения для обработки);
- метасимволы (интерпретируются как специальные операции).
В квадратных скобках указываются необязательные части команд.
Командный интерпретатор shell вызывает команды, реализованные в виде программы на языке СИ, и передает им аргументы.
Синтаксис команды echo:
echo [-n] [arg1] [arg2] [arg3]...
Команда помещает в стандартный вывод свои аргументы, разделенные пробелами и завершаемые символом перевода строки. При наличии флага - n символ перевода строки исключается.
who [a m i] - получение информации о работающих пользователях.
В квадратных скобках указываются аргументы команды, которые можно опустить. Ответ представляется в виде таблицы, которая содержит следующую информацию:
- идентификатор пользователя;
- идентификатор терминала;
- дата подключения;
- время подключения.
date - вывод на экран текущей даты и текущего времени.
cal [[месяц]год] – календарь. Если календарь не помещается на одном экране, то используется команда cal год | more и клавишей пробела производится постраничный вывод информации.
man <название команды> - вызов электронного справочника об указанной команде. Выход из справочника - нажатие клавиши Q.
tty - сообщение имени специального файла стандартного вывода, соответствующего терминалу пользователя.
cat <имя файла > - вывод содержимого файла на экран. Команда cat > text.1 создает новый файл с именем text.1, который можно заполнить символьными строками, вводя их с клавиатуры. Нажатие клавиши Enter создает новую строку. Завершение ввода - нажатие Ctrl - d. Команда cat text.1 > text.2 пересылает содержимое файла text.1 в файл text.2. Слияние файлов осуществляется командой cat text.1 text.2 > text.3.
ls [a l r s t u] [имя каталога] - вывод содержимого каталога на экран. Если аргумент не указан, выдается содержимое текущего каталога.
Аргументы команды:
-a - выводит список всех файлов и каталогов, в том числе и скрытых;
-l - выводит список файлов в расширенном формате, показывая тип каждого элемента, полномочия, владельца, размер и дату последней модификации;
-r - выводит список в порядке, обратном заданному;
-s - выводит размеры каждого файла;
-t - перечисляет файлы и каталоги в соответствии с датой их последней модификации;
-u - перечисляет файлы и каталоги в порядке, обратном их последней модификации.
rm <имя файла> - удаление файла (файлов). Команда rm text.1 text.2 text.3 удаляет файлы text.1, text.2, text.3.
wc [имя файла] - вывод числа строк, слов и символов в файле.
clear - очистка экрана.
Группы команд или сложные команды могут формироваться с помощью специальных символов (метасимволов):
& - процесс выполняется в фоновом режиме, не дожидаясь окончания предыдущих процессов;
? - шаблон, распространяется только на один символ;
* - шаблон, распространяется на все оставшиеся символы;
| - программный канал - стандартный вывод одного процесса является стандартным вводом другого;
> - переадресация вывода в файл;
< - переадресация ввода из файла;
; - если в списке команд команды отделяются друг от друга точкой с запятой, то они выполняются друг за другом;
&& - эта конструкция между командами означает, что последующая команда выполняется только при нормальном завершении предыдущей команды (код возврата 0);
|| - последующая команда выполняется только, если не выполнилась предыдущая команда (код возврата 1);
() - группирование команд в скобки;
{ } - группирование команд с объединенным выводом;
[ ] - указание диапазона или явное перечисление (без запятых);
>> - добавление содержимого файла в конец другого файла.
ps [a l] [number] - команда для вывода информации о процессах:
-a - вывод информации обо всех активных процессах, запущенных с вашего терминала;
-l - полная информация о процессах;
number - номер процесса.
Команда ps без параметров выводит информацию только об активных процессах, запущенных с данного терминала, в том числе и фоновых. На экран выводится подробная информация обо всех активных процессах в следующей форме:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
1 S 200 210 7 0 2 20 80 30 703a 03 0:07 cc
1 R 12 419 7 11 5 20 56 20 03 0:12 ps
F - флаг процесса (1 - в оперативной памяти, 2 - системный процесс, 4 - заблокирован в ОЗУ, 20 - находится под управлением другого процесса, 10 - подвергнут свопингу);
S - состояние процесса (O - выполняется процессором, S - задержан, R - готов к выполнению, I - создается);
UID - идентификатор пользователя;
PID - идентификатор процесса;
PPID - номер родительского процесса;
C - степень загруженности процессора;
PRI - приоритет процесса, вычисляется по значению переменной NICE и чем больше число, тем меньше его приоритет;
NI - значение переменной NICE для вычисления динамического приоритета, принимает величины от 0 до 39;
ADDR - адрес процесса в памяти;
SZ - объем ОЗУ, занимаемый процессом;
WCHAN - имя события, до которого процесс задержан, для активного процесса - пробел;
TTY - номер управляющего терминала для процесса;
TIME - время выполнения процесса;
CMD - команда, которая породила процесс.
nice [-приращение приоритета] команда[аргументы] - команда изменения приоритета. Каждое запущенное задание (процесс) имеет номер приоритета в диапазоне от 0 до 39, на основе которого ядро вычисляет фактический приоритет, используемый для планирования процесса. Значение 0 представляет наивысший приоритет, а 39 - самый низший. Увеличение номера приоритета приводит к понижению приоритета, присвоенного процессу.
renice - команда устанавливает значение номера приоритета процесса. Увеличить приоритет процесса может только администратор системы.
kill [s i g] <идентификатор процесса> - прекращение процесса до его программного завершения. sig - номер сигнала.
sort [d r] - сортировка входных файлов и вывод результата на экран.