- 博客(23)
- 收藏
- 关注
原创 深入Linux内核架构笔记 - 进程管理与调度7: 调度器增强
SMP调度 多处理器系统上,内核必须考虑的几个额外的问题CPU负荷必须尽可能在所用的处理器上共享进程与系统中某些处理器的亲和性必须是可设置的:设置task_struct的cpus_allowed成员内核必须能够将进程从一个CPU迁移到另一个:会严重危害性能,要谨慎使用 数据结构的扩展struct sched_class {#ifdef CONFIG_SMP unsign...
2019-08-24 09:14:19
212
原创 深入Linux内核架构笔记 - 进程管理与调度6: 实时调度类
Overview按照POSIX标准的强制要求,除了"普通进程",Linux还支持两种实时调度类,调度器结构使得实时进程可以平滑地集成到内核中。实时进程的特点是其优先级比普通进程高,rt_task通过检查其优先级来证实给定进程是否是实时进程,而task_has_rt_policy则检测进程是否关联到实时调度策略。性质 实时进程和普通进程有一个根本的不同之处:如果系统中有一个实时进程且可运行...
2019-08-16 22:35:48
160
原创 深入Linux内核架构笔记 - 进程管理与调度5: 完全公平调度类
核心调度器必须知道的有关公平调度类的所有信息,都包含在fair_sched_class中static const struct sched_class fair_sched_class = { .next = &idle_sched_class, .enqueue_task = enqueue_task_fair, .dequeue_task = dequeue_task_...
2019-08-10 09:28:57
221
原创 深入Linux内核架构笔记 - 进程管理与调度4: 调度器实现
Overview 调度器任务分为两个部分: 一个涉及调度策略,一个涉及上下文切换。 Linux的CFS调度器,不需要传统时间片的概念,只考虑进程的等待时间,CPU优先选择对时间需求最严格的进程。 调度器的一般原理:将所能分配的计算能力,公平地提供给系统中的每个进程。 计算机通过轮流运行各个进程来模拟多任务,那么对于当前运行的进程,其待遇明显好于等待调度器选择的进程,即等待的进程收到了不公...
2019-07-27 00:26:57
196
原创 深入Linux内核架构笔记 - 进程管理与调度3
进程管理相关的系统调用 fork: 负责进程的复制,系统调用完成后,生成当前进程一个副本 exec: 负责加载新的应用程序进程的复制 传统Unix系统中用于复制进程的系统调用是fork, 但在Linux上它并不是唯一的系统调用fork:使用copy-on-write机制建立了一个进程的副本,然后作为子进程运行。vfork: 用于子进程形成后立即执行exceve加载新程序的情形...
2019-07-21 21:53:32
249
原创 深入Linux内核架构笔记 - 进程管理与调度2
进程表示 Linux内核涉及进程的所有算法都围绕一个名为task_struct的结构建立,简化版本定义如下:struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; atomic_t usage; unsigned lon...
2019-07-07 12:16:35
137
原创 深入Linux内核架构笔记-进程管理与调度1
概述进程是可执行程序的一个运行实例,主要包括当前的程序计数器,寄存器和变量等,从概念上讲,每个进程都有自己的虚拟CPU,但实际上,CPU在各个进程上快速切换。对于进程,内核必须解决的几个问题: 应用程序彼此不能互相干扰,除非有明确要求要这么做 CPU时间要在各个应用程序之间尽可能公平的共享其中第二个问题是进程管理与调度要解决的问题,内核必须决定为各个进程分配多长时间,何时切换到下一个进...
2019-06-28 23:19:43
136
原创 深入Linux内核架构笔记-动态时钟
Overview为节省系统功耗,只在有些任务需要实际执行时,才激活周期时钟,否则会临时禁用周期时钟,对该技术的支持可以在编译时选择,启用此选项的系统也称无时钟系统。判断原则:当系统调度选择IDLE进程来运行时,动态时钟系统会禁用周期时钟,直到下一个定时器即将到期为止数据结构struct tich_sched { struct hrtimer shed_timer; enum tic...
2019-06-02 19:38:22
201
原创 深入Linux内核架构笔记-高分辨率时间
Overview 高分辨率定时器按时间在一颗红黑数上排序 独立于始终周期,采用纳秒时间戳数据结构 高分辨率时钟可以基于两种时钟:CLOCK_MONOTONIC和CLOCK_REALTIME,前一种是单调递增的,后一种可以发生跳变 对于系统中的每个CPU,都提供了一个包含两种时钟基础的数据结构,每个时钟基础都有一个红黑树,来排序所有待处理的高分辨率定时期stuct hrtime...
2019-06-02 18:53:32
372
原创 深入Linux内核架构笔记-通用时间子系统
Overview 3种机制时钟源:struct clocksource, 时间管理的基础,提供单调递增的counter,精度取决于底层硬件时钟事件设备 : struct clocl_event_device, 也称时钟事件源,可以设定在未来的某个时刻发生,通过中断通知系统时钟设备 : 扩展了时钟事件源的功能,提供一个时钟事件的连续流,各个时钟事件定时触发,如果使用动态时钟(为节省电源,...
2019-05-26 20:24:59
234
原创 深入Linux内核架构笔记-低分辨率定时器
Timer类型- 低分辨率时钟: 基于Linux内核配置的HZ周期性触发,可以通过硬件或者高分辨率时钟实现- 高分辨率始终: 基于时钟硬件,可以根据设定的时间出发,精度取决于硬件 低分辨率时钟-HZ配置多数设置为250较高的HZ是系统有更好的交互型和响应速度,但是开销会随之增大- Timer数据结构12- Timer注册- 处理流程YNinterruptIA32t...
2019-05-18 23:12:55
222
原创 Armv7 Exception Return Address
ExceptionReturn InstructionInstruction returned toWhySVCMOVS PC R14Next InstructionTakeSVCExceptionR14 = PC - 4UndefMOVS PC R14Next InstructionTakeUndefInstrExceptionR14 = PC -...
2019-04-28 23:16:08
318
原创 Linux static_key简记(Arm64)
Linux static key代码编译static __always_inline bool static_key_false(struct static_key *key){ return arch_static_branch(key, false);}static __always_inline bool arch_static_branch(struct static_key ...
2019-04-19 23:05:29
1583
1
原创 Linux ext4 rm删除文件恢复
根据inode节点恢复查找文件所在inode节点extundelete --inode 2 /dev/sdxxFile name | Inode number | Deleted statusWorkspace 28442625...
2019-04-10 23:44:28
714
原创 蓝牙流程简记
btu_task(btu_task.c)while循环 p_msg = (BT_HDR *) GKI_read_mbox (BTU_HCI_RCV_MBOX)switch (p_msg->event & BT_EVT_MASK) l2c_rcv_acl_data(BT_EVT_TO_BTU_HCI_ACL)l2c_link_segments_xmitted(BT_EVT_TO_BTU_L2
2017-02-22 12:16:28
889
原创 数据通信与网络-Physical layer
1. 数据和信号1.1 模拟/数字数据 模拟:连续信息数字:离散信息1.2 模拟/数字信号1.3 周期/非周期2. 周期模拟信号2.1 正弦波 振幅周期/频率2.2 相位2.3 波长 Wavelength = (propagation speed) * period2.4 时域/频域2.5 复合信号 有很多简单正弦信号组成根据傅里叶分析,任何复合信号=N个正弦信号(不
2016-10-22 17:06:18
462
原创 Android HttpURLConnection上传数据乱码问题
设置http header: conn.setRequestProperty(“Accept-Charset”, “utf-8”); conn.setRequestProperty(“ContentType”, “utf-8”); value值使用URLEncoder编码 URLEncoder.encode(entry.getValue(),”utf-8”)
2016-05-18 18:18:20
467
原创 Linux - vncaddrbook错误排查(Permission denied )
最近vncaddrbook在用户[xxx]下突然不好用了,运行提示如下:vncaddrbook[7323]: vncaddrbook: connect: Permission denied (13)查看~/.vnc目录下权限都是正确的,一时不知道该怎么办?今天突然灵光一现,找到了问题的原因,特记录查找过程:1) 结合错误提示,联系到在root用户下可以正常运
2015-10-13 15:15:27
1102
转载 理解 Memory barrier(内存屏障)
以下文章转载自:http://name5566.com/4535.html========================================================================================参考文献列表:http://en.wikipedia.org/wiki/Memory_barrierhttp://
2015-10-10 09:15:08
564
原创 向量知识点总结备忘(一)
点与向量 向量 = 点 - 点向量的线性组合 m个向量v1, v2, …, vm的线性组合如下: w = a1v1 + a2v2 + … + amvm 其中a1,a2,…,am是标量向量的仿射组合 如果向量线性组合的系数之和等于1, 那么它就是仿射组合,即系数满足: a1 + a2 + a3 + … + am = 1向量的凸组合 如果向量满足仿射组合,且系数a1,a2,…,a
2015-07-31 13:10:24
664
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人