Итак, финал части 1! По крайней мере основного разбора без дополнений. Собственно, сегодня мы разберем то, чем в основном с точки зрения ядра ОС и CPU являются все вот эти ваши бэкенды – системные вызовы и всё, что вокруг них.На самом деле механизм немного замудренный и “в лоб” сразу все эти системные вызовы мы разбирать не будем, потому что вокруг них существует ещё несколько концепций.Итак, начнем!User mode, Kernel modeПроцессор исполняет код в разных уровнях привилегий.Это механизм защиты, который не позволяет пользовательским программам напрямую управлять системой. Зачем? Для безопасности. Чтобы чей-нибудь опасный ассемблерный вайбкод случайно всё не поломал!Да и вообще, если бы любая программа могла выполнять любые инструкции CPU, она могла бы:• Читать память других процессов• Управлять устройствами• Изменять таблицы страниц• Выключать системуЧтобы этого не происходило, CPU разделяет код по уровням доступа.Хотя в архитектуре x86 существует 4 уровня привилегий:Ring 0 – kernel modeRing 1 – драйверыRing 2 – системные службы и файлыRing 3 – user modeПо факту, Ring 1 и Ring 2 – это легаси, которое американские деды проектировали с научной красотой, но без реальной производственной необходимости. В реальной жизни используются только 2 уровня – Ring 0 и Ring 3 для бОльшей совместимости софта с другими ОС, упрощения поддержки, да и вообще переключение уровней доступа дорогое(100-150 тактов CPU), соответственно, чем больше колец, тем хуже производительность.Получается, чтоВ user mode выполняется обычный код программ. Читать далее