




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、定时器与时间管理、内存管理,上次课的回顾及后面的安排 内核中的时间概念 Linux中时间表示 硬件时钟和定时器 Linux下的时钟中断和相关时间应用 Linux内存页 Linux内存区 内存管理提供的服务 内存管理缓存机制 内存映射,上次内容回顾和后面的安排,系统调用和中断(回顾上节课内容) 中断处理程序的上、下半部机制 LINUX下半部处理机制 同步的经典问题 LINUX内核同步实现 增加一次课,课本内容完成后通过两个专题的形式增加对内核的认识,内核中的时间概念,事件驱动与时间驱动 内核中需管理相对时间和绝对时间 内核时间的硬件基础(系统定时器以某种频率触发,hitting or popin
2、g,该频率可以通过编程预定(tick rate) 直接用处: 更新系统运行时间 更新实际时间 定期均衡运行队列(SMP上) 时间片 定期统计,Linux中时间表示(HZ),节拍率(HZ) 系统定时器频率,可以通过设置修改,系统启动时设置,不同体系结构下不同。 如:在include/asm-i386/param.h中: #define Hz 1000 /相当于1秒中断1000次 思考:时间的精确性 书上P116表9-1给出一般情况下各种体系结构下的时钟中断频率 理想的HZ值应该是多少? 多时会产生中断频繁 但提高精度(分析:平均误差),Linux中时间表示(HZ),精度提高的进一步讨论 一些关键
3、系统调用的效率提高(poll(),select()) 进程抢占的精度提高 时间测量方面精度提高 中断次数增加带来的问题 综合考虑认为目前体系结构的系统设为1000可以忍受。,Linux中时间表示(jiffies),全局变量,用来记录系统启动以来产生的节拍总数 在中定义: Extern unsigned long volatile jiffies;响应地有: Seconds* HZ = jiffies; (jiffies/HZ) = seconds;(还有一些其他的转换) 有关jiffies的内部位数问题: 溢出时间问题 64位问题(2.6中),Linux中时间表示(jiffies),64位与3
4、2位的结合 Jiffies的回绕 unsigned long timeout = jiffies + HZ/2; /*执行一些任务.*/ if (timeout jiffies) 未超时,正常处理 else 超时,错误处理; ,Linux中时间表示(jiffies),回绕的处理: time_after Time_before Time_after_eq Time_before_eq 分析怎样避免的回绕影响(借用了LONG的符号),Linux中时间表示(用户空间和HZ),内核改变HZ的值会影响一些基于原来值的应用 内核需要导出合适的jeffies值 若新旧HZ数差整数倍则比较简单 #define
5、 jiffies_to_clock(x)(x)/(HZ/USER_HZ) 否则,需要向时间上做一下转换,误差会小一些。 思考一下,为什么?,硬件时钟和定时器,体系结构提供了两种设备计时 系统定时器 实时时钟(RTC),不开机时靠电池供电工作,系统启动时,初始化xtime变量。,Linux下的时钟中断和相关时间应用,时钟中断处理程序做的工作: 获得xtime_lock锁,对jiffies_64和xtime进行保护(为什么jiffies不用保护) 应答或重新设置系统时钟 周期性地使用墙上时间更新实时时钟 调用体系结构无关的时钟例程:do_timer(): Jiffies_64变量加1 更新资源消耗
6、的统计值 执行到期的动态定时器 执行sheduler_tick()函数 更新墙上时间并存到xtime变量中 计算平均负载值,Linux下的时钟中断和相关时间应用,Do_timer() void do_timer(struct pt_regs *regs) jiffies_64+; update_process_times(user_mode(regs); update_times(); ,Linux下的时钟中断和相关时间应用,Void update_process_times(int user_tick) Struct task_struct *p = current; Int cpu = s
7、mp_processor_id() Int system = user_tick 1; (见书上P123),Linux下的时钟中断和相关时间应用,统计的不精确性 根据上面的处理可以看出,一个节拍的时间要么给一个用户进程,要么给系统,这样做很不精确,因为在一个节拍中进程可能多次进入。这也是要采取更高频率的原因。,Linux下的时钟中断和相关时间应用,更新墙上时钟 Void update_times(void) unsigned long ticks; ticks = jiffies wall_jiffies; if (ticks) wall_jiffies += ticks; update_wa
8、ll_time(ticks); last_time_offset = 0; calc_load(ticks); ,Linux下的时钟中断和相关时间应用,实际时间 定义在中,形式如下: Struct timespec Time_t tv_sec; Long tv_nsec; ,Linux下的时钟中断和相关时间应用,实际时间的更新和读取都需要锁。 Write_seqlock(P125),Linux下的时钟中断和相关时间应用,从用户空间获取时间的调用为 Gettimeofday() 内核中对应的系统调用为:sys_gettimeofday() P125,Linux下的时钟中断和相关时间应用,动态定时
9、器 一些工作要在后面一个相当的时间执行,这就需要定时器的控制,定时器有时也称内核定时器 使用定时器 定时器由timer_list表示,定义在中。 具体结构见:P126 定义:struct timer_list my_timer; 初始化:init_timer(,Linux下的时钟中断和相关时间应用,其他几个函数 Mod_timer() Del_timer(),Linux下的时钟中断和相关时间应用,定时器竞争条件 定时器的实现 在时钟中断处理程序的下半部执行:update_process_timers()函数,该函数调用run_local_timers() raise_softirq(TIMER
10、_SOFTIRQ); ,Linux下的时钟中断和相关时间应用,延迟执行 忙等待 短延迟,Linux内存页,内核中内存的分配要复杂的多 内核以物理页为单位分配内存 物理页的大小取决于体系结构,一般 4kB 8kB,Linux内存页,数据结构:中定义: Struct page unsigned long flags; Atomic_t count; Struct list_head list; Struct address_space *mapping; Unsigned long index; Struct list_head lru; Union struct pte_chain *chain
11、; pte_addr_t direct; pte Unsigned long private; Void *virtual;,Linux内存区,由于硬件的限制,内核并不能对所有的页一样看待。这样内核需要对页进行分类,分不同的区域。 一些硬件只能允许某些特定的内存地址来执行DMA. 一些体系结构其内存的物理地址范围比虚拟寻址范围大得多。这样有一些内存就不能总是映射到内核空间上。 Linux对应有三个区 ZONE_DMA ZONE_NORMAL ZONE_HIGHMEM (P135),内存管理提供的服务,获得页 Alloc_pages() Page_address(struct page *page) _get_free_pages() al
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 荆州市监利市事业单位2025年统一公开招聘笔试历年典型考题及考点剖析附带答案详解
- 随州市曾都区事业单位2025年统一公开招聘笔试历年典型考题及考点剖析附带答案详解
- 【扬州】2025年江苏扬州高新技术产业开发区下属单位招聘员额制工作人员4人笔试历年典型考题及考点剖析附带答案详解
- 张娟诗经教学课件
- 2025年西安市事业单位公开招聘(募)工作人员笔试和安排笔试历年典型考题及考点剖析附带答案详解
- 【安阳】2025年河南安阳市殷都区区直事业单位公开选调工作人员34人笔试历年典型考题及考点剖析附带答案详解
- 第七节气体钢瓶的常用标记及使用注意事项66课件
- 传统节日教学设计课件
- 小学生篮球拍球活动课件
- 小学生科学课件
- 小数乘除法竖式计算题及答案
- 2024年医院信息保密制度范本(三篇)
- 第22章 相似形 单元检测题2023-2024学年沪科版数学九年级上册
- 血管内超声IVUS简介
- DL∕T 2528-2022 电力储能基本术语
- 山东财经大学《大学英语》2022-2023学年期末试卷
- 2024年歌尔股份有限公司校园招聘考试试题完美版
- peskin量子场论课后答案(芝加哥大学版)
- 医院专家工作站合作协议书
- 2023年河北语文高考试题
- 2023年禁毒工作全年工作总结
评论
0/150
提交评论