Несколько более простое sed
решение без пробела:
sed '$!N;y/\n/;/;p;y/;/\n/;D' file
$!N
для присоединения к следующей строке (если есть; $!
не требуется с GNU sed
, если не в режиме POSIX)y/\n/;/
заменить новую строку на;
p
вывести полученную строку y/;/\n/
, чтобы вернуться к новой строке, поэтому с помощью D
вы можете избавиться от первой строки и перейти к следующей Если это то, что вы узнали из своего курса, то есть серьезные сомнения в качестве этого курса. Полное объяснение функций ОС и доступа к диску выходит далеко за рамки сайта вопросов и ответов. Итак, я дам вам просто краткое глобальное объяснение, в котором упущено много деталей и нюансов. Это тоже грубые упрощения.
Операционная система делает гораздо больше, чем две ваши основные функции. Это немного зависит от того, какие точные определения терминов вы используете и на какую ОС вы смотрите (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 -), и выделяет файловый дескриптор для будущих ссылок на этот файл, пока он снова не будет закрыт.
Ниже функция устройства ОС сообщает контроллеру диска -загрузить определенные сектора диска в память, чтобы функция файловой системы -могла преобразовать их в поток байтов или блоков.
Индекс дескриптора файла -хранится в процессе в пространстве пользователя -. Таблица находится в пространстве ядра (. Если бы вы могли ее отредактировать, вы могли бы нарушить безопасность ). Поля в таблице файлов -дескрипторов -будут включать узел i -файла, смещение поиска, флаги чтения и записи (, можно ли читать и/или писать ), …
Каждый процесс имеет свою собственную таблицу файлов -дескрипторов -. Он отслеживает, какие файлы открыты этим процессом. Проверка разрешений выполняется только тогда, когда файл открыт, поэтому ядро должно отслеживать это. Вот почему таблица файлов -дескрипторов -находится в ядре, и, в свою очередь, почему она существует (, если бы не было безопасности, тогда процесс мог бы сам отслеживать ).