102//_stext, __init_end是个内核符号, 在内核链接的时候生成的, 分别表示内核代码段的开始和终止地址. 103//如果address属于内核代码段, 那么在设置页表项的时候就要加个PAGE_KERNEL_EXEC属性,如果不是,则加个PAGE_KERNEL属性. 104//#define _PAGE_KERNEL_EXEC \ 105//(_PAGE_PRESENT | _PAGE_RW | _P...
// file: arch/x86/include/asm/page_64_types.h#define __START_KERNEL (__START_KERNEL_map + __PHYSICAL_START)// __START_KERNEL 扩展为 0xffffffff81000000#define __PHYSICAL_START ((CONFIG_PHYSICAL_START + \// __PHYSICAL_START 扩展为 0x1000000(CONFIG_PHYSICAL_ALIGN-1))&\~(CONFIG_PH...
44 if (is_kernel_text(address)) 45 set_pte(pte, pfn_pte(pfn, PAGE_KERNEL_EXEC)); 46 else 47 set_pte(pte, pfn_pte(pfn, PAGE_KERNEL)); 48 //set every page table entry PAGE_KERNEL_EXEC or PAGE_KERNEL depend onthe address 49 } 50 } 51 } 52 } 53 } 54 55 static pmd_t * ...
第一件事情是,有一些page在虚拟内存中的地址很靠后,比如kernel stack在虚拟内存中的地址就很靠后。这是因为在它之下有一个未被映射的Guard page,这个Guard page对应的PTE的Valid 标志位没有设置,这样,如果kernel stack耗尽了,它会溢出到Guard page,但是因为Guard page的PTE中Valid标志位未设置,会导致立即触发page ...
13 gdOv kernel: [25162.976127] grsec: (root:U:/bin/bash) exec of /bin/bash (/bin/bash -c kill 8237 8239 8240 ) by /bin/bash[sudo:8417] uid/euid:0/0 gid/egid:0/0, parent /usr/bin/sudo[sudo:8416] uid/euid:0/0 gid/egid:0/0 Dec 8 00:07:54 gdOv kernel: [25443.915858]...
GFP_KERNEL);...// 2. 设置vma结构各个字段的值vma->vm_mm=mm;vma->vm_start=addr;vma->vm_...
uvmmap(p->kernel_pagetable, va, (uint64)pa, PGSIZE, PTE_R | PTE_W); p->kstack = va; ... } free kernel_pagetable,当一个进程结束时,需要释放这个进程的空间(物理地址),包括页表和kstack,因为这两个是通过kalloc申请来的。由于页表有三层,所以需要递归地释放 ...
那个方案的HughTLB是512M起跑的。当时使用的是一种静态的配置方法,在Fork还是Exec的时候指定特定的参数...
DMA 拿到数据了,给一个中断标识,告诉 kernel ,我这边准备好了,你可以不用再挂着了,等待被调度执行即可 前言 app 应用程序和硬件之间隔着一个内核,内核通过 pagecache 来维护数据,若 pagecache 数据被标识为 dirty,就会有一个 flush 刷新的过程,刷写到磁盘中去,什么时候刷新决定着 IO 的模型 多个app 应用程序可...
KeyringMode= Controls how the kernel session keyring is set up for the service (see session- keyring(7) for details on the session keyring). Takes one of inherit, private, shared. If set to inherit no special keyring setup is done, and the kernel's default behaviour is applied. If ...