- 博客(8)
- 收藏
- 关注
原创 f2fs删除文件
int truncate_inode_blocks(struct inode *inode, pgoff_t from){ struct f2fs_sb_info *sbi = F2FS_I_SB(inode); int err = 0, cont = 1; int level, offset[4], noffset[4]; unsigned int nofs = 0; struct
2018-02-01 19:58:43 812
原创 linux数据结构—链表
一、双向循环链表linux中的双向循环链表采用了与传统的链表不一样的方式来实现。传统的双向循环链表:含有3个域,一个数据域,一个前向指针,一个后向指针;前向指针指向前一个链表元素,后一个指向后一个链表元素。这样就将所有的元素给链接起来了,而且它是循环的,能够向前或向后遍历。linux的双向循环链表:采用2个域,一个前向指针,一个后向指针;前向指针指向前一个链表元素,后一个指向后一个链表
2016-04-20 00:10:00 306
原创 linux—优化和内存屏障
一、设置屏障的原因我们编程时,指令一般不会按照它们在源程序的顺序执行。原因是计算机为了提高程序执行的性能,会对它进行优化,这种优化主要有两种:1.编译器的优化:为了提高系统的性能,编译器在不影响逻辑的情况下会调整指令的顺序。2.CPU执行的优化:为了提高流水线的性能,CPU的乱序执行可能会让后面的没有寄存器冲突的汇编指令先于前面的指令完成。当处理程序的同步时,这样的顺序的调整会造成
2016-04-19 17:03:14 1481
原创 程序设计语言编译方法—引言
计算机语言的层次计算机语言的种类非常的多,一般可以分成机器语言,汇编语言,高级语言三个层次:机器语言:由一系列的0、1串组成的指令系统,所以其可读性比较差。不同的计算机系统一般不同,所以它的移植性比较差。是唯一计算机能够直接执行的指令,所以其效率很高。汇编语言:是机器语言的助记符,也就是机器语言由0,1组成,但是难以阅读与编写,所以用一些助记符来代替特定的指令串。计算机不能直接执行,所
2016-04-16 15:15:42 526
原创 中断与异常(一)
内核响应事件CPU在正常运行的过程中,由于预选安排或发生了各种随机的内部或外部事件,例如指令执行错误,除0;还有敲击了键盘等。系统需要对这样的事件做出反应。下面是响应的两种方法:1.轮询:处理器定期主动对设备的状态进行查询。这个要有处理器主动询问,就会浪费一定的时钟周期,因为很多情况下会出现CPU询问但却其实不用处理。所以这部分时钟周期就浪费了。2.中断(泛指):硬件设备需要CPU
2016-04-15 12:43:20 452
原创 中断处理—步骤
一.硬件处理在每条指令完成的时候,控制单元就会检查是否发生了中断。若不发生:继续执行下一条指令;若发生:进行下面的硬件处理:1.确定中断的向量i。2.读IDT中的第i项得到向量i的中断描述符。3.中断描述符结合GDT得到得到中断处理程序的段描述符。4.进程的CPL与段描述符的DPL比较,若CPL优先级比DPL的优先级高,说明中断的优先级比进程优先级低,产生异常。进程的CPL与中
2016-04-15 00:44:19 991
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人