У меня возник вопрос относительно глубокой работы Linux.Последовательность потока системного вызова Linux
Допустим, в CPU выполняется многопоточный процесс. В этом случае у нас будет поток, который выполняется на CPU. На более широкой картинке у нас будет соответствующая страница, принадлежащая Процессу, загружаемому в ОЗУ для выполнения.
Допустим, что нить выполняет системный вызов. После этого я немного неясен в работе. Прерывание вызовет вызов. Один из моих вопросов - кто ответит на этот звонок?
Допустим, что система имеет поток потока пользовательского уровня m: n для сопоставления потоков уровня ядра, я предполагаю, что соответствующий поток уровня ядра ответит на этот вызов.
Таким образом, ядро будет искать векторную таблицу прерываний и получить процедуру, которая должна быть выполнена. Мой следующий вопрос: какой стек будет использоваться при выполнении прерывания? Будет ли это стек ядра или стек уровня Thread? (Я предполагаю, что это будет стек ячеек ядра.)
Возвращаясь к потоку программы, можно сказать, что операция открывает файл с использованием fopen
. Следующий вопрос, который у меня есть, - как произойдет переход от ISR к System Call? Или наш ISR отображается на системный вызов?
Также при более широком изображении, когда выполняется поток ядра, я предполагаю, что «область ОС» в ОЗУ будет использоваться для размещения страниц, выполняющих системный вызов.
Опять глядя на него под другим углом (надеюсь, что вы все еще со мной), наконец, я предполагаю, что соответствующий поток ядра обрабатывается Планировщиком CPU, где в контекстном переключателе произошло бы из потока пользовательского уровня соответствующая нить уровня ядра при ответе на системный вызов fopen
.
Я сделал много предположений, и было бы абсолютно фантастично, если бы кто-нибудь мог устранить сомнения или хотя бы направить меня в правильном направлении.
Не могли бы вы переформатировать стену текста, чтобы ее было немного легче читать? Благодарю. – NPE
Также прочитайте несколько книг по программированию Linux. Сначала вам нужно понять сторону приложения, например. http://advancedlinuxprogramming.com/, тогда вам нужно понять точку зрения ядра, и многие книги также существуют ... –
Привет Базиле, я прочитал несколько книг по Linux, и они почти дают мне ту же информацию. Однако я не могу сшить все вместе. Как работает вся процедура в режиме реального времени. –