《Linux内核设计与实现》
文章平均质量分 93
Elec Liu
原来是无知,给了我莫名的勇气
展开
-
《LKD3粗读笔记》(15)进程地址空间
地址的转换工作需要通过查询页表才能完成,即地址转换需要将虚拟地址分段,使每段虚拟地址都作为一个索引指向页表,而页表项则指向下一级别或指向最终的物理页面。但是说该函数创建了一个新的VMA并不非常准确,因为如果创建的地址区间和一个已经存在的地址区间相邻,并且它们具有相同的访问权限,两个区间合并为一个。函数都会将一个地址区间加入到进程的地址空间中–无论是扩展已存在的内存区域还是创建一个新的区域。表示进程的地址空间,该结构包含了和进程地址空间有关的全部信息。锁,该锁在相应的进程的内存描述符中,以防止竞争条件。原创 2023-05-24 17:09:48 · 626 阅读 · 0 评论 -
《LKD3粗读笔记》(14)块I/O层
完全公正的排队I/O调度程序(空操作的I/O调度程序(最终期限I/O调度程序(预测I/O调度程序(原创 2023-05-22 20:40:30 · 442 阅读 · 0 评论 -
《LKD3粗读笔记》(13)虚拟文件系统
cp。原创 2023-05-16 19:25:17 · 340 阅读 · 0 评论 -
《LKD3粗读笔记》(12)内存管理
page结构。原创 2023-05-15 11:17:50 · 323 阅读 · 0 评论 -
《LKD3粗读笔记》(11)定时器和时间管理
函数,该方法会让需要延迟执行的任务。到指定的延时时间耗尽后再。时,任务必须设置状态为。指定的延时时间,只能。原创 2023-04-29 16:01:10 · 1035 阅读 · 0 评论 -
《LKD3粗读笔记》(9)内核同步介绍
【代码】《LKD3粗读笔记》(9)内核同步介绍。原创 2023-04-15 15:52:59 · 474 阅读 · 2 评论 -
《LKD3粗读笔记》(7)中断和中断处理
Linux中内核代码一般都要获取某种锁,用来防止其他处理器对共享数据的并发访问,而获得这些锁的同时意味着。上面这张图是STM32的某款型号内部中断示意图,其将多达140个GPIO通过。这里的外部中断/事件线其实就是。,通过禁止中断可以确保中断处理程序。(脑洞时刻,想象这个过程)当前代码,禁止中断还可以。原创 2023-04-08 15:10:04 · 320 阅读 · 0 评论 -
《LKD3粗读笔记》(6)内核数据结构
任何操作系统内核都少不了一种编程模型:生产者和消费者。该模型必须使用队列来实现。Linux内核通用队列实现成为kfifo(也就是kernel_fifo),它实现在文件。内核提供的链表操作例程有什么特点,是如何实现的?,该红黑树插入效率和树中结点数目呈对数关系。Linux内核中链表的实现方式是什么样的?的搜索和插入操作需要自行实现。官方提供的链表代码在头文件。原创 2023-04-05 15:10:45 · 487 阅读 · 0 评论 -
《LKD3粗读笔记》(5)系统调用
POSIX 标准定义了一套操作系统必须实现的API,这样的话,当你写的代码只使用了POSIX 标准定义的接口时,那么你的代码相对于所有支持POSIX 标准的操作系统来说,都是可移植的,最多重新编译一下就可以使用。API可以通过0个、1个或者多个系统调用来实现,即API与系统调用之间无直接联系。像传递系统调用号一样,把这些参数也存放在寄存器里。给用户空间的返回值通过寄存器传递,在x86系统上,他存放在。应用程序如何通知系统,告诉内核自己需要执行一个系统调用?(API)实现,而不是直接通过系统调用来实现。原创 2023-03-28 18:39:25 · 178 阅读 · 0 评论 -
《LKD3粗读笔记》(4)进程调度
进程调度策略决定了进程运行的时机。原创 2023-03-25 10:52:02 · 272 阅读 · 0 评论