中国科学技术大学计算机系 陈香兰(0512- ) Spring 2011

Slides:



Advertisements
Similar presentations
定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
Advertisements

《微型计算机技术 及应用》 ( 第 4 版) —— 戴梅萼 史嘉权. 目标 深刻理解 牢固掌握 灵活应用.
第 3 章操作系统基础 3.1 操作系统概述 3.2 操作系统的功能模块 3.3 典型操作系统概述.
执教者:新庄中学 荔选红 一. 音调 1. 音调是指声音的高低 ; 探究 : 决定音调高低的原因 音调的高低取决于发声体振动的快慢, 振动越快音调越高,振动越慢音调越低。
九年级物理一轮复习 第一章 声现象 知识要点. 1. 声音的产生和传播  ( 1 )声音的产生:声音是由于物体的振动产生的。  凡是发声的物体都在振动。振动停止,发声也停止。  ( 2 )声源:正在发声的物体叫声源。固体、液体、气体 都可以作为声源,有声音一定有声源。  ( 3 )声音的传播:声音的传播必须有介质,声音可以在.
第一章 声现象 第二节声音的特征.
第一章 微型计算机系统概述 1.1 计算机的发展与应用 微型计算机的发展与分类 微型计算机的应用
PC DIY達人培訓班 主辦單位:東海高中資訊科 報告人:李宏傑.
欧姆定律和安全用电.
第一部分 中考基础复习 第一章 声现象.
眼科B超的原理及使用方法 一 基础知识.
第二十一章信息的传递 电磁波的海洋 九年级物理.
朝鲜.
有效學習計劃簡介 (學前).
健康檢查簡介 新湖國小健康中心 王淑華護理師 99/11/17.
香港普通話研習社科技創意小學 周順強老師.
第一章 复 习 锦囊妙计 多看书 多看笔记 善于梳理.
操作系统原理 Principles of Operating System
高二选修 外力作用下的振动.
案例研究 —— 美国反恐监视名单数据库的难题.
第十章 信息的传递 一、电话 1、电话的诞生 1876年贝尔发明了电话。最简单的电话由话筒和听筒组成,话筒能把声信号变成电信号,听筒能把电信号变成声信号。
Windows Server 2003操作系统相关配置
第8章 机床操作 主讲:臧红彬 博士.
疲 劳.
第1章 电脑组装基础知识 1.1 电脑的用途和配置 1.2 电脑的组成 1.3 了解几款台式机.
Chapter 6 時序.
CPU的制造 罗曼琳
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
玉溪师范学院 信息技术工程学院.
身边的噪音 ——六(1)班班队活动 李瑷蔚 符蓉.
單晶片原理與應用 魏兆煌 整理 南台科技大學 電機系 Sep
也許你很疑惑: 最近升官的同事,專業能力又沒你強! 情場得意的朋友,長的又沒你帥或美! 小曹要交新朋友,為什麼就是比較簡單!
日本 班級:六年四班 座號: 八號 姓名:楊維綱.
一、选购一台计算机 By:查宇
中国科学技术大学计算机系 陈香兰(0512- ) spring 2011
第一章 计算机基础知识 计算机基础知识.
计算机应用基础 第二章 操作系统基础 2018/11/16.
Windows XP 使用與設定 (進階班) 淡江大學資訊中心教學支援組 劉育辰.
第4章 作業系統的介紹及操作.
作 業 系 統 第三組 楊育翰 顏瑞霖.
第五章 存储系统 半导体存储器概述 系统内存扩充 高速缓冲存储器 虚拟存储器 PC系列机中的主存储器 习题与思考 上一章 目 录 帮助
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
单片机应用技术 项目一 循环彩灯装置 第2讲 51单片机的结构与引脚 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
微机原理与接口技术 第9章 计时/计数接口.
第8章 PCH中的常规接口.
计算机组装、维修及 实训教程 第15章 微机硬件的组装 2018年12月25日星期二.
和諧社區資訊服務推廣計畫 -軟體雲端社區 資訊研習營
詩文的形成 有意義的字詞 句子 段落 一首詩文的形成,是由有意義的字詞組成句子,再由句子組成段落。
校 園 雲端輸出管理系統 新印科技股份有限公司 聯絡人:伍宏一 電 話: /
第二章 Linux简介 Linux概述 Linux系统的特点 Linux中使用的应用程序 Linux的组成 Linux版本介绍
第五章 中断与异常 中断的基本知识 中断描述符表的初始化 中断处理 中断的下半部处理机制 中断的应用-时钟中断.
7.1.1 设备管理的功能(P95) 分配设备:按设备的不同类型和操作系统选用的算法分配。包括分配相应的通道、设备控制器以及对未分配到的任务或怍业进行排队等; 控制和实现真正的输入输出操作。包括通道程序控制、启动设备、及时响应及处理中断讯号等; 对输入输出缓冲区进行管理。例如逻辑名的管理,多个缓冲区的分时以及串并行操作,同类多个外部设备的均衡工作,避免“忙的忙”和“闲的闲”;
认识计算机系统.
作業系統 第三章 作業系統結構.
计算机的产生和发展 王 永 辉 泾川电大工作站.
8051單晶片 蘇恆生 老師.
靜宜大學專用 PowerPoint 檔案 數位教材
第七章  事业单位支出的核算      §第一节  支出概述     §第二节  拨出款项     §第三节  各项支出     §第四节  成本费用.
九年级物理 信息的传递 第二节 电磁波的海洋.
《信息技术与教育技术》听觉媒体技术.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
第五章 输入/输出系统 本章讨论: 接口的基本概念 总线的基本概念 中断方式及其接口组成 中断方式及其接口组成 DMA方式及其接口组成
PLC在数控机床上的经典应用 主讲人:何梦佳 中山职业技术学院 机电工程系.
Linux操作系统分析 中国科学技术大学计算机系 陈香兰(0512- )
第一章 操作系统引论 1.1 操作系统的目标和作用 1.2 操作系统的发展过程 1.3 操作系统的基本特性 1.4 操作系统的主要功能
力学实验复习 杨昌彪 月.
2.4 让声音为人类服务.
智力抢答器综合设计 陈学英.
聲音是一種波 測驗題庫 陳記住 錄製分享 資料來源:教育部國民中學學習資源網.
声音的特性.
Presentation transcript:

中国科学技术大学计算机系 陈香兰(0512-87161312) xlanchen@ustc.edu.cn Spring 2011 Linux操作系统分析 中国科学技术大学计算机系 陈香兰(0512-87161312) xlanchen@ustc.edu.cn Spring 2011

Linux中的 时钟和定时测量

定时测量 Linux内核提供两种主要的定时测量 定时测量是由基于固定频率振荡器和计数器的几个硬件电路完成的 获得当前的时间和日期 维持定时器 系统调用:time(), ftime()以及gettimeofday() 维持定时器 settimer(), alarm() 定时测量是由基于固定频率振荡器和计数器的几个硬件电路完成的 2019/5/2 Linux OS Analysis

主要内容 定时的硬件设备 Linux内核中与时间有关的程序 实现CPU分时、更新系统时间、维护软定时器 与定时测量相关的系统调用及相关服务例程 2019/5/2 Linux OS Analysis

 硬时钟 80x86体系结构上,内核必须显式的与四种时钟打交道 实时时钟Real time clock,RTC 时间戳计数器Time stamp counter,TSC 可编程间隔定时器Programmable interval timer, PIT CPU本地定时器 高精度事件定时器 ACPI电源管理定时器 用于跟踪 当前时间 产生周期性的时钟中断, 用于计时  2019/5/2 Linux OS Analysis

实时时钟RTC 基本上所有的PC都包含实时时钟 与CMOS RAM往往集成在一个芯片内 独立于CPU与所有其他芯片 依靠一个独立的小电池供电给RTC中的振荡器 即使关闭PC电源,还会继续运转 与CMOS RAM往往集成在一个芯片内 例如:Motorala 146818 能在IRQ8上发出周期性的中断,频率在2HZ~8192之间 可以对其编程实现一个闹钟 2019/5/2 Linux OS Analysis

Linux本身只使用RTC获得时间和日期 对应的设备文件为/dev/rtc 内核通过0x70和0x71两个端口访问RTC 可以通过设备文件对其编程 内核通过0x70和0x71两个端口访问RTC 系统管理员可以通过执行时钟程序设置时钟 2019/5/2 Linux OS Analysis

时间戳计数器TSC 在80x86微处理器中,有一个CLK输入引线 从pentium开始,很多80x86微处理器都引入了一个TSC 接收外部振荡器的时钟信号 从pentium开始,很多80x86微处理器都引入了一个TSC 一个64位的、用作时间戳计数器的寄存器 它在每个时钟信号(CLK)到来时+1 例如时钟频率400MHz的微处理器,TSC每2.5ns就+1 rdtsc指令用于读该寄存器 2019/5/2 Linux OS Analysis

与后面介绍的可编程间隔定时器相比,TSC可以获得更精确的时钟 为此,Linux在系统初始化的时候必须确定时钟信号CLK的频率(即CPU的实际频率) tsc_calibrate 根据在一个相对较长的时间间隔内(约5ms)所发生的TSC计数的个数进行计算 那个间隔由可编程间隔定时器给出 由于只在系统初始化的时候运行一次,因此本程序可以执行较长时间,而不会引起问题 2019/5/2 Linux OS Analysis

可编程间隔定时器PIT 经过适当编程后,可以周期性的给出时钟中断 通常是8254 CMOS芯片 Linux将PIT编程为: 使用I/O端口0x40~0x43 Linux将PIT编程为: 100Hz、1000Hz 通过IRQ0发出时钟中断 每若干毫秒(100Hz为10ms)产生一次时钟中断,即一个tick 2019/5/2 Linux OS Analysis

Tick的长短 短 Tick的设置是一个折中,例如 优点:分辨率高 缺点:需要较多的CPU时间处理,会导致用户程序运行变慢 适用于非常强大的机器,这种机器能够承担较大的系统开销 Tick的设置是一个折中,例如 在大多数惠普的Alpha和Intel的IA-64上约1ms产生一个tick(每秒1024个时钟中断) Rawhide Alpha工作站采用更高(1200tick/秒) 2019/5/2 Linux OS Analysis

在Linux中,下列宏决定时钟中断频率 HZ:每秒钟时钟中断的个数,即每秒tick的个数 8254芯片的内部振荡器频率,每秒多少次 2019/5/2 Linux OS Analysis 对8254分频,获得HZ所需的时钟

在init_pit_timer ()中初始化时钟中断频率 此后,只要允许处理时钟中断,约每10ms就会产生一个时钟中断 1tick约为10ms (当HZ=100) 2019/5/2 Linux OS Analysis

Linux的计时体系结构 更新自系统启动以来所经过的时间 更新时间和日期 确定当前进程的执行时间,考虑是否要抢占 更新资源使用统计计数 检查到期的软定时器 2019/5/2 Linux OS Analysis

在单处理器系统中,所有定时活动都由IRQ0上的时钟中断触发,包括 在中断中立即执行的部分,和 作为下半部分延迟执行的部分 2019/5/2 Linux OS Analysis

计时体系结构中的关键数据结构和变量 系统时钟system timer Jiffies变量 计时时钟源 Xtime变量 时钟中断发生源 2019/5/2 Linux OS Analysis

Jiffies变量 记录系统自启动以来系统产生的tick数 每次时钟中断+1 jiffies,32位 关于jiffies_64 约50天就溢出 数十亿年才会溢出 2019/5/2 嵌入式OS

2019/5/2 Linux OS Analysis

2019/5/2 Linux OS Analysis

时钟源 时钟源抽象 缺省时钟源 参见数据结构clocksource 是系统时钟源,定义了系统时钟源的接口 include/linux/clocksource.h kernel/time/jiffies.c 2019/5/2 Linux OS Analysis

clocksource_register clocksource_list 按rating排序 注册时钟源: clocksource_register clocksource_list 按rating排序 kernel/time/clocksource.c 2019/5/2 Linux OS Analysis

Jiffies时钟源(缺省时钟源) 2019/5/2 Linux OS Analysis

PIT时钟源 2019/5/2 Linux OS Analysis

2019/5/2 Linux OS Analysis

2019/5/2 Linux OS Analysis

Xtime变量 存放当前时间和日期 kernel/time/timekeeping.c 2019/5/2 嵌入式OS

时间纪元 1970年1月1日(UTC)午夜 include/linux/time.h 2019/5/2 嵌入式OS

Xtime的更新 基本上每个tick更新一次 参见:update_wall_time 根据时钟源来更新xtime的秒数和纳秒数 时钟源 kernel/time/timekeeping.c kernel/time/timekeeping.c 2019/5/2 嵌入式OS

X86中的时钟源及其初始化 start_kernel timekeeping_init 初始化xtime tick_init 注册 tick_notifier time_init choose_time_init即 hpet_time_init read_persistent_clock tsc_init get_wallclock即 native_get_wallclock 注册 clocksource_tsc setup_pit_timer time_init_hook 设置irq0 注册pit_clockevent 设置global_clock_event mach_get_cmos_time 2019/5/2 Linux OS Analysis

时钟中断处理函数 2019/5/2 Linux OS Analysis

在setup_pit_timer中被初始化为pit_clockevent global_clock_event 在setup_pit_timer中被初始化为pit_clockevent 其event_handler在注册过程中,被初始化为tick_handle_periodic tick_handle_periodic的关键是tick_periodic,该函数 调用do_timer和update_process_times 2019/5/2 Linux OS Analysis

do_timer 全局变量,存放自系统启动 以来的时钟节拍数 2019/5/2 Linux OS Analysis

update_process_times 2019/5/2 Linux OS Analysis

软定时器 定时器是一种软件功能,它允许在将来的某个时刻调用某个函数 大多数设备驱动程序利用定时器完成一些特殊工作 软盘驱动程序在软盘暂时不被访问时就关闭设备的发动机 并行打印机利用定时器检测错误的打印机情况 2019/5/2 Linux OS Analysis

Linux中存在两类定时器: 延迟函数 动态定时器 间隔定时器 内核使用 间隔定时器 由进程在用户态创建 注意:由于软定时器在下半部分处理,内核不能保证定时器正好在时钟到期的时候被执行,会存在延迟,不适用于实时应用 延迟函数 2019/5/2 Linux OS Analysis

动态定时器 动态定时器被动态的创建和撤销,当前活动的动态定时器个数没有限制 include/linux/timer.h 2019/5/2 Linux OS Analysis

创建并激活一个动态定时器 创建一个新的timer_list对象 调用init_timer初始化,并设置定时器要处理的函数和参数 设置定时时间 使用add_timer加入到合适的链表中 通常定时器只能执行一次,如果要周期性的执行,必须再次将其加入链表 2019/5/2 Linux OS Analysis

动态定时器的维护 2019/5/2 Linux OS Analysis

数据结构 kernel/timer.c 2019/5/2 Linux OS Analysis

处理 kernel/timer.c kernel/timer.c,函数init_timers中 2019/5/2 Linux OS Analysis

kernel/timer.c 阅读kernel/timer.c 2019/5/2 Linux OS Analysis

动态定时器应用之delayed work kernel/workqueue.c include/linux/workqueue.h 2019/5/2 Linux OS Analysis

动态定时器应用之schedule_timeout kernel/timer.c 2019/5/2 Linux OS Analysis

延迟函数 2019/5/2 Linux OS Analysis

2019/5/2 Linux OS Analysis

与定时测量相关的系统调用 time() ftime() gettimeofday() 返回从1970年1月1日凌晨0点开始的秒数 返回从1970年1月1日凌晨0点开始的秒数以及最后一秒的毫秒数 数据结构为timeb gettimeofday() 对应于sys_gettimeofday() 2019/5/2 Linux OS Analysis

settimer() alarm() 间隔定时器 引起SIGALARM信号 频率:周期性的触发定时器(若为0,只触发一次) 2019/5/2 Linux OS Analysis

与时钟相关的命令 date:显示或者更改系统时钟 使用time获得时钟 使用ctime改变时钟格式 2019/5/2 Linux OS Analysis

Project 具体要求参见课程主页 在用户态编写一个程序,该程序设定一个定时器,在时间到期的时候做出某种可观察的响应 方法不限 分析你的程序的实际执行借助了内核的哪些机制 2019/5/2 Linux OS Analysis