Салимóненко Дмитрий Александрович

Экзаменационные материалы - лето 2021 г.

Экзамен по дисциплине: ОПЕРАЦИОННЫЕ СИСТЕМЫ, группа 26

Дата экзамена: 18 июня 2021 г.

Примечание 0. Моя система приема экзаменов у студентов - это система Физтеха (МФТИ). Ну, может, немного адаптированная для местных условий. Это система НЕ предполагает зазубривания формулировок, определений, концепций, а также материала по той или иной теме.

Поэтому в рамках этой системы вполне допускается, что студент может "списать" со шпаргалки абсолютно легально - прямо на экзамене. Ну, чтобы не создавать лицемерную видимость того, что он, якобы "выучил", а сам при этом боязливо использует "шпоры" и прочие "бомбы", а то и скрытые наушники. Т.е. пусть студент "спишет" ответ на экзамене. НО: при этом ответ должен быть более-менее полным развернутым. Крайне приветствуются красочные рисунки, схемы, диаграммы, если они имеют прямое отношение к ответу на экзамене. Чем красочнее, нагляднее и, вместе с тем, более полезна для раскрытия темы экзаменационного вопроса та или иная схема, рисунок - тем больше шансов у студента получить как можно более высокую оценку.

Примечание 1. Экзамен будем сдавать следующим образом. К дню и времени экзамена в Вашей группе по этому предмету (дисциплине) для каждого допущенного к экзамену студента будет сформирована его индивидуальная страница. Просматривать ее сможет любой желающий, но оставлять сообщения сможет только сам этот студент (при условии правильности вводимого ника и e-mail) и преподаватель, т.е. Салимоненко Д.А. Ссылки на индивидуальные страницы будут размещаться здесь (ниже). На каждой индивидуальной странице будет присутствовать содержимое экзаменационного билета. В экзаменационном билете будет 2 теоретических вопроса и 1 практическое задание (из перечней, приведенных ниже). Отбор вопросов и заданий для каждого студента будет осуществляться автоматически (без чьёго-либо участия) случайным образом и так, что, скорее всего, одинаковых вопросов ни у кого из студентов Вашей группы не будет.

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

Примечание 2. Чтобы не потерять возможность оставлять сообщения на индивидуальных страницах, просьба - тщательно сохранять или запоминать введенные Вами ранее ник (Ф.И.О.) и электронную почту (e-mail). Вообще, конечно, нормальные браузеры, как правило, сохраняют значения, вводимые пользователями в соответствующих полях ввода на каждом сайте. И при попытке ввода предлагают, в первую очередь, именно их. Однако, если Ваш браузер не делает этого, значит, Вам необходимо как-то по-другому сохранить/запомнить вводимые Вами Ф.И.О. и e-mail. Иначе Вы не сможете оставлять сообщения на Ваших индивидуальных экзаменационных страницах. Если Вы вдруг все-таки забыли свои данные - пишите мне на почту, я восстановлю их. Но, имейте в виду, что это займет определенное время. Поэтому, чтобы потом не тратить время, лучше - тщательно сохраняйте эти свои данные, чтобы не забыть их.

Примечание 3. Некоторые вопросы, если они не рассматривались на наших занятиях, Вам нужно освоить самостоятельно. Благо, в интернете информации много.

Теоретические вопросы:

  1. Характеристика процесса в Linux (состав процесса, состав контекста процесса, схема состояний процесса)
  2. Какие типы адресов (используемых для управления оперативной памятью) Вы знаете? Какие подходы к преобразованию виртуальных адресов в физические вы знаете? Кратко опишите их.
  3. В каких режимах может работать IA-32? В каких случаях транслятор создает объектный код программы не в виртуальных, а в физических адресах?
  4. Как формируется физический адрес при сегментной адресации? Ответ поясните схемами.
  5. Как формируется физический адрес при страничной адресации? Ответ поясните схемами.
  6. Расскажите про три режима работы процессора Intel. Нарисуйте примерные схемы виртуального адресного пространства для реального и защищенного режимов (с указанием на них характерных областей памяти). И поясните эти схемы. В чем их сходство и различие, почему.
  7. Что такое дескриптор сегмента? Какие бывают дескрипторы (перечислите и опишите ВСЕ основные их виды). Отобразите обобщенную схему структуры процессора с указанием основных его регистров, причем, на этой схеме теперь должны быть отображены регистры, взаимодействующие с таблицами дескрипторов, т.е. с регистрами IDTR, LDTR, GDTR, TR, CR3 и т.д.
  8. Что такое многозадачность? Какими средствами она поддерживается? Возможна ли реальная многозадачность в условиях, когда на компьютере работает 1 процессор? Что такое квази-многозадачность? Подробно распишите, нарисуйте графики выполнения программ в условиях реальной и квази-многозадачности.
  9. Какие правила на основе привилегий применяются для защиты сегментов кода, стека и данных? Дайте, по возможности, полный перечень таких правил и поясните, как именно, в каком смысле они способствуют защите.
  10. Что такое страничное прерывание, почему оно возникает? Опишите процесс обработки страничного прерывания с внешним обработчиком страниц.
  11. Чем ограничивается максимальный размер физической памяти, которую можно установить в компьютере определенной модели? Чем ограничивается максимальный размер виртуального адресного пространства, доступного приложению? Расскажите про виды сегментов виртуальной оперативной памяти (перечень, расположение, функции, доступ из пространства пользователя и/или ядра). Поясните подробно.
  12. Может ли прикладной процесс использовать системную часть виртуальной памяти? Какое из этих двух утверждений верно: А) все виртуальные адреса заменяются на физические во время загрузки программы в оперативную память; Б) виртуальные адреса заменяются на физические во время выполнения программы в момент обращения по данному виртуальному адресу. Почему? Как происходит переключение процесса из пользовательского пространства в пространство ядра и обратно? Схема, детальное пояснение.
  13. Что такое виртуальная память? Поясните схемами, как используется виртуальная память, как распределяется на физическую, для чего это делается. Какой из следующих методов распределения памяти может рассматриваться как частный случай виртуальной памяти: А) распределение фиксированными разделами; В) распределение динамическими разделами; С) страничное распределение; D) сегментное распределение; Е) сегментно-страничное распределение.
  14. Расскажите про распределение памяти перемещаемыми разделами. Оно основано на применении процедуры сжатия. Имеет ли смысл использовать данную процедуру при страничном распределении? А при сегментном? Поясните разные значения термина «свопинг». Что такое файл подкачки и как его величина влияет на производительность системы?
  15. Почему размер страницы выбирается равным степени двойки? Можно ли принять такое же ограничение для сегмента? На что влияет размер страницы? Каковы преимущества и недостатки большого размера страницы? Чем определяется размер сегмента? Подробное пояснение.
  16. Пусть в некоторой программе, работающей в системе со страничной организацией памяти, произошло обращение по некоему виртуальному адресу. Что произойдет дальше? Где хранятся таблицы страниц и таблицы сегментов? Нарисуйте схему страничного распределения памяти и поясните его работу.
  17. Чем определяется количество таблиц сегментов, имеющихся в операционной системе в произвольный момент времени? Какие характеристики содержит таблица сегментов и таблица страниц при сегментно-страничной организации памяти? Нарисуйте схему. Детально поясните.
  18. Сегментно-страничное распределение: полная схема, детальное объяснение ее работы. Достоинства и недостатки по сравнению с другими видами (сегментным и страничным) распределениями памяти.
  19. Перечислите (в виде перечня) основные алгоритмы выгрузки страниц (которые могут использоваться, например, для своевременной очистки кэша или основной оперативной памяти). Пусть ОС реализует выгрузку страниц из физической оперативной памяти на основе критерия «выгружается страница, которая не использовалась дольше остальных». Предложите алгоритм вычисления данного критерия, использующий аппаратно-устанавливаемые биты доступа (биты R и М). Актуален ли предложенный Вами алгоритм в случае, если эти биты не предоставляются архитектурой компьютера, т.е. если придется их эмулировать программно?
  20. Что такое поток? Поясните схематизацию потоков (схема). При помощи каких функций ОС можно создать процесс, поток? Поясните их особенности.
  21. Что такое системный вызов? Чем отличаются системные вызовы в Linux и Windows? Опишите этапы выполнения системного вызова в Linux/x86-32.
  22. Для чего существуют приоритеты потоков/процессов? Какие они бывают? Нарисуйте и поясните граф состояний потока с учетом двух разных алгоритмов их планирования.
  23. Что такое DMA-контроллер? Опишите его работу. Почему в современных операционных системах для прикладных программ исключается прямой доступ к устройствам? Обоснуйте. Какая технология в настоящее время используется для обеспечения взаимодействия программы с устройствами? Перечислите и охарактеризуйте ее разновидности.
  24. Уровни и основные функции системы ввода-вывода (5 основных уровней). Опишите их. Какими основными способами могут быть подключены устройства к ЭВМ? (4...5 способов).
  25. Приведите примеры работы основных консольных команд, получающих информацию о файле или каталоге (его размер, тип, права доступа и т.д.). Расскажите, как работают такие команды (со скриншотами).
  26. Что такое драйвер? У каких устройств бывают драйвера? Бывают ли устройства, НЕ имеющие драйверов? Рассмотрите виды драйверов (блок-, байт ориентированные), определите их достоинства и недостатки.
  27. Что такое ISR (Interrupt Service Routine), для чего она необходима при работе драйверов? Что такое IO stack location - стек ввода – вывода? Поясните схемой.
  28. Рассмотрите структуру типичного драйвера, опишите его основные модули и их функции. Что такое WDM – драйвера? Схема.
  29. Что такое Device Stack, Driver Stack (стек устройств, стек драйверов)? Что такое Device Extension (Расширение обьекта устройства)? Схема.
  30. Чем отличается аппаратный (низкоуровневый) драйвер от высокоуровневого? Что такое РnP Manager (PnP менеджер)? Как соотносятся аппаратные драйвера с уровнем HAL (Hardware Abstraction Layer) - слоем аппаратных абстракций?
  31. Для чего необходимы Synchronization Objects (Обьекты синхронизации), поясните их работу. Опишите такой метод программирования, как Polling. Чем он актуален для реализации драйверов?
  32. Какие методы физической организации файлов на жестком диске Вы знаете? Кратко опишите их.
  33. Опишите основные утилиты, которые используются при разработке драйверов под Windows и утилиты - под Linux.

Практические задания:

  1. Есть файл с именем x.txt, расположенный в каталоге, имеющем полный путь DIR. Напишите программный код на языке С/С++, копирующий этот файл в каталог DIR/Catalog с именем y.txt. Детально опишите его работу.
  2. Напишите программный код, который получает в качестве входного параметра имя объекта файловой системы (файла, мягкой ссылки, жесткой ссылки или каталога). Программный код должен уметь определять тип этого объекта, выводить название типа в консоль и, после этого, удалять этот объект. Для объекта типа «каталог» нужно предусмотреть возможность находящихся в нем вложенных непустых каталогов и файлов. Детально опишите его работу.
  3. Напишите программный код на языке С/С++, воспринимающий в качестве входного параметра имя объекта файловой системы (файла, мягкой ссылки, жесткой ссылки или каталога) и выводящий в консоль его свойства. Детально опишите его работу.
  4. Напишите программный код, получающий в качестве параметра имя произвольного каталога и определяющий и выводящий в консоль количество объектов файловой системы  (файлов, мягких ссылок, жестких ссылок, каталогов), находящемся в этом каталоге, в том числе с учетом наличия вложенных каталогов. Детально опишите его работу.
  5. Взяв за основу программу для удаления файла, напишите программный код, определяющий и выводящий в консоль виртуальные адреса всех используемых в ее тексте переменных (массивов, …), функций (процедур). Детально опишите его работу.
  6. Реализовать «программу-сервер», получающую на вход введенный с консоли параметр и запускающую ту или иную процедуру в зависимости от этого параметра (ограничиться 3…4 процедурами, например, копирования файла, удаления файла, просмотра свойств файла). Сами процедуры реализовывать не надо, используйте вместо них соответствующие функции-заглушки. Предусмотреть обработку ошибочных ситуаций (если значение параметра введено некорректно или неправильно). Детально опишите его работу.
  7. Напишите программный код, получающий на вход имя произвольного каталога, определяющий и выводящий в консоль права доступа к объектам файловой системы, находящимся в этом каталоге, с учетом их вложенности (т.е. с учетом возможности наличия вложенных каталогов и файлов). Детально опишите его работу.
  8. Напишите программный код-родитель, создающий процесс-потомок (на основе функции fork() ). Детально проанализируйте работу Вашего программного кода: кто оканчивает выполнение раньше: потомок или родитель? Почему? Что будет, если в потомок окончит работу позже родителя? Что делать в таком случае? Как избежать такой ситуации? Продемонстрируйте свои рассуждения программной реализацией. Детально опишите его работу.
  9. Напишите программный код, выводящий перечень объектов файловой системы в текущем каталоге (без учета вложенных каталогов и файлов). Вывод в консоль организовать двумя способами: сортировка по возрастанию и сортировка по убыванию. Предусмотреть возможность ввода параметра, задающего тип сортировки. Для реализации сортировки можете применить наиболее привлекательный для вас алгоритм. Детально опишите его работу.
  10. Напишите программный код, иллюстрирующий возможность возникновения состояния гонки. Предложите меры, как исправить этот код, чтобы исключить возможность гонки.
  11. Напишите простые программные коды, иллюстрирующие подключение статической библиотеки к какой-нибудь простой программе (типа Hello Word). Поясните, какими командами Вы будете содавать статическую библиотеку и подключать ее к программе.
  12. Напишите простые программные коды, иллюстрирующие подключение динамической библиотеки к какой-нибудь простой программе (типа Hello Word). Поясните, какими командами Вы будете содавать динамическую библиотеку и подключать ее к программе. Укажите 2 способа использования динамической библиотеки.
  13. Напишите простой программный код, выводящий на экран виртуальные адреса переменных и функций (команд), которые в нем используются. Нарисуйте общую схему виртуального адресного пространства с учетом полученных результатов (т.е. следует отобразить полученные Вами виртуальные адреса на этой схеме и пояснить это).
  14. Создайте простой Makefile (от 3 до 10 команд), компилирующий статическую или динамическую библиотеку и детально опишите его.

Список студентов, допущенных или условно допущенных до экзаменов:

Ф.И.О.:Сумма баллов:Оценка,
полученная на экзамене:
Байгильдин Артур25,87 баллов Перейти к экзаменационной странице
Васин Илья18,31 баллов Перейти к экзаменационной странице
Владимиров Алексей25,8 баллов Перейти к экзаменационной странице
Галлямов Ильмир23,66 баллов Перейти к экзаменационной странице
Ишмурзин Кирилл24,82 баллов Перейти к экзаменационной странице
Казиахметов Марсель29,09 баллов Перейти к экзаменационной странице
Литунов Елисей26,99 баллов Перейти к экзаменационной странице
Минигузин Артур26,9 баллов Перейти к экзаменационной странице
Садыкова Элина25,87 баллов Перейти к экзаменационной странице
Султанбаева Залифа25,74 баллов Перейти к экзаменационной странице
Сухорукова Екатерина23,85 баллов Перейти к экзаменационной странице
Туганов Динар31,27 баллов Перейти к экзаменационной странице
Хузин Рафаэль26,88 баллов Перейти к экзаменационной странице
Если Вас еще НЕТ в этом списке, это означает одно из двух: либо Вы не допущены к экзамену (например, по причине того, что не выполнили все задания, как положено), либо преподаватель (т.е. Салимоненко Д.А.) не включил Вас в экзаменационный список по иной причине. Чтобы выяснить это - спрашивайте здесь на странице или пишите мне на почту.

Если Вы по итогам выполнения заданий набрали не менее 100% от требуемого минимального количества баллов, то Вы можете сдавать экзамен на упрощенных условиях (т.н. автомат) с получением оценки 4 ("хорошо"). Для этого Вы должны явно подтвердить свое согласие на получение такой оценки на экзаменационной странице.


Экзаменационные страницы для вышеперечисленных студентов пока (вплоть до дня экзамена) приведены только для примера, т.е. для того, чтобы студент представлял, каким образом будет выглядеть экзаменационный билет. Непосредственно перед экзаменом вопросы будут перемешаны случайным образом и каждому студенту, скорее всего достанутся другие вопросы и практические задания.

Примечания в отношении некоторых студентов

Перечисленные выше студенты могут претендовать на упрощенный порядок экзамена по данному предмету, в том числе и на так называемый "автомат". За исключением тех, кто перечислен ниже. Ниже перечислены те, кто в этом семестре по этому предмету работал плохо, не полностью выполнял задания, не отвечал на вопросы или отвечал плохо, не присутствовал на наших вебинарах или пропустил более 20% занятий. Это, в частности:

Сообщения:
Всего сообщений:0


Здесь оставляют сообщения студенты группы по предмету " ":

Размер сообщения - не более 4000 символов!
Кнопка тегов pre+code
Кнопка загрузки изображения
Рисовать вручную


Подписаться на комментарии на этой странице
×