micaver Posted November 8, 2018 Report Share Posted November 8, 2018 Доброе время суток.Пытаюсь разобраться как работают системные вызовы.Вижу что существует два способа системных вызовов 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"? Буду признателен за помощь в этом вопросе. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.