linux内核源代码分析-定时器与时间管理ppt课件_第1页
linux内核源代码分析-定时器与时间管理ppt课件_第2页
linux内核源代码分析-定时器与时间管理ppt课件_第3页
linux内核源代码分析-定时器与时间管理ppt课件_第4页
linux内核源代码分析-定时器与时间管理ppt课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、定时器与时间管理、内存管理 上次课的回想及后面的安排 内核中的时间概念 Linux中时间表示 硬件时钟和定时器 Linux下的时钟中断和相关时间运用 Linux内存页 Linux内存区 内存管理提供的效力 内存管理缓存机制 内存映射上次内容回想和后面的安排 系统调用和中断(回想上节课内容) 中断处置程序的上、下半部机制 LINUX下半部处置机制 同步的经典问题 LINUX内核同步实现 添加一次课,课本内容完成后经过两个专题的方式添加对内核的认识内核中的时间概念 事件驱动与时间驱动 内核中需管理相对时间和绝对时间 内核时间的硬件根底系统定时器以某种频率触发,hitting or poping,该

2、频率可以经过编程预定tick rate 直接用途: 更新系统运转时间 更新实践时间 定期平衡运转队列SMP上 时间片 定期统计Linux中时间表示(HZ) 节拍率(HZ) 系统定时器频率,可以经过设置修正,系统启动时设置,不同体系构造下不同。如:在include/asm-i386/param.h中:#define Hz 1000 /相当于1秒中断1000次思索:时间的准确性 书上P116表9-1给出普通情况下各种体系构造下的时钟中断频率 理想的HZ值应该是多少? 多时会产生中断频繁 但提高精度分析:平均误差Linux中时间表示(HZ) 精度提高的进一步讨论 一些关键系统调用的效率提高poll(

3、),select() 进程抢占的精度提高 时间丈量方面精度提高 中断次数添加带来的问题 综合思索以为目前体系构造的系统设为1000可以忍受。Linux中时间表示(jiffies) 全局变量,用来记录系统启动以来产生的节拍总数 在中定义: Extern unsigned long volatile jiffies;呼应地有: Seconds* HZ = jiffies; (jiffies/HZ) = seconds;还有一些其他的转换 有关jiffies的内部位数问题: 溢出时间问题 64位问题2.6中Linux中时间表示(jiffies) 64位与32位的结合 Jiffies的缭绕unsign

4、ed 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 jiffies_to_clock(x) (x)/(H

5、Z/USER_HZ) 否那么,需求向时间上做一下转换,误差会小一些。 思索一下,为什么?硬件时钟和定时器 体系构造提供了两种设备计时 系统定时器 实时时钟RTC,不开机时靠电池供电任务,系统启动时,初始化xtime变量。Linux下的时钟中断和相关时间运用 时钟中断处置程序做的任务: 获得xtime_lock锁,对jiffies_64和xtime进展维护为什么jiffies不用维护 应对或重新设置系统时钟 周期性地运用墙上时间更新实时时钟 调用体系构造无关的时钟例程:do_timer(): Jiffies_64变量加1 更新资源耗费的统计值 执行到期的动态定时器 执行sheduler_tick

6、()函数 更新墙上时间并存到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 = smp_processor_id()Int system = user_tick

7、 1;(见书上P123)Linux下的时钟中断和相关时间运用 统计的不准确性根据上面的处置可以看出,一个节拍的时间要么给一个用户进程,要么给系统,这样做很不准确,由于在一个节拍中进程能够多次进入。这也是要采取更高频率的缘由。Linux下的时钟中断和相关时间运用更新墙上时钟Void update_times(void)unsigned long ticks;ticks = jiffies wall_jiffies;if (ticks) wall_jiffies += ticks;update_wall_time(ticks);last_time_offset = 0;calc_load(tick

8、s);Linux下的时钟中断和相关时间运用 实践时间 定义在中,方式如下: Struct timespec Time_t tv_sec; Long tv_nsec; Linux下的时钟中断和相关时间运用 实践时间的更新和读取都需求锁。 Write_seqlock(&xtime_lock); /* 更新xtime*/ Write_sequnlock(&xtime_lock); Read_seqbegin() , read_seqretry();(P125)Linux下的时钟中断和相关时间运用 从用户空间获取时间的调用为 Gettimeofday() 内核中对应的系统调用为:sys

9、_gettimeofday() P125Linux下的时钟中断和相关时间运用 动态定时器 一些任务要在后面一个相当的时间执行,这就需求定时器的控制,定时器有时也称内核定时器 运用定时器定时器由timer_list表示,定义在中。详细构造见:P126 定义:struct timer_list my_timer; 初始化:init_timer(&my_timer); 填充构造中需求的值:my_timer.expires = my_timer.function = myfunction; 激活定时器:add_timer(&my_timer);Linux下的时钟中断和相关时间运用 其他

10、几个函数 Mod_timer() Del_timer()Linux下的时钟中断和相关时间运用 定时器竞争条件 定时器的实现 在时钟中断处置程序的下半部执行:update_process_timers()函数,该函数调用run_local_timers() raise_softirq(TIMER_SOFTIRQ); Linux下的时钟中断和相关时间运用 延迟执行 忙等待 短延迟Linux内存页 内核中内存的分配要复杂的多 内核以物理页为单位分配内存 物理页的大小取决于体系构造,普通 4kB 8kBLinux内存页数据构造:中定义:Struct page unsigned long flags;A

11、tomic_t count;Struct list_head list;Struct address_space *mapping;Unsigned long index;Struct list_head lru;Union struct pte_chain *chain; pte_addr_t direct; pteUnsigned long private;Void *virtual;Linux内存区 由于硬件的限制,内核并不能对一切的页一样对待。这样内核需求对页进展分类,分不同的区域。 一些硬件只能允许某些特定的内存地址来执行DMA. 一些体系构造其内存的物理地址范围比虚拟寻址范围大得多。这样有一些内存就不能总是映射到内核空间上。 Linux对应有三个区 ZONE_DMA ZONE_NORMAL ZONE_HIGHMEM P 内存管理提供的效力 获得页 Alloc_pages() Page_address(struct page *page) _get_fre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论