Работая над учебным упрощенным RISC-процессором, я задавался вопросом, как работают системные вызовы при реализации моей функции прерывания программного обеспечения. Например, гипотетически позволяет сказать, что наша программа вызывает sys_end, которая завершает текущий процесс. Теперь я знаю, что это пойдет в векторную таблицу, а затем в код, чтобы закончить текущий процесс.Системные вызовы ОС в x86
Мой вопрос - это код, который завершает процесс, выполняемый в режиме супервизора или в пользовательском режиме? Нет, где я, кажется, смотрю это. Я предполагаю, что, если его в нормальном режиме пользователя, который может представлять очень серьезную проблему как процесс пользовательского режима мог бы сказать что-то делать зло, как:
для (я = 0; я ++; я < 10000) { INT sys_fork // создает дочерний процесс }
, который может быть очень плохим. Я думал, что ОС будет говорить о том, сколько раз процесс мог повторить сам себе и не говоря уже о том, какие другие вредные вещи может сделать процесс, изменяя код в сам системный вызов.