Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Куровой.doc
Скачиваний:
13
Добавлен:
05.09.2019
Размер:
1.48 Mб
Скачать

3 Проектирование командного языка ос

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

- интерактивные команды;

- системные вызовы;

- язык пакетных файлов.

3.1 Интерактивные команды

Интерактивные команды вводятся пользователем с терминала:

  • основные: начало/завершение сеанса работы, порождение/ уничтожение процесса, создание/удаление элементов файловой структуры, копирование файлов, организация защиты, перенос системы;

  • дополнительные: установка и модификация параметров процессов/ресурсов, информационные команды.

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

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

Правила именования:

  • физические устройства именуются кодом из латинских букв и цифр;

  • логические диски именуются буквами латинского алфавита (‘a’…’z’);

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

Список нтрективных команд приведен в таблице 3.1.

Таблица 3.1 – Список интерактивных команд

Мнемоника

Наименование

Параметр 1

Параметр 2

Описание

Тип

Диапазон

значений

Значение по умолчанию

Тип

Диапазон

значений

Значение по умолчанию

on

Начало сеанса работы

-

-

-

-

-

-

Начало сеанса работы

ShutDown

Завершение работы компьютера

-

-

-

-

-

-

Завершение работы компьютера

П родолжение табл. 3.1

CreateProcess

Создать процесс

строка

Буквы

(рус./лат.) и цифры

-

число

0-32

8

Создание и фоновый запуск процесса с заданным именем и приоритетом

(параметр 1 и 2 соответственно)

MakeActive

Переключиться на процесс

строка

Буквы

(рус./лат.) и цифры

-

-

-

-

Переключиться на созданный процесс для непосредственной работы

SetPriority

Установить приоритет процесса

строка

Буквы

(рус./лат.) и цифры

-

число

0-32

8

Устанавливает приоритет для процесса c заданным именем

DestroyProcess

Уничтожить процесс

строка

Буквы

(рус./лат.) и цифры

-

-

-

-

Принудительное уничтожение процесса с заданным именем

mkdir

Создать каталог

строка

Буквы

(рус./лат.) и цифры

-

строка

a, r, h, s, -

a---

Создать каталог с заданным именем и атрибутами (а – архивный, r – только чтение, h – скрытый, s – системный)

(параметр 1 и 2 соответственно)

rmdir

Удалить каталог

строка

Буквы

(рус./лат.) и цифры

-

-

-

-

Удалить каталог с заданным именем

Create

Создать файл

строка

Буквы

(рус./лат.) и цифры

-

строка

a, r, h, s, -

a---

Создать файл с заданным именем и атрибутами

del

Удалить файл(ы)

строка

Буквы

(рус./лат.) и цифры, *, ?

-

-

-

-

Удалить файл с заданным именем,

(* - любые символы, ? – любой символ)

copy

Копирование

строка

Буквы

(рус./лат.) и цифры, *, ?

-

строка

Буквы

(рус./лат.) и цифры

-

Копировать файлы и каталоги из источника в назначение

sys

Создать системный файл

символ

'a'…'z'

-

-

-

-

Записать системные файлы на диск

attrib

Установка атрибутов

строка

Буквы

(рус./лат.) и цифры, *, ?

-

строка

a, r, h, s, -

a---

Установить(сбросить) атрибуты файлов и каталогов (без параметров выводит информацию об атрибутах всех файлов)

rights

Право на доступ

строка

Буквы

(рус./лат.) и цифры, *, ?

-

строка

Буквы

(рус./лат.)

-

Устанавливает разрешение на доступ к файлам и каталогам (параметр 1 – маска файлов, параметр 2 – группа пользователей, имеющих право на доступ)

info

информация

строка

Все буквы и цифры (первая буква) и *

-

строка

dir, file, proc

Proc

Выводит информацию на экран о состоянии процесса или о директории, или о файле

3.2. Системные вызовы

Системные вызовы - это обращение к средствам ОС из выполняемых процессов. Эти средства ОС часто бывают скрыты от конечных пользователей. Для обеспечения переносимости программ работа в среде языков программирования в некоторой степени инвариантна по отношению к текущей операционной системе. Однако реализация алгоритмического языка для определенной операционной системы использует системные вызовы. Например, операторы ввода/ вывода в конечном счете транслируются в последовательности системных вызовов.

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

Таблица 3.2 – Список системных вызовов

Системная функция

Наименование

Параметр 1

Параметр 2

Описание

Тип

Диапазон

значений

Тип

Диапазон

значений

sistp

Ожидать сообщение от процесса

строка

Буквы

-

-

Ожидание сообщения от процесса

kill

Уничтожить процесс

строка

Буквы

-

-

Принудительное уничтожение дочернего процесса64

shmget

Выделить память

число

0.. 216

число

0..max

Выделение памяти с 1 параметром – адрес и 2 параметром – кол-во (max – системная переменная, хранящая максимальное значение выделяемой памяти)

free

Освободить память

число

0…216

-

-

Освобождение памяти по указателю (параметр – адрес)

open

Открыть файл

строка

Буквы

число

0..216

Открыть файл ([/r]-открыть для чтения; [/w]-открыть зля записи;[/p]-пароль для доступа;)

1 параметр – путь. имя, 2 параметр - адрес

close

Закрыть файл

число

0.. 216

-

-

Закрыть файл (параметр – адрес)

setpos

Установить позицию файла

число

0.. 216

число

0..232

Установить позицию в файле, заданным своим дескриптором (1 параметр – адрес файла, 2 параметр - позиция)

write

Запись байта в файл

число

0.. 216

число

0..255

Записать байт в файл и сместить позицию (1 параметр – адрес, 2 параметр – на сколько сместить позицию)

read

Чтение байта из файла

число

0.. 216

число

0..255

Прочитать байт из файла и сместить позицию

3.3 Язык пакетных файлов

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

Таблица 3.3 – Команды пакетных файлов

Мнемоника

Наименование

Параметр 1

Параметр 2

Описание

Тип

Диапазон значений

Умолчания

if_proc_done <имя>

переход если процесс завершен

строка

-

-

-

если указанный процесс завершен то выполняется следующий блок команд

execute <N> <имя>

запуск процесса

число

[0;31]

10

строка

запуск процесса с указанным приоритетом

while_work <имя>

цикл, пока активен процесс

строка

-

-

-

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

goto <N>

переход на строку

число

1

переход на указанную строку пакетного файла

pause <сообщение>

пауза выполнения и вывод сообщения

строка

-

«Нажмите любую клавишу…»

-

приостанавливает выполнение команд, выводит сообщение на экран и ожидает нажатия любой клавиши