内核死锁 https://www.cnblogs.com/justin-y-lin/p/5424602.html //内核死锁原因https://www.cnblogs.com/arnoldlu/p/10338850.html //softlock_up检测
Linux page cache映射方式 一开始接触到Linux page cache时,就有一些疑问。Linux page cache很大,是怎么通过虚拟内存访问的,一开始便想到的是通过mmap的机制,将文件映射到用户层的虚拟内存区间,然后通过触发page fault来从文件中读取,后来发现这完全是多次一举,我们先来看下linux 的page cache的存储方式。page cache是存放在struct inode中的,通过struct address_space(i_data)中的iru链表,串联起了该文件所有的page cache,
Linux内核任务切换 #define switch_to(prev,next,last) do { \ asm volatile("pushl %%esi\t" \ "pushl %%edi\t" \ "pushl %%ebp\t" \ ...
中断寄存器记录 ⑴中断请求寄存器IRR8259A有8条外部中断请求输入信号线IR0-IR7,每一条请求线上有一个相应的触发器来保存请求信号,它们形成了中断请求寄存器IRR(Interrupt Request Register)。⑵中断屏蔽寄存器IMRI.MR(Interrupt Mask Register)用来存放屏蔽位信息,IMR的每一位可以禁止IRR中对应位的中断请求输入信号进入。⑶中断服务寄存器ISRI.SR(Interrupt Service Register)存放当前正在进行服务的所有中断。ISR中相
i386 Linux内核 信号处理 Linux 在用户态进程通过中断或者系统调用(也是穿过中断门)或者陷阱返回用户空间时,进入内核的信号处理程序,入口如下://file : arch/i386/kernel/entry.S line:217ret_with_reschedule: cmpl $0,need_resched(%ebx) jne reschedule cmpl $0,sigpendi...
i386 Linux 处理缺页中断 一、情景描述在保护模式页式映射中,应用程序如果要访问物理地址,需要将线性地址通过设置的页面映射表进行映射,才能最终访问到物理地址。当然,这个过程中可能会遇到映射失败的情况,这时CPU会产生一次页面出错异常(PAGE FAULT)实际上就是缺页中断,进而通过中断向量表(LDT)进入指定的页面异常处理程序,如果经内核判断不是非法地址,在页面 异常处理程序中会建立这个线性地址到物理地址的页面映射,然...
Linux内核用户空间和内核空间数据交换 前些日子一直在纠结copy_from_user函数是怎么实现用户态空间复制到内核态空间的。下面先附上copy_from_user的代码相关函数的代码,函数的调用关系是copy_to_user->__generic_copy_from_user->__copy_user_zeroing。那么我们就来看__copy_user_zeroing的代码。//copy_to_u...
i386 Linux内核进入保护模式引导流程 在系统引导过程中,Bootloader将内核镜像加载到内存后,并将控制权转交给内核 ,通过长转移指令跳转到入口startup_32。 实际上进入startup_32入口前,CPU已经处于了保护模式下的段式寻址方式。而CS寄存器已经设置成了 Linux准备进入保护模式主要做了下面的几项初始化的工作:设置ds,es,fs,gs等段寄存器(在...