скопировать каталог в другой каталог и создать промежуточные каталоги

  1. «Ядро — это не процесс».

    Это чистая терминология. (Терминология важна. )Ядро не является процессом, потому что по определению процессы существуют в пространстве пользователя. Но ядро ​​имеет потоков .

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

    Если пользовательский процесс выполняет машинную инструкцию, которая ссылается на неотображенную страницу памяти, тогда:

    • Процессор создает ловушку и переходит в кольцевой 0/режим супервизора . (Это происходит аппаратно.)

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

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

    • Обработчик прерываний является частью ядра. Он очищает состояние ожидания ввода-вывода процесса, ожидавшего страницы памяти, и помечает его как готовый к запуску. Затем он вызывает планировщик для переключения пользовательского контекста на процесс, который готов к запуску.

  3. В целом ядро ​​работает:

    • В ответ на аппаратную ловушку или прерывание; это включает прерывания таймера.

    • В ответ на явный системный вызов пользовательского процесса.

    Большую часть времени процессор находится в кольцевом 3/пользовательском режиме и выполняет инструкции из некоторого пользовательского процесса. Он переходит в кольцо 0/режим супервизора (, в котором живет ядро ​​), когда пользовательский процесс выполняет системный вызов (, например, потому что он хочет выполнить некоторую операцию ввода-вывода )или когда аппаратное обеспечение генерирует trap (неверный доступ к памяти, деление на ноль,и т. д. )или при получении запроса на прерывание от оборудования (Завершение ввода-вывода, прерывание по таймеру, перемещение мыши, поступление пакета на сетевой интерфейс и т. д.)

    Чтобы ответить на вопрос в заголовке, "откуда планировщику ядра известно, как упреждать -процесс":ядро ​​обрабатывает прерывания таймера. Если при поступлении прерывания таймера планировщик замечает, что работающий в данный момент пользовательский процесс исчерпал свой квант , тогда этот процесс помещается в конец очереди выполнения, и возобновляется другой процесс. (Как правило, планировщик заботится о том, чтобы все пользовательские процессы, готовые к запуску, получали справедливое процессорное время.)

0
11.08.2020, 17:46
2 ответа

Поскольку вы указываете место назначения /var/www/clients/client1/web5/./usr/share/zoneinfo/, cpсначала проверит, существует ли каталог для записи файлов. Так что да, вам нужно будет сначала создать каталог. Однако, если /var/www/clients/client1/web5/./usr/share/уже присутствует, вы сможете:

cp -pr /usr/share/zoneinfo /var/www/clients/client1/web5/./usr/share/zoneinfo

, так как каталог назначения существует для записи каталога zoneinfo.

0
18.03.2021, 23:13

rsync -a --relative сделал свое дело.

rsync -a --relative /usr/share/zoneinfo/ /var/www/clients/client1/web5/

Кредит принадлежит unix _ниндзя в этом твите

0
18.03.2021, 23:13

Теги

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