Linux内核设计与实现
文章平均质量分 91
Linux内核设计与实现(LinuxKernelDevelopment)
Revendell
分布式数据库内核开发
展开
-
11块IO和设备
1、块设备(1)块设备和字符设备的区别块设备:系统中能够随机(不需要按数据)访问固定大小数据片的硬件设备称作块设备,这些固定大小的数据片就称作块。最常见的块设备是硬盘。字符设备:字符设备按照字符流的方式被有序访问,像串口和键盘就属于字符设备。块设备和字符设备的区别:区别在于是否可以随机访问数据。内核管理块设备比管理字符设备细致得多。因为字符设备仅仅需要控制当前位置。而块设备访问的位置必须能够在介质的不同区间前后移动。块设备的管理需要有一个专门的提供服务的子系统,字符设备不需要。不仅因为块设备原创 2021-01-03 22:27:12 · 163 阅读 · 0 评论 -
10进程地址空间
1、原创 2020-12-26 22:26:01 · 770 阅读 · 0 评论 -
09虚拟文件系统
1、虚拟文件系统概述虚拟文件系统作用:虚拟文件系统是Linux文件系统中的一个抽象软件层;因为它的支持,众多不同的实际文件系统才能在Linux中共存,跨文件系统操作才能实现。通过虚拟文件系统,程序可以利用标准的Unix系统调用对不同的文件系统,甚至不同介质上的文件进行读写操作。VFS使得用户可以直接使用open()、read()、write()这一的系统调用而无须考虑具体文件系统和实际物理介质。Unix/Linux中的“一切皆是文件”的口号才能够得以实现。文件系统抽象层:内核在它的底层文件系统接口上原创 2020-12-28 22:06:17 · 1143 阅读 · 0 评论 -
08内存管理
1、页和区(1)页页是虚拟内存的最小单位。内核把物理页作为内存管理的基本单位。处理器的最小可寻址单位通常为字(甚至字节)。但是内存管理单元(将虚拟地址转换为物理地址的硬件)通常以页为单位进行处理。从虚拟内存角度来看,页就是最小单位。内核使用struct page结构(物理页结构)表示系统中的每个物理页:struct page{ /* 存放页的状态(是否为脏页)等 */ unsigned long flags; /* 页被引用的次数统计,为-1时表示内核中没有引用这一页原创 2020-12-30 23:35:34 · 363 阅读 · 0 评论 -
07定时器和时间管理
1、内核中的时间节拍率:系统定时器以节拍率自行触发(又称为击中/射中)时钟中断。当时钟中断发生时,内核就通过一种特殊的中断处理程序对其进行处理。计算时间:由于内核知道两次时间中断的间隔时间。这个间隔时间就称为节拍,内核就是靠这种已知的时钟中断间隔来计算墙上时间(实际时间)和系统运行时间的。时钟中断周期执行的工作:更新系统运行时间和实际时间 均衡调度程序各处理器上的运行队列 检查当前进程是否用尽时间片。如果用尽,就重新进行调度 更新资源消耗和处理器时间的统计值2、节拍率HZ节拍率是原创 2021-01-02 23:07:01 · 299 阅读 · 0 评论 -
06内核同步
1、临界区和竞争条件临界区:访问和操作共享数据的代码段。竞争条件:两个执行线程处于同一个临界区中同时执行。同步:避免并发和防止竞争条件2、加锁锁机制:确保一次有且只有一个线程对数据结构进行操作,或者当另一个线程在对临界区标记时,就进制(或者说锁定)其他访问。锁是采用原子操作实现的,而原子操作不存在竞争。锁的不同形式:各种锁机制之间的区别主要在于:当锁被其他线程持有,因而不可用时的行为表现,一些锁被争用时会简单地执行忙等待,而另外一些锁会使当前任务睡眠直到锁可用为止。造成并发执行的原创 2021-01-02 22:03:30 · 126 阅读 · 1 评论 -
05中断
1、中断概述中断机制的应用场景:让处理器和外部设备能协同工作,且不会降低机器的整体性能。中断过程:当接收到一个中断后,中断控制器会给处理器发送一个电信号。处理器一检测到此信号,便中断自己的当前工作转而处理中断。此后,处理器通知操作系统已经产生中断,这样,操作系统就可以对这个中断进行适当地处理了。中断标志:不同设备对应的中断不同,每个中断都有一个唯一的数字标志。因此,来自键盘的中断有别于来自硬盘的中断,从而使得操作系统能够对中断进行区分,并指导是哪个硬件设备产生了哪个中断。这些中断值通常被称为中断原创 2021-01-02 21:10:28 · 711 阅读 · 0 评论 -
04内核数据结构
1、链表链表是linux内核中最简单同时也是应用最广泛的数据结构。链表是一种存放和操作可变数量元素的数据结构,动态创建,无需在内存中占用连续内存区。Linux内核的标准链表采用循环双向链表实现的。(1)单向链表和双向链表struct list_element{ void *data; /*有效数据*/ struct list_element *next; /*指向下一个元素的指针*/ /* struct list_element *prev; 加上就变成双向链表*/ };原创 2020-12-17 00:53:50 · 112 阅读 · 0 评论 -
03系统调用
1、系统调用的作用系统调用是用户空间访问内核的唯一手段,除异常和陷入外,它们是内核唯一的合法入口。系统调用在用户空间进程和硬件设备之间添加了一个中间层。它有三个作用:为用户空间提供一种硬件的抽象接口。如读写文件时,应用程序就可以不管磁盘类型和介质。 保证了系统的稳定和安全。内核可以基于权限、用户类型等规则对访问进行裁决。 告知内核自己在使用硬件以实现多任务和虚拟内存。内核知道了才能更好的管理分配。2、API、POSIX和C库的关系一般应用程序通过用户空间实现的应用编程接口(API)而不是直原创 2020-12-16 23:24:50 · 269 阅读 · 0 评论 -
02进程调度
1、Linux的进程调度2、进程调度策略3、进程调度算法4、进程调度实现原创 2020-12-16 01:01:54 · 235 阅读 · 0 评论 -
01进程管理
1、原创 2020-12-13 14:54:30 · 145 阅读 · 0 评论