- •Понятие «Операционная система». (1-1)
 - •Расположение ос в общей структуре компьютера
 - •Функции ос
 - •Блок управления процессом. Операции над процессом. (15-1, 28-1)
 - •Машинные регистры
 - •Ос поддерживает следующие операции над процессами:
 - •Понятие прерывания. Схемы прерываний. (16-1)
 - •Понятия файла, символьного набора, организации файлов. Средства файловой системы. (23-1, 26-1)
 - •Блок управления файлом. (25-1)
 - •Топология файловой системы. (26-1, 24-1)
 - •Реализация файлов и каталогов. (9-1, 24-1)
 - •Реализация файлов
 - •Реализация каталогов
 - •Стратегии управления памятью. Концепции распределения памяти. Алгоритмы замещения. (18-1)
 - •Существует большое количество алгоритмов замещения:
 - •Концепции распределения памяти:
 - •Организация памяти при связном распределении. Оверлейные перекрытия. (19-1)
 - •Организация памяти на основе мультипрограммирования. (20-1)
 - •Организация памяти на основе мультипрограммирования с фиксированными разделами.
 - •Организация памяти на основе мультипрограммирования с переменными разделами.
 - •Организация памяти на основе свопинга. Битовые карты и связный список свободных и занятых блоков. (21-1) Свопинг
 - •Битовые карты и связный список свободных и занятых блоков.
 - •Концепция виртуальной памяти. (22-1)
 - •Способы реализации вп
 - •Преобразование V в ψ
 - •Расслоение памяти. Регистр перемещений. Прерывания и опрос состояний. (2-1) Метод расслоения памяти (интерливинг)
 - •Регистр перемещения
 - •Прерывания и опрос состояний
 - •Буферизация. Периферийные устройства. Защита памяти. (3-1) Буферизация
 - •Периферийные устройства
 - •Защита памяти
 - •Таймер. Каналы ввода/вывода. Захват цикла. (4-1) Таймер и часы
 - •Каналы ввода-вывода
 - •Захват цикла
 - •Относительная адресация. Режимы работы эвм. (5-1) Относительная адресация
 - •Режим работы компьютера
 - •Виртуальная память. Мультипроцессорная обработка. Прямой доступ к памяти. (6-1) Виртуальная память
 - •Мультипроцессорная обработка
 - •Прямой доступ к памяти
 - •Программирование на машинном языке. Ассемблеры и макропроцессоры. Компиляторы. (7-1) Программирование на машинном языке
 - •Ассемблеры и макропроцессоры
 - •Компиляторы
 - •Конвейеризация. Иерархия памяти. (8-1) Конвейеризация
 - •Иерархия памяти
 - •Система управления вводом/выводом. Спулинг. (10-1) Система управления вводом/выводом
 - •По системы управления вводом/выводом (не надо)
 - •Спулинг
 - •Процедурно-ориентированные и проблемно-ориентированные языки. Интерпретаторы. (11-1) Процедурно-ориентированные и проблемно-ориентированные языки.
 - •Интерпретаторы
 - •Абсолютные и перемещающие загрузчики. Связывающие загрузчики и редакторы связей. (12-1) Абсолютные и перемещающие загрузчики
 - •Связывающие загрузчики и редакторы связей
 - •Микропрограммирование. Эмуляция. Горизонтальный и вертикальный микрокод. (13-1) Микропрограммы
 - •Горизонтальный и вертикальный микрокод
 - •Эмуляция
 - •Основные характеристики ос unix. (27-2)
 - •Достоинства Unix систем
 - •Недостатки Unix систем
 - •Структура ос unix. Ядро и процессы. (26-2)
 - •Структура процесса ос unix. Состояние системы и виды взаимодействия в ос unix. (25-2) Состояние системы
 - •Структура процесса
 - •Дескриптор процесса в ос unix. Контекст процесса. (5-2)
 - •Создание процессов в ос unix. (11-2)
 - •Планирование процессов в ос unix. (13-2)
 - •Информационные связи между процессами в ос unix. (10-2)
 - •Управление памятью в ос unix на основе свопинга (1-2)
 - •Управление памятью в ос unix на основе страничной подкачки. (2-2)
 - •Алгоритм замещения страниц в ос unix. (3-2)
 - •Типы файлов в файловой системе ос unix. Топология файловой системы. Последние изменения в файловой системе ос unix. (18-2)
 - •Последние изменения в файловой системе ос unix
 - •Индексный дескриптор файла в ос unix. Таблица файлов. (6-2)
 - •Поддержка файлов ядром ос unix . (4-2)
 - •Физическая и логическая организация файловой системы ос unix. (16-2)
 - •Логическая и физическая организация системы управления вводом/выводом ос unix. (15-2)
 - •Структурная организация системы управления вводом/выводом ос unix. (12-2)
 - •Реализация системы управления вводом/выводом ос unix. (14-2)
 - •Функционирование ос unix. (7-2, 19-2)
 - •Начальная загрузка и выход на интерактивный режим в ос unix. (25-2)
 - •Интерактивный режим работы в ос unix. (24-2)
 - •Понятие системного вызова. Системные вызовы system и execl. (23-2)
 - •Системныевызовыработысфайламиopen,creat,close,dup,dup2.(21-2, 19-2)
 - •Системный вызов open
 - •Системный вызов creat
 - •Системные вызовы dup, dup2
 - •Системные вызовы ввода/вывода. (20-2, 8-2)
 - •Системный вызов read
 - •Системный вызов write
 - •Системный вызов close
 - •Системный вызов pipe
 - •Интерпретатор команд shell. (28-2)
 - •Экранирование
 - •Встроенные команды языка shell
 - •Внешние команды
 - •Сравнение чисел
 
Системный вызов close
Системный вызов close отсоединяет файл от процесса, т.е. закрывает файл. Возвращает 0 в случае успеха и -1 в случае неудачи.
Системный вызов pipe
Системный вызов pipe создает коммуникационный канал межпроцессной связи между двумя взаимосвязанными процессами:
int pipeHandle[2];
if (pipe(pipeHandle) == -1)
{ авария }
pipeHandle[0] – для чтения из канала.
pipeHandle[1] – для записи в канал.
Синхронизация обмена построена таким образом, что если процесс читает пустой канал, он будет ждать появления данных. Если в канале осталось много несчитанной информации, записывающий процесс будет ждать освобождения места в канале.
Если у канала доступ на запись закрыл, при чтении из такого канала будет получен код ответа 0, что означает конец файла. Если у канала доступ на чтение закрыт, будет получен сигнал разорванного канала SIGPIPE.
Общепринятый метод создания каналов состоит в следующем: программа создает канал по системному вызову pipe, после чего разделяется на две копии с помощью fork. Затем в одном из полученных процессов закрывается сторона канала для чтения (pipeHandle[0]), а с другой стороны для записи (pipeHandle[1]). После чего по созданному однонаправленному каналу производиться обмен информацией.
Интерпретатор команд shell. (28-2)
Интерпретатор команд shell – один из наиболее важных и самых сложных программ в ОС Unix. Он обеспечивает интерфейс пользователь – ядро и выполняет следующие функции:
Интерпретирует команды.
Обрабатывает имена файлов, которые определены через метасимволы.
Осуществляет переадресацию ввода/вывода.
Создает срезу пользователя.
Поддерживает командный язык.
(Раскрыть эти функции!!)
Разновидностиshell
B-shell (Stephen Bourne, Bell Labs).
C-shell (Bill Joy, Berkley, C-подобный).
K-shell (David Korn, Bell Labs, сочетаниеBиC).
P-shell (POSIX стандарт).
Метасимволы
- произвольная строка символов.
? – произвольный символ (один).
[] – альтернативный символ подстановки.
Переадресация ввода/вывода
Если требуется, shell позволяет легко перенаправить устройства ввода/вывода:
> - запись в файл, если файл не существует, то создается новый, иначе файл перезаписывается (жесткое перенаправление).
< - ввод из файла (с начала) в команду.
>> - запись в файл, если файл не существует, то создается новый, иначе файл дополняется с конца (мягкое перенаправление).
>> - ввод из файла не сначала (lseek для установки позиции).
Конвейер команд
Команда 1|Команда 2
Позволяет направить результат выполнения одной команды сразу на вход другой команде. Информационная связь осуществляется через межпроцессный канал.
Еще плюшки
Команда 1 && Команда 2 – вторая команда выполняется только, если успешно выполнилась первая.
Команда 1 || Команда 2 – обе команды выполняются в любом случае.
Команда& - запуск команды в фоновом режиме (подавление вывода на консоль всякой информации).
Особенности программирования на командном языке в ОС UNIX. (9-2)
Поддержка командного языка
Для эффективного взаимодействия команд в рамках программ на командном языке интерпретатор shell разрешает использование специальных переменных – обычных идентификаторов, которые объявляются и инициализируются присваиванием, и которым при использовании добавляется символ $.
Помимо переменных, введенных пользователем, shell позволяет использовать специальные системные переменные:
$ - все переменные интерпретатора shell.
S# - количество внешних аргументов.
$1, S2… - внешний аргумент 1, 2 и т.д.
$? – результат выполнения последней команды shell.
$$ - идентификатор текущего процесса.
