Я знаю, что ОС делает много абстракции в памяти, но я не совсем уверен в объемах памяти каждой программы.Как ОС абстрагирует программы памяти?
Как OS гарантирует, что одна программа не получит доступ к памяти другой программы? Как это делается?
Я знаю, что ОС делает много абстракции в памяти, но я не совсем уверен в объемах памяти каждой программы.Как ОС абстрагирует программы памяти?
Как OS гарантирует, что одна программа не получит доступ к памяти другой программы? Как это делается?
Существует ряд подходов, которые были использованы. Наиболее распространенной является адресация логической памяти. Адресное пространство разделено на две зоны: пользователь и ядро.
Каждый процесс имеет свою собственную зону пользовательской памяти. Все процессы имеют одну и ту же зону памяти ядра. Процесс не имеет средств для доступа к адресному пространству пользовательского режима другого процесса. Все ссылки на память в режиме пользователя переходят в собственное пространство памяти процесса и не могут ссылаться на другие процессы.
Адресное пространство ядра ограничено, поэтому его можно получить только в режиме ядра. ОС ограничивает способы входа в режим ядра.
[virtual-memory] (http://en.wikipedia.org/wiki/Virtual_memory) :) Я предполагаю, что это слишком широко для вопроса SO, посмотрите на какую-то книгу OS, у нее должна быть глава по теме – Diego
Как я уже сказал, я знаю эти много трюков, но я не уверен в памяти, которую может использовать каждая программа. –