Проблема с пониманием того, как работает операционная система и память в системе Unix

Несколько более простое sedрешение без пробела:

sed '$!N;y/\n/;/;p;y/;/\n/;D' file
  • $!Nдля присоединения к следующей строке (если есть; $!не требуется с GNU sed, если не в режиме POSIX)
  • y/\n/;/заменить новую строку на;
  • pвывести полученную строку
  • y/;/\n/, чтобы вернуться к новой строке, поэтому с помощью
  • Dвы можете избавиться от первой строки и перейти к следующей
1
24.01.2021, 17:46
2 ответа

Если это то, что вы узнали из своего курса, то есть серьезные сомнения в качестве этого курса. Полное объяснение функций ОС и доступа к диску выходит далеко за рамки сайта вопросов и ответов. Итак, я дам вам просто краткое глобальное объяснение, в котором упущено много деталей и нюансов. Это тоже грубые упрощения.

Операционная система делает гораздо больше, чем две ваши основные функции. Это немного зависит от того, какие точные определения терминов вы используете и на какую ОС вы смотрите (Windows, например, включает графический интерфейс в ОС ), но функции включают как минимум:

  • Планирование заданий
  • управление памятью
  • доступ к файлу/файловой системе
  • управление процессами и связь между процессами
  • сеть

Итак, просматривая ваши интерпретации:

The file management system of the OS understands that to get application A executed we need the executable file of the application A from the hard disk whose address is provided by the file descriptor table

Э, нет. Это не система управления файлами -ОС. Кроме первого процесса (init в его различных формах )процессы создаются другим процессом. Например, если вы выполняете lsиз своего терминала, используемая вами оболочка просит ОС загрузить программу.

В Linux и Unix термин «файловый дескриптор», вероятно, отличается от того, что подразумевается в вашем курсе; вы должны (хотя бы на данный момент )заменить "таблицу файловых дескрипторов" на "i -таблицу узлов".

Затем файловая (системная )функция ОС выполняет поиск в таблице узлов i -местонахождения файла на диске. Таблица узлов i -является частью файловой системы и хранится на диске. Однако ОС хранит копию (кэша )в памяти, чтобы предотвратить ненужный доступ к диску.

Итак, что происходит, когда вы открываете файл? Пользовательский процесс выполняет вызов открытия файла -в ОС с именем файла.ОС переводит имя в положение на диске (, используя таблицу узлов I -), и выделяет файловый дескриптор для будущих ссылок на этот файл, пока он снова не будет закрыт.

Ниже функция устройства ОС сообщает контроллеру диска -загрузить определенные сектора диска в память, чтобы функция файловой системы -могла преобразовать их в поток байтов или блоков.

3
18.03.2021, 22:34

I -узлы и файловые дескрипторы (простая версия)

  • Процесс ищет в узле i -список каталогов.
  • Затем он использует узел i -, чтобы открыть файл.
  • Вызов open возвращает индекс в таблицу файлов -дескрипторов -.
  • Все остальные файловые -системные вызовы используют этот файловый -дескриптор.

Индекс дескриптора файла -хранится в процессе в пространстве пользователя -. Таблица находится в пространстве ядра (. Если бы вы могли ее отредактировать, вы могли бы нарушить безопасность ). Поля в таблице файлов -дескрипторов -будут включать узел i -файла, смещение поиска, флаги чтения и записи (, можно ли читать и/или писать ), …

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

1
18.03.2021, 22:34

Теги

Похожие вопросы