- 博客(9)
- 资源 (3)
- 收藏
- 关注
原创 clocksource和clock_event_device模块介绍
时钟源最重要的一个功能是读取当前时间,系统中可能存在一个或者多个时钟源, 所以时钟源管理模块主要负责管理系统中的所有时钟源(包括读取当前时间、时钟源的注册、注销、时钟源的择优选择、当时钟源发生变化时对上层提供通知等等)。全局变量定义://保存当前选中的时钟源...//保存所有注册的时钟源...数据结构定义:u64 mask;u32 mult;......这个结构体中read。
2024-12-03 00:48:33
1193
原创 谈谈我对linux内核时间子系统的理解和思考
在linux内核初始化的时候,通过arch_timer_of_init接口向内核注册了时钟事件设备和时钟源,其底层都是用的arm的通用定时器ARCH_TIMER_VIRT_PPI。其中做的最重要的两件事就是:1> 向系统注册了定时器中断回调函数:arch_timer_handler_virt2> 确定了读取定时器计数器的函数:arch_counter_get_cntvct。
2024-12-03 00:07:52
1046
原创 《Linux-UNIX系统编程手册》读书笔记
1)fork()时,子进程的代码段共享父进程的代码段物理页,对于父进程数据段、堆段和栈段中的各页,内核采用写时复制(copy-on-write)技术来处理,来避免性能浪费;2)exit()时,内核会回收进程使用的资源,但是在wait()之后,内核才会回收该进程的task结构资源;3)父进程可以通过捕获SIGCHLD 信号来得知子进程的退出动作;4)exec()除了装载程序外,还可以装载解释器脚本;
2024-11-24 21:45:53
1152
原创 谈谈如何避免不必要的TLB Miss
在保护模式下,对程序可见的都是虚拟地址,一个程序要想访问内存可费劲了:首先它拿虚拟地址VA说要访问这个地址,然后MMU就去这个进程的页表里查一下这个VA对应的PA是多少,这时如果页表里查不到,那就会产生一个缺页中断(pagefault),在缺页中断里去把这个VA和PA的对应关系建好。从图中可以看出,TLB里不仅存有VA和PA的对应关系,还有一个ASID,每个进程会有唯一的ASID,当用VA访问TLB时,也会带上当前进程ASID,通过ASID的匹配自然就能精准找到属于自己的TLB缓存了。
2024-10-24 21:50:15
1073
原创 谈谈如何避免不必要的Cache miss
Cache的事情告诉我们做事情的时候也要利用好局部性原则,短时间内把一件事做完或者完成阶段性成果,然后再去做另一件事情,这样效率会更高一点。
2024-10-24 21:41:39
1202
原创 linux操作系统的底层原理分析
所以TLB也叫页表的cache。从图中可以看出还有个用户态和内核态之分,用户态程序通过系统调用或者中断陷入到linux内核,linux内核会设置CPU运行模式为内核态,当系统的调用完成之后,linux内核会把CPU运行模式恢复成用户模式,然后返回用户态程序继续执行。从上面可以看出CPU上下文有用户态和内核态之分,由于CPU上下文没几个寄存器,所以分时复用实现起来没什么问题,在进程(或者线程)切换的时候把current进程的CPU上下文保存一下,把后一个进程的CPU上下文恢复一下,这个叫做CPU上下文切换。
2024-10-18 22:00:45
1130
大道至简软件工程实践者的思想周爱民.pdf
2010-04-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅