自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 文章迁移

hello,之后文章会在github上进行更新github地址: https://github.com/cai-fuqiang/md

2021-03-26 14:26:42 92

转载 crash工具的使用方法

https://www.jianshu.com/p/ad03152a0a53

2020-11-10 09:39:45 909

原创 红黑树

https://www.jianshu.com/p/e136ec79235c

2020-11-03 20:44:19 74

原创 内核死锁

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 352

原创 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 526

原创 Linux CFS调度算法的理解

所有的进程的都应该处于“实际分配时间/应该分配时间”时间相同的情况下

2020-10-30 20:16:48 586 5

原创 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 191

转载 napi

https://www.jianshu.com/sign_in?utm_source=desktop&utm_medium=not-signed-in-bookmark-note

2020-10-21 09:48:01 114

转载 介绍virtio ring数据结构非常详细的博文

https://www.cnblogs.com/yi-mu-xi/p/12544695.html为博主点赞

2020-09-16 11:59:03 766

原创 如何在word文档中粘贴好看代码

https://blog.csdn.net/m0_43584016/article/details/90423306

2020-09-03 17:01:09 1264

原创 Intel MSR bank概念

https://www.it610.com/article/1279095060176060416.htm

2020-08-31 19:28:29 246

原创 中断寄存器记录

⑴中断请求寄存器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 1165

转载 IRQ 、PIN、GSI、Vector 之间的关系

转载自:https://www.cnblogs.com/yanyansha/archive/2011/09/02/2163450.html

2020-08-27 19:12:42 538

原创 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 227

原创 i386 Linux 处理缺页中断

一、情景描述在保护模式页式映射中,应用程序如果要访问物理地址,需要将线性地址通过设置的页面映射表进行映射,才能最终访问到物理地址。当然,这个过程中可能会遇到映射失败的情况,这时CPU会产生一次页面出错异常(PAGE FAULT)实际上就是缺页中断,进而通过中断向量表(LDT)进入指定的页面异常处理程序,如果经内核判断不是非法地址,在页面 异常处理程序中会建立这个线性地址到物理地址的页面映射,然...

2020-01-02 13:38:19 273 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 775

原创 i386 Linux内核进入保护模式引导流程

在系统引导过程中,Bootloader将内核镜像加载到内存后,并将控制权转交给内核 ,通过长转移指令跳转到入口startup_32。 实际上进入startup_32入口前,CPU已经处于了保护模式下的段式寻址方式。而CS寄存器已经设置成了 Linux准备进入保护模式主要做了下面的几项初始化的工作:设置ds,es,fs,gs等段寄存器(在...

2019-12-22 15:46:22 644

原创 快速排序

#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 124

原创 八皇后问题

#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 230

原创 冒泡排序的链表实现

#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 404

原创 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 204

转载 Linux下Signal信号

linux信号Linux下Signal信号太详细了,终于找到了信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。

2017-09-18 08:59:26 460

转载 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 413

原创 if_attact中几个宏定义

TCP/IP

2017-09-15 12:17:40 290

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除