-
* Предположим, что в системе имеются два файла устройств с одними и теми же старшим и младшим номерами, при том, что оба устройства - символьного типа. Если два процесса желают одновременно открыть физическое устройство, не будет никакой разницы, открывают ли они один и тот же файл устройства или же разные файлы. Что произойдет, когда они станут закрывать устройство?
-
* Вспомним из главы 5, что системной функции mknod требуется разрешение суперпользователя на создание нового специального файла устройства. Если доступ к устройству управляется правами доступа к файлу, почему функции mknod нужно разрешение суперпользователя?
-
Напишите программу, которая проверяет, что файловые системы на диске не перекрываются. Этой программе потребовались бы два аргумента: файл устройства, представляющий дисковый том, и дескриптор файла, откуда берутся номера секторов и их размер для диска данного типа. Для проверки отсутствия перекрытий этой программе понадобилась бы информация из суперблоков. Будет ли такая программа всегда правильной?
-
Программа mkfs инициализирует файловую систему на диске путем создания суперблока, выделения места для списка индексов, включения всех информационных блоков в связанный список и создания корневого каталога. Как бы вы написали программу mkfs? Как изменится эта программа при наличии таблицы содержимого тома? Каким образом следует инициализировать таблицу содержимого тома?
-
Программы mkfs и fsck (глава 5) являются программами пользовательского уровня, а не частью ядра. Прокомментируйте это.
-
Предположим, что программисту нужно разработать базу данных, работающую в среде ОС UNIX. Программы базы данных выполняются на пользовательском уровне, а не в составе ядра. Как система управления базой данных будет взаимодействовать с диском? Подумайте над следующими вопросами:
- Использование стандартного интерфейса файловой системы вместо непосредственной работы с неструктурированными данными на диске,
- Потребность в быстродействии,
- Необходимость знать, когда фактически данные располагаются на диске,
- Размер базы данных: должна ли она помещаться в одной файловой системе, занимать собой весь дисковый том или же располагаться на нескольких дисковых томах?
-
Ядро системы UNIX по умолчанию предполагает, что файловая система располагается на идеальных дисках. Однако, диски могут содержать ошибки, которые делают непригодными и выводят из строя определенные сектора, несмотря на то, что остальная часть диска осталась "пригодной". Как дисковому драйверу (или интеллектуальному контроллеру диска) следует учитывать небольшое количество плохих секторов. Как это отразилось бы на производительности системы?
-
При монтировании файловой системы ядро запускает процедуру открытия для данного драйвера, но позже освобождает индекс специального файла устройства по завершении выполнения вызова системной функции mount. При демонтировании файловой системы ядро обращается к индексу специального файла устройства, запускает процедуру закрытия для данного драйвера и вновь освобождает индекс. Сравните эту последовательность операций над индексом, а также обращений к процедурам открытия и закрытия драйвера, с последовательностью действий, совершаемых при открывании и закрывании устройства блочного типа. Прокомментируйте результаты сравнения.
-
Выполните программу, приведенную на Рисунке 10.14, но направьте вывод данных в файл. Сравните содержимое файла с содержимым выводного потока, когда вывод идет на терминал. Вам придется прервать процессы, чтобы остановить их; только прежде пусть они получат достаточно большое количество данных. Что произойдет, если вызов функции write в программе заменить на printf(output);
-
Что произойдет, если пользователь попытается выполнить редактирование текста на фоне программы:
ed file &
Обоснуйте ответ.
-
К файлам терминалов обычно устанавливаются следующие права доступа
crw--w--w- 2 mjb lus 33,11 Oct 25 20:27 tty61
при входе пользователя в систему. То есть, чтение и запись разрешаются пользователю с именем "mjb", а остальным пользователям разрешена только запись. Почему?
-
Предположим, что вам известно имя файла терминала вашего товарища. Напишите программу записи сообщений с вашего терминала на терминал вашего товарища. Какая еще информация вам нужна, чтобы закодировать приемлемое воспроизведение обычной команды write?
-
Выполните команду stty: если параметры не указаны, она выбирает значения установок терминала и сообщает их пользователю. В противном случае пользователь может в интерактивном режиме сделать различные установки сам.
-
Напишите элементарный строковый интерфейс, записывающий идентификатор машины в начале каждой строки выводного потока.
-
В каноническом режиме пользователь может на время приостановить вывод данных на терминал, нажав последовательность клавиш <Ctrl-s>, и продолжить вывод, нажав <Ctrl-q>. Как в стандартном строковом интерфейсе реализуется эта особенность?
-
* Процесс начальной загрузки порождает getty-процесс для каждой терминальной линии в системе. Что произошло бы, если бы для одного и того же терминала существовали бы одновременно два getty-процесса, ожидающие регистрации пользователя? Может ли ядро помешать этому?
-
Пусть командный процессор shell реализован таким образом, что он "игнорирует" конец файла и продолжает считывать данные из стандартного ввода. Что произошло бы, если бы пользователь (в регистрационном shell'е) угадал конец файла и продолжил ввод с клавиатуры?
-
* Предположим, что процесс считывает данные с операторского терминала, но игнорирует или улавливает сигналы о "зависании". Что произойдет, когда процесс продолжит считывать данные с операторского терминала после зависания?
-
Программа getty-процесса несет ответственность за открытие терминальной линии, а программа login - за проверку регистрационных имен и паролей. Какие преимущества в том, что эти функции выполняются отдельными программами?
-
Рассмотрим два метода реализации драйвера косвенного терминала ("/dev/tty"), описанные в разделе 10.3.6. Какие различия между ними чувствует пользователь? (Совет: подумайте о системных функциях stat и fstat).
-
Разработайте метод планирования выполнения модулей потока, в соответствии с которым ядро имеет в своем составе специальный процесс, выполняющий процедуры обслуживания модулей тогда, когда выполнение этих процедур запланировано.
-
* Разработайте схему построения виртуальных терминалов (окон) с использованием традиционных (не потоковых) драйверов.
-
* Разработайте метод реализации виртуальных терминалов с использованием потоков, в котором мультиплексированием ввода-вывода между виртуальным и физическим терминалами занимался бы один из модулей ядра, а не пользовательский процесс. Опишите механизм соединения потоков со сверткой и разверткой. Что лучше: включить модуль, осуществляющий мультиплексирование, в состав ядра или построить его как пользовательский процесс?
-
Команда ps сообщает интересную информацию об активности процессов в работающей системе. В традиционных реализациях ps считывает информацию из таблицы процессов, прямо из памяти ядра. Такой метод не совсем удобен в среде разработки, когда размер записей таблицы процессов меняется и команде ps становится нелегко обнаружить в таблице соответствующие поля. Разработайте драйвер, нечувствительный к изменениям среды.
Предыдущая глава || Оглавление || Следующая глава
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
Новости мира IT:
- 25.07 - В России выросла популярность отечественных облачных хранилищ, хотя молодёжь предпочитает иностранные
- 25.07 - Microsoft добавила сгенерированные ИИ сводки в результаты поиска Bing
- 25.07 - Apple выпустила веб-версию своего картографического сервиса
- 23.07 - Google передумала отказываться от сторонних cookie в Chrome, но обещает повысить конфиденциальность
- 23.07 - Аудитория Telegram достигла 950 миллионов пользователей в месяц
- 23.07 - Alphabet провалила сделку по поглощению Wiz за $23 млрд — стартап счёл предложенные условия унизительными
- 23.07 - Intel признала вину в нестабильности Raptor Lake, но уже знает как всё исправить
- 18.07 - Еврокомиссия выяснит, не мешает ли конкурентам Samsung наличие ИИ-модели Gemini Nano в Galaxy S24
- 18.07 - Huawei будет внедрять искусственный интеллект в тяжёлое машиностроение
- 18.07 - В Китае создали сверхлёгкий дрон, который будет летать, пока светит Солнце
- 18.07 - Дефицит ИИ-чипов сохранится до 2026 года, прогнозируют в TSMC
- 18.07 - Google стала показывать меньше ответов ИИ в поиске после серии «странных» ответов
- 16.07 - Oppo и Ericsson подписали соглашение о перекрёстном лицензировании в сфере сетей 5G
- 16.07 - Акции Apple достигли исторического максимума благодаря ИИ
- 16.07 - Nvidia столкнулась с антимонопольным расследованием во Франции — компании грозит крупный штраф
- 16.07 - ИИ и глобальные амбиции: Аркадий Волож рассказал, чем займётся зарубежная часть «Яндекса» после разделения
- 16.07 - Разработку российской консоли оценили всего в 1 млрд рублей, но в целом денег понадобится куда больше
- 16.07 - Yandex закрыл сделку по продаже «Яндекса»
- 10.07 - Представлен релиз Firefox 128
- 10.07 - Доступна платформа OpenSilver 3.0, продолжающая развитие технологии Silverlight
Архив новостей
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
|
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
|