Операционные системы-процессы - PullRequest
0 голосов
/ 05 февраля 2020

Является ли что-нибудь из этого правдой? Почему?

В системе UNIX / Linux дочерний процесс продолжает выполнять ту же программу, что и его родительский процесс. Переключение контекста обходится дороже, чем переключение режима.

Процесс может обращаться к данным на жестком диске напрямую, без участия ядра.

Любые два процесса могут взаимодействовать с помощью обычного (без имени) труба

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Контекст процесса представлен в печатной плате.

Существует две возможности после вызова fork ():

  • родительский и дочерний процесс выполняются одновременно
  • родительский ожидает до завершения дочернего процесса.

Родитель может дождаться завершения дочернего процесса, вызвав системный вызов wait () ИЛИ родитель может продолжить выполнение

-> Ребенок часто запускает новую и другую программу внутри себя через exe c () системный вызов.

Модульность:

program-> process-> thread

, поэтому переключение потоков проще, чем переключение контекста, поскольку потоки одного и того же процесса имеют одинаковое адресное пространство.

Процессы могут получать доступ к критической части кода, то есть к общим ресурсам, через "mutex" и "семафоры".

Процессы могут связываться друг с другом через «межпроцессное взаимодействие». 1. общие данные 2. передача сообщений

0 голосов
/ 05 февраля 2020

В системе UNIX / Linux дочерний процесс продолжает выполнять ту же программу, что и его родительский процесс.

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

Переключение контекста дороже, чем переключение режима.

Слишком мало информации, чтобы определить, правда это или нет. Например, «переключение контекста» может означать переключение из пространства пользователя в пространство ядра или из «контекста ядра» в «контекст IRQ», или ... Точно так же «переключение режима» может быть чем угодно (переключение режима видео? Привилегия изменение уровня?). Я могу только сказать, что некоторые вещи, которые называются переключателями контекста, стоят дороже, чем некоторые вещи, называемые переключателями режима, а некоторые дешевле.

Процесс может напрямую обращаться к данным на жестком диске. без участия ядра.

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

Любые два процесса могут взаимодействовать, используя обычный (безымянный) канал

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

...