Меня интересует как работает обработка системного вызова в обоих случаях - Legacysystemcall / Fastsystemcalls.
И в чём точно разница между ними?
Например как я понял, в Legacysystemcall, возьмем для примера команду "write", когда OS доходит до этой команды, происходит системный вызов.
Кака я понял процесс такой:
1. Код бежал в Userspace Пока не дошел до systemcall "write".
2. Затем этот процес получил системный код, например 10 и OS занесла его в register.
3. Через TraptoKernel мы идем в Systemcallhandler в ячейку с номером 10. В этой ячейке записан номер памяти (например FF00) команды "write" которая должна обработаться ядром.
Таким образом мы общается с ядром. Когда мы переходим в адрес FF00 перед выполнением команды "write" OS проверяет есть ли у меня нужные полномочие для этой операции.
Это вроде процесс Legacysystemcall.
А вот в Fastsystemcalls я не могу разобраться. Почему и засчет чего он быстрее Legacysystemcall? Как работает этот процесс например для того же (как пример) system call "write"?
Legacy system call / Fast system calls
в Общий форум
Опубликовано
Доброе время суток.
Пытаюсь разобраться как работают системные вызовы.
Вижу что существует два способа системных вызовов Legacy system call / Fast system calls
Нашел документы https://blog.packagecloud.io/eng/201...y-system-calls и https://blog.packagecloud.io/eng/201...t-system-calls
Меня интересует как работает обработка системного вызова в обоих случаях - Legacy system call / Fast system calls.
И в чём точно разница между ними?
Например как я понял, в Legacy system call, возьмем для примера команду "write", когда OS доходит до этой команды, происходит системный вызов.
Кака я понял процесс такой:
1. Код бежал в User space Пока не дошел до system call "write".
2. Затем этот процес получил системный код, например 10 и OS занесла его в register.
3. Через Trap to Kernel мы идем в System call handler в ячейку с номером 10. В этой ячейке записан номер памяти (например FF00) команды "write" которая должна обработаться ядром.
Таким образом мы общается с ядром. Когда мы переходим в адрес FF00 перед выполнением команды "write" OS проверяет есть ли у меня нужные полномочие для этой операции.
Это вроде процесс Legacy system call.
А вот в Fast system calls я не могу разобраться. Почему и засчет чего он быстрее Legacy system call?
Как работает этот процесс например для того же (как пример) system call "write"?
Буду признателен за помощь в этом вопросе.