- 博客(24)
- 收藏
- 关注
原创 内核死锁
https://www.cnblogs.com/justin-y-lin/p/5424602.html //内核死锁原因https://www.cnblogs.com/arnoldlu/p/10338850.html //softlock_up检测
2020-11-03 19:15:53
394
原创 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,
2020-11-02 21:06:50
617
原创 Linux内核任务切换
#define switch_to(prev,next,last) do { \ asm volatile("pushl %%esi\n\t" \ "pushl %%edi\n\t" \ "pushl %%ebp\n\t" \ ...
2020-10-29 09:59:31
241
转载 napi
https://www.jianshu.com/sign_in?utm_source=desktop&utm_medium=not-signed-in-bookmark-note
2020-10-21 09:48:01
159
转载 介绍virtio ring数据结构非常详细的博文
https://www.cnblogs.com/yi-mu-xi/p/12544695.html为博主点赞
2020-09-16 11:59:03
864
原创 如何在word文档中粘贴好看代码
https://blog.youkuaiyun.com/m0_43584016/article/details/90423306
2020-09-03 17:01:09
1351
原创 中断寄存器记录
⑴中断请求寄存器IRR8259A有8条外部中断请求输入信号线IR0-IR7,每一条请求线上有一个相应的触发器来保存请求信号,它们形成了中断请求寄存器IRR(Interrupt Request Register)。⑵中断屏蔽寄存器IMRI.MR(Interrupt Mask Register)用来存放屏蔽位信息,IMR的每一位可以禁止IRR中对应位的中断请求输入信号进入。⑶中断服务寄存器ISRI.SR(Interrupt Service Register)存放当前正在进行服务的所有中断。ISR中相
2020-08-27 20:23:06
1279
转载 IRQ 、PIN、GSI、Vector 之间的关系
转载自:https://www.cnblogs.com/yanyansha/archive/2011/09/02/2163450.html
2020-08-27 19:12:42
677
原创 i386 Linux内核 信号处理
Linux 在用户态进程通过中断或者系统调用(也是穿过中断门)或者陷阱返回用户空间时,进入内核的信号处理程序,入口如下://file : arch/i386/kernel/entry.S line:217ret_with_reschedule: cmpl $0,need_resched(%ebx) jne reschedule cmpl $0,sigpendi...
2020-04-02 01:08:43
266
原创 i386 Linux 处理缺页中断
一、情景描述在保护模式页式映射中,应用程序如果要访问物理地址,需要将线性地址通过设置的页面映射表进行映射,才能最终访问到物理地址。当然,这个过程中可能会遇到映射失败的情况,这时CPU会产生一次页面出错异常(PAGE FAULT)实际上就是缺页中断,进而通过中断向量表(LDT)进入指定的页面异常处理程序,如果经内核判断不是非法地址,在页面 异常处理程序中会建立这个线性地址到物理地址的页面映射,然...
2020-01-02 13:38:19
364
1
原创 Linux内核用户空间和内核空间数据交换
前些日子一直在纠结copy_from_user函数是怎么实现用户态空间复制到内核态空间的。下面先附上copy_from_user的代码相关函数的代码,函数的调用关系是copy_to_user->__generic_copy_from_user->__copy_user_zeroing。那么我们就来看__copy_user_zeroing的代码。//copy_to_u...
2019-12-26 13:31:46
866
原创 i386 Linux内核进入保护模式引导流程
在系统引导过程中,Bootloader将内核镜像加载到内存后,并将控制权转交给内核 ,通过长转移指令跳转到入口startup_32。 实际上进入startup_32入口前,CPU已经处于了保护模式下的段式寻址方式。而CS寄存器已经设置成了 Linux准备进入保护模式主要做了下面的几项初始化的工作:设置ds,es,fs,gs等段寄存器(在...
2019-12-22 15:46:22
762
原创 快速排序
#includeint main(){int list[]={6,1,2,7,9,3,4,5,10,8};int i;for(i=0;iprintf("%d\t",list[i]);}printf("\n"); printf("\n"); sort(list,sizeof(list)/sizeof(int),0);for(i=0;ipri
2017-09-28 15:28:41
161
原创 八皇后问题
#include#include#includetypedef struct treeNode{int data;struct treeNode* child[8];struct treeNode* father;}TNODE;typedef struct tree{TNODE* root;}TREE;typedef struct linkNode{
2017-09-28 13:14:31
262
原创 冒泡排序的链表实现
#includetypedef struct node{int num;struct node *next;}NODE;NODE* makeList(int*,size_t);NODE* sort(NODE* list);int main(){NODE* head;NODE* curr;int a[]={1,2,4,6,3,5
2017-09-24 20:00:00
432
原创 C语言实现堆排序
#includevoid printfTree(int* tree,int size){int i;int j;int temp;int sum;i=0;j=1;sum=j;while(itemp=tree[i];printf("%d\t",temp);i++;if(i==sum){printf("\n");j*=2;sum+=j;
2017-09-24 19:58:07
258
转载 Linux下Signal信号
linux信号Linux下Signal信号太详细了,终于找到了信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。
2017-09-18 08:59:26
509
转载 m_devget函数
当接收到一个以太网帧时,设备驱动程序调用函数m_devget来创建一个Mbuf链表,并把设备中帧复制到这个链表中。struct mbuf *m_devget(buf, totlen, off0, ifp, copy) char *buf; int totlen, off0; struct ifnet *ifp; voi
2017-09-16 11:31:46
454
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人