Я очень новичок в программировании ядра или системы,Обработать виртуальное адресное пространство и адресное пространство ядра? Как?
У меня есть пара вопросов, связанных с виртуальной памятью. В основном относится к статическому времени и времени выполнения [т.е. ELF и загрузка/связывание и т. Д.], Для Linux-x86.
Мои пониманий может быть совершенно неправильно ...
Я знаю виртуальной памяти, и это разделить 1G/3G. где процесс не может получить доступ к адресу выше PAGE_OFFSET в пользовательском режиме - PAGE_OFFSET - это виртуальный адрес.
В статическое время ELF определяет процесс Виртуальное пространство?
Если ELF определяет виртуальное адресное пространство, тогда ELF также определяет виртуальное адресное пространство ядра? Как? [Я полагаю, виртуальное адресное пространство ядра динамически отображается во время выполнения?]
Если адресное пространство ядра отображается для обработки адресного пространства, то почему не обрабатывается размер (виртуальный), также включает размер ядра?
- Когда и как это адресное пространство ядра отображается/связано? Как, В случае общей библиотеки конкретный файл указывается vm struct и т. Д.
- Это когда поток кода попадает в системный вызов? Например.
Выполняет ли размер исполняемого файла полностью (виртуальный) размер исполняемого файла? в каком контексте размеры отличаются или они совершенно разные.
Любая статья, объясняющая общий расход?
Compile -> ссылка/загрузки -> виртуальная структура памяти (адресное пространство ядра/общие объекты и т.д.)
Я знаю его очень огромна, но объяснение общего потока будет работать.
Слишком много вопросов в одном сообщении, некоторые из них («Использует ли ядро виртуальный адрес только для пользовательских процессов») задаются много раз раньше. – Tsyvarev
Некоторые ответы, которые я получил здесь, и другие сообщения .. http://stackoverflow.com/questions/14540656/why-kernel-needs-virtual-addressing ..... Отредактированное сообщение соответственно –