Алгоритм first come first served (fcfs).
ПЕРЕЧЕНЬ ВОПРОСОВ ДЛЯ ПОДГОТОВКИ К ЭКЗАМЕНУ ПО ДИСЦИПЛИНЕ «СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ» Теоретические вопросы 1. Понятие системного программирования. 2. Этапы подготовки программы. 3. Трансляция. 4. Интерпретация. 5. Прерывания. 6. Операционные системы. 7. Управление задачами и памятью в операционных системах. 8. Качество диспетчеризации и гарантии обслуживания. 9. Диспетчеризация задач с использованием динамических 10. Файловая система FAT. 11. Система NTFS. 12. Мастер-таблица. Что такое объект ядра. Учет пользователей объектов ядра. Защита. Таблица описателей объектов ядра. Создание объекта ядра. Закрытие объекта ядра Совместное использование объектов ядра несколькими процессами. Наследование описателя объекта. 21. Изменение флагов описателя. 22. Дублирование описателей объектов. Понятие процесса и потока. Потоки. Реализация процессов. Создание процесса. 27. Прогон программы создания процесса. Реализация потоков. Оператор LOCK. Классы синхронизации в.NET FRAMEWORK. Методы класса Monitor: Wait, Pulse и PulseAll. 32. Проблемы параллельного программирования. 33. Необходимость синхронизации. 34. Задача взаимного исключения. Решения задачи взаимного исключения: Использование запрещения прерываний 36. Решения задачи взаимного исключения: Алгоритмы Деккера и Петерсона. 37. Решения задачи взаимного исключения: Использование специальных команд ЦП. 38. Высокоуровневые механизмы синхронизации: Семафоры. 39. Высокоуровневые механизмы синхронизации: Мониторы.
40. Высокоуровневые механизмы синхронизации: Синхронные сообщения.
41. Взаимоблокировка. Реализация синхронизации: проблема взаимоисключения. Реализация синхронизации: переменная-замок. Реализация синхронизации: TSL команды. Реализация синхронизации: спин-блокировка. Реализация синхронизации: CRITICAL SECTIONS. Синхронизация потоков с использованием объектов ядра. 48. Синхронизация в ядре. Способы межпроцессного обмена. Понятие о разделяемом ресурсе. Каналы связи. Организация каналов в ОC WINDOWS. Физические принципы организации ввода-вывода. 54. Структура контроллера устройства. 55. Опрос устройств и прерывания. Исключительные ситуации и системные вызовы Прямой доступ к памяти (DIRECT MEMORY ACCESS – DMA). Логические принципы организации ввода-вывода. 58. Систематизация внешних устройств и интерфейс между базовой подсистемой ввода-вывода и драйверами. Буферизация и кэширование. SPOOLING и захват устройств. Обработка прерываний и ошибок. 62. Алгоритмы планирования запросов к жесткому диску. Алгоритм FIRST COME FIRST SERVED (FCFS). 64. Принципы программного обеспечения ввода-вывода: задачи ПО; управляемый прерываниями ввод-вывод; ввод-вывод с использованием DMA. 65. Программные уровни ввода-вывода: обработчики прерываний, драйверы устройств, независимое от устройств по ввода-вывода; по ввода-вывода пространства пользователя. 66. Подсистема ввода-вывода в MS WINDOWS 2010: компоненты ввода-вывода и их взаимодействие; объекты, осуществляющие взаимодействие; драйвера. 67. Файловые системы. Основные понятия. 68. Архитектура файловой системы. 69. Организация файлов и доступ к ним. 70. Каталоговые системы. 71. Физическая организация файловой системы. 72. Физическая организация и адресация файла. 73. Физическая организация FAT-системы. 74. Файловые операции. 75. Контроль доступа к файлам.
Практические вопросы 1. Вывести количество времени, прошедшее с момента запуска операционной системы (формат: сутки, часы, минуты, секунды). 2. Написать программу, которая выводит текущее время в MessageBox. 3. Написать функцию addslashes (char * str), которая вставляет символ обратного слэша (\) перед одинарными и двойными кавычками, встречающимися в строке. 4. Написать функцию ltrim (char * str), которая удаляет пробелы в начале строки. 5. Написать функцию comparestrings (char * str1,char * str2), которая сравнивает количество символов в строках. Возвращаемые значения: 1 - если str1 короче, чем str2; 2 - если str2 короче, чем str1; 3 - если количество символов в строках одинаково. 6. Создание одного из объектов ядра и получение описателя(handle) на него (функции Create: - CreateProcess, CreateMutex etc). 7. Создать поток, который выводит два сообщения через MessageBox с интервалом в 5 секунд. После окончания его работы основной поток процесса выводит сообщение об этом. 8. Создать поток и вывести в нем параметры текущего процесса: заголовок окна, расстояния по осям X и Y от левого верхнего угла, ширину и высоту окна, дескрипторы стандартных устройств ввода и вывода. 9. Вывести параметры текущего процесса: заголовок окна, расстояния по осям X и Y от левого верхнего угла, ширину и высоту окна, дескрипторы стандартных устройств ввода и вывода. Затем создать процесс с заданными параметрами заголовка окна, ширины, высоты и смещения от левого верхнего угла экрана. После чего вывести те же параметры, что и для первого процесса. 10. Создать две функции потоков, которые выполняют следующие расчеты:
Поток 1: a=(b+3); b = (b-1); Поток 2: b = (b+2);
Каждая функция потока вычисляет свою формулу в цикле из ста итераций. При вычислении значения переменных а и b выводить на экран.
11. Произвести те же вычисления при помощи критических секций. После этого вывести значения переменных a и b на экран.
12. Написать программу: создает объект ядра «событие» выводит на экран текущее время и делает задержку на пять секунд, после чего освобождает «событие»; Перед задержкой запустить Программу 2;
13. Написать программу: ждет, пока освободится объект ядра «событие», после чего выводит на экран текущее время.
14. Создать 3 функции потоков, каждая из которых выводит в цикле из 25 итераций сообщение «Это поток № номер_потока». Сообщение заносить в строку, на которую указывает глобальная переменная str. Сделать синхронизацию потоков при помощи мьютексов.
15. Создать два дочерних процесса и соединить их анонимным каналом. Для этого использовать переопределение стандартных устройств ввода/вывода. Основная программа создает канал, процессы и передает им описатели чтения/записи канала. Вторая программа получает от родительской описатель записи в канал в качестве стандартного устройства вывода и передает по каналу данные из файла (определяется программистом). Третья программа получает описатель чтения из канала в качестве стандартного устройства ввода, считывает через него информацию из канала и выводит ее на экран. 16. Решить задачу обедающих философов (n=5). Три процесса записывают в один и тот же файл текстовую строку. Первый процесс создает файл, второй процесс может работать с файлом, если первый успешно завершил свою работу, третий процесс дописывает в конец файла свою строку только в том случае, если второй процесс успешно выполнил свою работу и освободил файл. Два процесса записывают данные в файл, один считывает и выводит их на экран. Доступ к файлу возможен только в монопольном режиме. 17. Разработать драйвер устройства, имитирующий последовательный ввод/вывод.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|