Системные вызовы и их взаимодействие с программистом - Morozov-5F/operational-system-docs GitHub Wiki
Разумеется, для программиста вызов функции read(...)
и вызов, к примеру, функции qsort(...)
будут выглядеть одинаково – вызываются какие-то сторонние процедуры, выполняющие нужные программисту действия. Но на деле, различия между этими процедурами будут не только в функциональности, но и в способе вызова. Системный вызов выполняет команду TRAP для перехода в режим ядра, что является довольно-таки затратной операцией, поскольку происходит полная смена контекста (с пользовательского на контекст ядра). Поэтому, если в программе очень критична производительность, программисту необходимо минимизировать количество системных вызовов, чтобы не тратить процессорное время на переключение контекста. Более того, операционная система может запланировать выполнение другого процесса после завершения системного вызова, еще более замедляя выполнение первого процесса.
Источники:
- Современные опреационные системы, Э. Таненбаум, 4-е изд.
- Ответы к заданиям, Э. Таненбаум, 3-е изд.
- Один из вариантов ответа на вопрос