Я новичок в Linux, и меня всегда смущала разница между пространством ядра и пространством пользователя.
В настоящее время я изучаю управление памятью и хотел бы знать, является ли виртуальный адрес страницы пользовательский процесс принадлежит пространству пользователя или пространству ядра при замене?
(как в 64-разрядной версии Linux
Диапазон виртуальных адресов состояния пользователя: 0x0000000 000000-0x00007FFFFFFFFFFFF
Диапазон виртуальных адресов состояния ядра: 0xFFFF8000000000-0xFFFFFFFFFFFFFFFFFFFF)
linux-6.5.1/mm/memory.c
mm_account_fault()
if (major) {
struct major_page_fault_hash_entry *temp = NULL;
unsigned long pfn = virt_to_pfn(address);
printk("[%lu][%lu]", pfn, address);
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, regs, address);
}
linux-6.5.1/mm/swap_state.c
bool add_to_swap(struct folio *folio)
long pages_number = folio_nr_pages(folio);
unsigned long start_pfn = folio_pfn(folio);
for (int i = 0; i < pages_number; i++) {
struct page *current_page = pfn_to_page(start_pfn + i);
unsigned long current_virt_addr = (unsigned long)page_to_virt(current_page);
printk("[%lu][o][%lu]\n",start_pfn + i, current_virt_addr);
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... ge-in-user
Когда пользовательский процесс заменяет страницу, находится ли виртуальный адрес страницы в пространстве пользователя ил ⇐ Linux
1720283940
Anonymous
Я новичок в Linux, и меня всегда смущала разница между пространством ядра и пространством пользователя.
В настоящее время я изучаю управление памятью и хотел бы знать, является ли виртуальный адрес [b]страницы пользовательский процесс[/b] принадлежит [b]пространству пользователя или пространству ядра[/b] при [b]замене[/b]?
(как в 64-разрядной версии Linux
Диапазон виртуальных адресов состояния пользователя: 0x0000000 000000-0x00007FFFFFFFFFFFF
Диапазон виртуальных адресов состояния ядра: 0xFFFF8000000000-0xFFFFFFFFFFFFFFFFFFFF)
linux-6.5.1/mm/memory.c
mm_account_fault()
if (major) {
struct major_page_fault_hash_entry *temp = NULL;
unsigned long pfn = virt_to_pfn(address);
printk("[%lu][i][%lu]", pfn, address);
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, regs, address);
}
linux-6.5.1/mm/swap_state.c
bool add_to_swap(struct folio *folio)
long pages_number = folio_nr_pages(folio);
unsigned long start_pfn = folio_pfn(folio);
for (int i = 0; i < pages_number; i++) {
struct page *current_page = pfn_to_page(start_pfn + i);
unsigned long current_virt_addr = (unsigned long)page_to_virt(current_page);
printk("[%lu][o][%lu]\n",start_pfn + i, current_virt_addr);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78712372/when-a-user-process-swaps-out-a-page-is-the-virtual-address-of-the-page-in-user[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия