- •Проектирование Операционных Систем
- •Определение ос
- •Промышленная эксплуатация
- •Принцип модульности
- •Принцип функциональной избирательности
- •Принцип перемещаемости
- •Принцип защиты
- •Состояние процессов
- •Переходы между состояниями
- •Классификация процессов
- •Характеристики процессов
- •Определение
- •Классификация ресурсов
- •Интерфейс пользователя
- •Командный интерфейс
- •Примеры командных файлов из операционных систем
- •Эльбрус
- •3. Vm, os/2: rexx (пример аналога команды unix Grep)
- •Графический интерфейс
- •Основные понятия gui
- •Обработка прерываний
- •Подсистемы ос
- •Подсистема управления процессами
- •Долгосрочное планирование
- •Краткосрочное планирование
- •Дескрипторы процессов
- •Искусственное снижение уровня мультипрограммирования
- •Подсистема распределения ресурсов
- •Подсистема управления памятью
- •Два уровня распределения оперативной памяти
- •Задачи распределения памяти
- •Выделение
- •Подсистема управления вводом/выводом
- •Требования к подсистеме управления ввода/вывода:
- •Буферизация ввода вывода
- •Пример реализации ввода/вывода в системе unix
- •Пример реализации ввода/вывода в ос vm
- •Организация виртуальной памяти
- •Структуризация адресных пространств
- •Схемы страничной структуризации.
- •Схемы сегментной структуризации.
- •Сегментно-страничная структуризация
- •Требования к вп
- •Задачи управления виртуальной памятью
- •Задача размещения
- •Задача перемещения
- •Задача взаимного исключения
- •Задача «производитель-потребитель»
- •Модификации данной задачи
- •Задача «читатели-писатели»
- •Задача «обедающие философы»
- •Механизмы синхронизации Критерии оценки механизмов синхронизации
- •Архитектура механизмов синхронизации
- •Синхронизация с помощью прерываний
- •Синхронизация при помощи переменной состояния
- •Семафоры
- •Простые семафоры
- •Множественные семафоры
Интерфейс пользователя
Интерфейс пользователя используется для организации общения ЭВМ с пользователем. Средства интерфейса:
-
Команды, командные языки.
-
Графический интерфейс.
Командный интерфейс
Обязательно присутствует командный интерфейс в операционных системах? допускающих пакетное выполнение заданий.
Команды бывают двух типов:
-
Встроенные команды.
-
Исполняемые файлы.
Примеры командных файлов из операционных систем
-
OS/VS
//JOBNAME JOB (8,K4),'Иванов',CLASS=H,TIME=10
// EXEC ASMFCLG,COND.LKED=(6.LE.ASM)
//ASM.SYSIN DD *
...... текст программы ....
/*
//GO.SYSIN DD *
... исходные данные ...
/*
//
-
Эльбрус
_НАЧАЛО
_Ф64 КОД:=ГЕНФАЙЛ(БАРАБАН,ДЛИНСВС:10);
_ЕСЛИ АВТОКОД(_ТФАЙЛ
!***!
... текст программы ...
,0,КОД)<5
_ТО ПРОГР(КОД) ()
_ВСЕ
_КОНЕЦ
3. Vm, os/2: rexx (пример аналога команды unix Grep)
/* grep */
address command /* все что не расспознано как синтаксис языка, распознается как терминальная комманда */
parse upper arg target files /* разбор переданных аргументов (разобрать, прописными, аргументы, цель поиска, список фалов*/
if target=”” then do /* нет цели поиска*/
say “Target not specified”
exit 100
end
“MAKEBUF” /* комманда операционной системы. Создание буффера в стеке. */
“LISTFILE” files “(STACK” /* выводится информация о файлах в стек. */
SRC=RC /* RC – код возврата */
if SRC<>0 then do /* командна LISTFILE завершилась неуспешно */
“DROPBUF”
exit SRC
end
do queued() /*количество строк в стеке (кол-во файлов) */
parse upper pull file /* pull – стек */
old=queued()
“MAKEBUF”
“EXECIO * DISKR” file /* выполнение ввода/вывода из командных файлов. * - считать все до конца. DISKR – команда чтения */
do queued() - old /* для всех считанных строк */
parse pull line /* вытаскиваем строку */
if index(line, target) > 0 then /* если цель посика входит в строку */
say file”: “ line
end
“DROPBUF” /* сброс уровня стеков */
end
“DROPBUF”
exit 0
4. UNIX, Korn-Shell
# копирование каталога
Copy_Dir_Struct() { #функция
typeset SOURCE TARGET LIST ENTRY #Объявление переменных
SOURCE=$1 #присвоение параметров
TARGET=$2
mkdir -m 755 $TARGET 2>>/dev/null # Создать каталог
if [ $? != 0 ]; then #проверка кода возврата
echo “Cannot create ${TARGET}”
exit 1
fi
LIST = `ls ${SOURCE}` #присваевает переменной LIST результат выполнения команды в обратных апострофах.
for ENTRY in LIST # Для каждого элемента ENTRY в списке LIST
do
if [ -d ${SOURCE}/${ENTRY} ] # если каталог
then
Copy_Dir_Struct “${SOURCE}/${ENTRY}” “${TARGET}/$[ENTRY}” 2>>/dev/null #рекурсивно копируем подкатолог
else
cp “${SOURCE}/${ENTRY}” “${TARGET}/ENTRY” 2>>/dev/null
if [ $? != 0 ]; then exit 1; fi
fi
done
}
Copy_Dir_Struct $1 $2
Графический интерфейс
GUI транслирует действия пользователей в команды системы.
Во всех системах графический интерфейс является объектно-ориентированным.
Впервые GUI появился на тн. LISP-машинах. Функции языка LISP рассматривались как инструкции.
Основные понятия gui
-
Окно – прямоугольник отображающий данные приложения
-
Рабочий стол – окно самого верхнего уровня.
-
Уровень окна - ....
-
Активное (текущее) окно – окно верхнего уровня того приложения с которым работает пользователь, обычно обладает фокусом ввода.
-
Фокус ввода
-
Диалоговое окно – окно специального назначения, предназначенное для выполнение некоторого действия.
-
Модальное диалоговое окно – диалоговое окно не позволяющее пользователю делать что либо, пока он не произведет действия с диалогом.
Элементы интерфейса (вариации окон)
-
Меню.
-
Панель инструментов.
-
Строка состояния.
-
Шкала прокрутки (scroll).
-
Закладки листов (tab control).
-
Кнопки, переключатели.
-
Списки.
-
Текстовые поля.
-
Статичный текст.
Дисциплины
Дисциплина – набор правил.
Очередь – упорядоченный перечень запросов.
Назначение дисциплин:
-
Формирование очереди.
-
Обслуживание очереди.
По способу назначения приоритетов дисциплины делятся на:
-
Статические - приоритеты неизменны и назначены заранее.
-
Динамические – приоритеты могут изменяться и назначаются по ходу работы.
Обслуживание в порядке поступления (FIFO)
-
Заявки поступают в конец очереди.
-
Заявки на обслуживание поступают из начала очереди.
-
Заявка обслуживается до удовлетворения.
Обслуживание в порядке обратном поступлению (LIFO)
-
Заявки поступают в конец очереди.
-
Заявки на обслуживание поступают из конца очереди.
-
Заявка обслуживается до удовлетворения.
Круговой циклический алгоритм (развитие FIFO)
-
Ресурс предоставляется процессам порциями.
Многоочередные дисциплины
Являются аналогом кругового циклического алгоритма с учетом некоторых свойств запросов.
Прерывания – основа многозадачности.
Прерывания – способ оповещения выполняющейся программы об изменениях, произошедших вне нее. Выделяют такие прерывания, как:
-
Прерывания, связанные с управление ресурсами (получен, освобожден), они носят синхронный характер.
-
Прерывания, связанные с синхронизацией параллельных процессов.
При этом каждый класс прерываний имеет собственный приоритет.
В IBM System 370 существует 6 классов прерываний
-
Внешние. (Средства отсчета времени, другие ЦПУ и другие Вычислительные Машины)
-
Ввод/Вывод. (Внешние устройства, устройства управления, устройства ввода/вывода)
-
Программные прерывания. (Особые случаи при выполнении программ)
-
Прерывание по обращению к супервизору. (команда обращения к супервизору)
-
Прерывание от схем контроля (Схемы контроля вычислительной машины)
-
Прерывание повторного пуска. (Кнопка повторного пуска и другие процессоры многопроцессорного комплекса)