Деконструкция GO: CPU, RAM и что там происходит. Системные вызовы. Часть 1.5
Итак, финал части 1! По крайней мере основного разбора без дополнений. Собственно, сегодня мы разберем то, чем в основном с точки зрения ядра ОС и CPU являются все вот эти ваши бэкенды – системные вызовы и всё, что вокруг них. На самом деле механизм немного замудренный и “в лоб” сразу все эти систем

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