
- •Операционные системы для программиста
- •Введение
- •1. Основные понятия
- •1.1. Понятие операционной системы
- •1.2. Системные соглашения для доступа к функциям ос
- •1.3. Особенности разработки программ в базовых ос
- •1.4. Командный интерфейс пользователя в ос
- •1.5. Информация об ошибках системной функции
- •2. Программный доступ к файловой системе
- •2.1. Понятия дескрипторов, идентификаторов и хэндлов
- •2.2. Ввод и вывод в стандартные файлы.
- •2.3. Базовые средства использования файлов
- •2.4. Многопользовательская блокировка файлов
- •2.5. Установка произвольной позиции в файле
- •3. Принципы построения ос
- •3.1. Модульная структура построения ос
- •3.2. Использование прерываний в ос
- •3.3. Управление системными ресурсами
- •3.4 Строение ядра операционной системы
- •3.5. Структура операционной системы типа Windows nt
- •4. Многофункциональный консольный вывод
- •4.1. Функции управления курсором
- •4.2. Многократный вывод символов и атрибутов
- •4.3. Вывод в произвольную позицию экрана
- •4.4. Ввод данных, размещенных предварительно на экране
- •5. Системные функции ввода для консольных устройств
- •5.1. Системные функции ввода текстовых строк
- •5.2. Событийно-управляемый ввод
- •5.3. Системные функции ввода с клавиатуры
- •5.4. Опрос ввода с клавиатуры в программе
- •5.5. Системные функции мыши для текстового режима
- •6. Файловые системы
- •6.1. Структуры файловых систем для пользователя
- •6.2. Методы распределения внешней памяти
- •6.3. Принципы построения файловых систем типа fat
- •6.4. Современные модификации файловой системы fat
- •6.5. Особенности построения файловой системы hpfs
- •6.6. Принципы построения файловой системы ntfs
- •6.7. Особенности строения файловых систем для Unix
- •6.8. Программный опрос файловой системы
- •7. Обеспечение множественности процессов
- •7.1. Основные понятия теории вычислительных процессов
- •7.2. Программное порождение процессов
- •7.3. Уничтожение процессов
- •7.4. Ожидание завершения процессов
- •8. Многопоточное функционирование ос
- •8.1. Понятие нити и связь Хе с процессом
- •8.2. Создание нитей (thread) в программе
- •8.3. Уничтожение нитей
- •8.4. Приостановка и повторный запуск нити
- •8.5. Ожидание завершения нити
- •9. Средства взаимодействия программных единиц
- •9.1. Абстрактные критические секции
- •9.2. Абстрактные семафоры
- •9.3. Семафоры взаимоисключения
- •9.4. Семафоры событий
- •9.5. Средства группового ожидания
- •9.6. Программные критические секции
- •9.7. Программные семафоры с внутренним счетчиком
- •10. Управление памятью
- •10.1. Виртуальная память
- •10.2. ЏодкРчка страниц для реализациШ виртуальной памяти
- •10.3. Системные функции распределения памяти
- •10.4. Совместное использование памяти
- •10.5. Отображение файлов в оперативную память
- •10.6. Динамически распределяемая память
- •11. Средства коммуникации процессов
- •11.1. Неименованные коммуникационные каналы Unix
- •11.2. Переназначение хэндлов для доступа к каналу
- •11.3. Неименованные каналы в Windows
- •11.4. Именованные каналы в Windows nt
- •11.5. Именованные каналы в Unix
- •12. Взаимодействие пользователя с ос
- •12.1. Интерфейсы операционных систем
- •12.2. Командные и операционные оболочки (shells)
- •12.3. Основные команды базовых операционных систем
- •12.4. Групповое выполнение и фоновый запуск команд
- •12.5. Стандартный ввод-вывод и конвейеры командной строки
- •12.6. Командные файлы и сценарии
- •Библиографический список
12.3. Основные команды базовых операционных систем
Для начинающего читателя необходимо привести хотя бы минимальный набор команд для всех рассматриваемых далее операционных систем, не отсылая его к другим источникам. В то же время предлагаемый далее обзор таких команд по необходимости будет не очень полон и призван в большей степени дать информацию для последующих примеров, чем для охвата всего основного набора команд, необходимого для грамотного управления операционной системой.
Заметим, что, к счастью для начинающих, базовые наборы команд операционных систем MS DOS, Windows 9x/NT и OS/2 практически совпадают (для удобства кратких ссылок будем называть эти наборы вариантом MS). Такое совпадение в значительной степени облегчит наше знакомство. Более того, так как идейным источником построения команд более поздних ОС послужила Unix, то при всех отличиях между ними сохранено немало общего. Команда для операционной системы всегда начинается с ее собственного имени. Это имя задается обязательно латинскими буквами, причем в ОС Unix эти буквы должны быть строчными, а в остальных регистр (размер) букв может быть любым (как в Паскале). После имени команды может следовать (хотя и не обязательно) перечень опций. Опции в Unix начинаются со служебного символа дефис (символ - ), в других ОС символом начала опции должна быть наклонная черта (slash - / ). Сами опции, как правило, задаются одной латинской буквой. Применение односимвольных опций и дефиса в Unix позволяет объединять в одной записи несколько опций. Так вместо записи
command -g -j -x
можно задавать те же указания в виде
command -gjx
Часто в составе текста команды присутствует задание файлов. Для задания их имен во всех упомянутых системах могут использоваться метасимволы ? и *. Символ ? при этом обозначает любой допустимый символ в имени, а символ * - любую допустимую, в том числе пустую цепочку символов.
Учитывая, что командный интерфейс служит для взаимодействия профессионального пользователя с ОС, важнейшими являются команды получения оперативной информации от операционной системы. Главной из них служит команда получения самой общей информации о файлах, в частности, содержимого текущего каталога. Эта команда имеет для MS наименование dir, а аргументом ее может быть обозначение некоторого каталога, в частности логического диска. Кроме того, обычно с помощью метасимволов может быть запрошена информация о каких-то файлах. Например:
dir D:\RAB\*.c
запрашивает информацию о всех файлах с расширением .c в каталоге RAB логического диска D: . При отсутствии (в качестве параметра команды) имени файла (или обобщенного имени файлов) выводится информация о всех файлах текущего каталога.
В Unix для отображения информации о файлах предназначена команда ls. Она при отсутствии явного указания файла или файлов также выводит информацию о всех файлах текущего каталога. Причем запрос на вывод подробной информации о файлах требует указания опции -l, а запрос о служебных файлах каталога требуется указания опции -a.
Следующей по значимости служит команда копирования. Для MS варианта она имеет в простейшей форме вид
copy исходный_файл выходной_файл
Кроме того, используется форма
copy имена_файлов имя_каталога
или
copy имя_файа имя_каталога\новое_имя-файла
В Unix команда копирования задается именем cp, причем при записи каталогов следует использовать обычную наклонную черту (символ /).
Кроме копирования видную роль играет команда перемещения файла с возможным изменением его имени. Эта команда в Unix задается в виде
mv текущее_имя-файла новое_имя-файла
или
mv имя-файла имя-каталога
а в MS командой, все отличие которой заключается в использовании имени move вместо сокращенного обозначения mv, характерного для Unix.
Несколько команд связаны с действиями над каталогами. Прежде всего – это часто используемая команда перехода в указанный каталог, имеющая общее наименование cd. Ее аргументом служит обозначение каталога, в который следует перейти. Следует учитывать, что родительский каталог во всех рассматриваемых ОС обозначается двумя последовательными символами точки (команда "перейти в родительский каталог" записывается как cd .. ). В ряде команд может потребоваться обозначение текущего каталога, который задается одним символом точки. (Так что копирование файла aaa.txt дочернего каталога sss в текущий запишется в виде copy sss\aaa.txt .)
Создание каталога задается командой общего наименования mkdir, единственным аргументом которой служит имя создаваемого каталога. В ОС варианта MS для этой команды можно использовать сокращенное наименование md.
Служебную роль играет команда выдачи на экран содержимого файла. В Unix в качестве таковой используется универсальная команда с именем cat, позволяющая отображать содержимое перечня файлов, заданных в ней аргументами. В ОС типа MS для этих целей предназначена более ограниченная команда type (заимствованная из более простой очень теперь старой ОС CP/M).
Для удаления файлов в ОС типа MS предназначена команда del, а для удаления каталогов здесь же – команда rmdir. В Unix для обеих целей служит одинаково называемая команда rm. Следует обратить внимание, что удаление как файлов, так и особенно каталогов, это действие, которое может быть необратимым, поэтому прибегать к нему нужно по правилу: "семь раз отмерь, один раз отрежь".
Для запроса справочной информации в Unix предназначена команда с именем man, которая должна содержать имя команды, о которой запрашиваются пояснения. Для аналогичного запроса в ОС типа MS служит команда help.
Для более детального изучения основных команд следует обратится к указанной справочной системе и внимательно прочитать выдаваемую ею информацию. В табл. 12.1 приведена краткая информация по рассмотренным командам, которая, конечно, ни в коей мере не может заменить справочную информацию.
Таблица 12.1. Основные команды базовых ОС
Обозначение в Unix |
Обозначение в MS |
Описание действий команды |
ls |
dir |
Выдает список файлов и каталогов. |
copy |
cp |
Копирование файлов. |
cd |
cd |
Переход в другой каталог (сделать его текущим). |
mkdir |
mkdir |
Создание нового каталога (в MS допускается сокращение md). |
cat |
type |
Вывод содержимого файла на экран. В Unix команда позволяет отображать заданный перечислением список файлов и может содержать более одного аргумента. |
move |
mv |
Перемещение файла или его переименование в текущем каталоге (в MS имеется также специальная команда переименования ren). |
rm |
del |
Удаление файла или каталога (в MS каталог удаляется rmdir). |
man |
help |
Запрос справочной информации о команде. |
ls -l |
attrib |
Получение атрибутов файла (MS) или прав доступа (Unix). |
clear |
cls |
Очистка экрана. |
date |
date |
Отображение на экране даты и установка новой (в Unix только администратором). |
time |
time |
Отображение на экране времени и установка нового (в Unix только администратором). |
more |
more |
Постраничный вывод. |
Одной из задач этой таблицы является показ, что между системами команд рассматриваемых ОС есть много общего, определяемого самими функциями операционных систем. Другие средства, более связанные со спецификой ОС, будут кратко рассмотрены в следующих параграфах.