![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux内核学习
coder.bihao@foxmail
这个作者很懒,什么都没留下…
展开
-
文件io路径
https://www.cnblogs.com/losing-1216/p/5073051.html 转载转载 2019-07-08 10:24:40 · 157 阅读 · 0 评论 -
进程调度
linux对不同的进程使用不同的调度器类1.实时进程使用sched_rr、sched_fifo、sched_deadline进行调度,优先级比普通进程优先级高。sched_rr:带时间片轮转sched_fifo:不带时间片,一直运行到结束2.普通进程普通进程使用sched_batch、sched_normal调度策略进行调度sched_normal使用cfs(https://www....原创 2019-07-08 14:05:56 · 128 阅读 · 0 评论 -
进程的基本概念
1.进程是什么,和线程的区别是什么?创建过程?首先,进程是一个正在执行的任务/程序,不仅仅包含代码段还有数据段、打开的文件、监听的信号、处理器状态、页表等等资源的一个集合,是保证任务能够执行的一个集合,是资源分配的最小单位。线程是在进程中活动的对象,也就是说一个进程至少有一个以上的线程,线程是执行的实体。在Linux中,不区分进程、线程,包括他们的调度,对内核来说都是进程。linux通过tas...原创 2019-07-08 11:22:42 · 159 阅读 · 0 评论 -
系统调用
1.系统调用是除了陷入、异常外内核唯一的入口2.进程调用clib库,clib库对系统调用进行封装,通过系统调用号来实现系统调用。进程通过int80指令,模拟硬件硬件中断,传递系统调用号到eax寄存器,中断服务程序通过中断向量表发现此为系统调用,进入系统调用流程,根据eax寄存器的值、结合sys_call_table找到对应的系统调用。3.注意系统调用是可能被中断的,需要保证是可重入的。...原创 2019-07-08 16:25:56 · 86 阅读 · 0 评论 -
硬件中断、上下部
1.硬件中断是由硬件触发,通过电信号通知到cpu,cpu根据中断号寻找对应的中断服务例程进行处理。中断时需要关闭中断线上的相同中断,因此为了快速响应,需要将中断处理的过程分成上半部和下半部;需要积极快速响应的、不可以并发处理的、涉及到硬件的(例如网卡数据拷贝到内存的过程)放在上半部,可以推后处理的就放到下半部去执行中断处理程序有自己的栈,在处理过程中需要关闭中断,因此同一类型的中断是串行处理的...原创 2019-07-08 17:11:45 · 147 阅读 · 0 评论 -
内核同步机制
1.通过锁机制来实现同步,有两种不同的锁,一种是锁被持有时选择忙等,一种是选择睡眠等待。2.如何避免死锁a.按顺序加锁b.不要重复加锁3.自旋锁 spin lock 忙等锁,乐观;适合持有时间非常短,这是因为要考虑进程上下文切换的开销。4.信号量 视图获取一个锁时候,如果不可用则进入睡眠队列;struct semaphore {atomic_t count; int sleepe...原创 2019-07-08 17:36:41 · 86 阅读 · 0 评论 -
内存管理
1.内核把物理页作为内存管理的基本单位,从虚拟内存看页是最小单位;内核使用struct_page管理物理页,struct_page中有对应的虚拟页地址,引用计数,是否被锁定2.内存区域被分为ZONE_DMA、ZONE_NORMAL(16-896MB,固定映射内核地址)、ZONE_HIGHMEM3.cpu一次读一个cacheline,因此需要内存对齐 防止多次读cache、mem...原创 2019-07-08 19:30:13 · 94 阅读 · 0 评论 -
虚拟文件系统、块io层
对用户态进程提供统一的系统调用入口,一切皆是文件,对底层的抽象,屏蔽多个文件系统之间的差异。用户调用write—>sys_write—>文件系统的写方法。虚拟文件系统根据打开的文件描述符,寻找对应文件的回调入口。每个文件系统都有一个superblock,这个块中记录着操作函数列表。块设备为可以随机读写固定大小数据块,例如磁盘、光驱字符设备为串行处理字符流,例如键盘...原创 2019-07-08 19:38:28 · 183 阅读 · 0 评论