Операционная система представляет собой программу, выполняющую системные вызовы. Редакторы, компиляторы, ассемблеры, компоновщики и интерпретаторы команд по определению не являются частью операционной системы при всей своей важности и приносимой пользе. Рискуя внести некоторую путаницу, в этом разделе мы коротко рассмотрим и командный интерпретатор UNIX, называемый оболочкой — shell. Не являясь частью операционной системы, оболочка нашла широкое применение как средство доступа ко многим ее функциям и служит хорошим примером использования системных вызовов. Когда не применяется графический пользовательский интерфейс, она также является основным интерфейсом между пользователем, сидящим за своим терминалом, и операционной системой. Существует множество оболочек, включая sh, csh, ksh и bash. Все они поддерживают рассматриваемые далее функции, происходящие из исходной оболочки (sh).
Оболочка запускается после входа в систему любого пользователя. В качестве стандартного устройства ввода и вывода оболочка использует терминал1. Свою работу она начинает с вывода приглашения — знака доллара, сообщающего пользователю, что оболочка ожидает приема команды. Например, если теперь пользователь наберет на клавиатуре date
оболочка создаст дочерний процесс и запустит дочернюю программу date. Пока выполняется дочерний процесс, оболочка ожидает его завершения. После завершения дочернего процесса оболочка снова выведет приглашение и попытается прочитать следующую введенную строку.
Пользователь может указать, что стандартный вывод необходимо перенаправить в файл, например, date >file
Точно так же может быть перенаправлен и стандартный ввод
sort
fi»e2
Эта команда вызывает программу сортировки — sort, входные данные для которой берутся из файла file 1, а выходные данные отправляются в файл file2.
Выходные данные одной программы могут быть использованы в качестве входных для другой программы путем их соединения с помощью канала. Например, следующая команда
cat filei fi1e2 file3 | sort >/dev/lp
вызывает программу cat для объединения трех файлов и отправки выходных данных программе sort, чтобы она расставила все строки в алфавитном порядке. Выходные данные программы sort перенаправляются в файл /dev/lp, которым обычно обозначается принтер.
Если пользователь после команды введет знак &, оболочка не станет ожидать ее завершения, а сразу же выведет приглашение. Следовательно, команда
cat filei file2 file3 | sort >/dev/lp &
приступит к сортировке как к фоновому заданию, позволяя пользователю во время сортировки продолжить обычную работу. Оболочка имеет и ряд других интересных свойств, рассмотреть которые нам не позволяет объем книги. Но в большинстве книг по UNIX оболочка рассматривается достаточно подробно (например, (Kernighan and Pike, 1984; Kochan and Wood, 1990; Medinets, 1999; Newham and Rosenblatt, 1998; Robbins, 1999).
В наши дни на многих персональных компьютерах используется графический пользовательский интерфейс. По сути, графический пользовательский интерфейс — это просто программа (или совокупность программ), работающая поверх операционной системы наподобие оболочки. В системах Linux этот факт проявляется явным образом, поскольку у пользователя есть выбор по крайней мере из двух сред, реализующих графический пользовательский интерфейс: Gnome и KDE. Или он может вообще не выбрать ни одну из них — воспользовавшись окном терминала из XI1. В Windows также есть возможность заменить стандартный менеджер рабочего стола (Windows Explorer) какой-нибудь другой программой путем внесения изменений в некоторые значения реестра, хотя этой возможностью практически никто не пользуется.
Устройство современных цифровых счётчиков учёта электроэнергии