|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果你让他去用linux搭建一个web服务器,做一个linux网关,他就什么都不会了.他们把时间都浪费在了版本的转换上了.
80X86系统布局上,经常使用的准时器电路
及时时钟(RTC)
RTC内核经由过程IRQ8上收回周期性的中止,频次在2-8192HZ之间,失落电后仍然事情,内核经由过程会见0x70和0x71I/O端口会见RTC。
工夫戳计时器(TSC)
使用CLK输出引线,吸收内部振荡器的时钟旌旗灯号,该盘算器是使用64位的工夫戳计时器存放器来完成额,与可编程距离准时器传送来的工夫丈量比拟,更加准确。
可编程距离准时器(PIT)
PIT的感化相似于微波炉的闹钟,PIT永久之内核断定的流动频次收回中止,但频次不算高。
CPU当地准时器
使用PIC大概APIC总线的时钟盘算。
高精度工夫准时器(HPET)
功效对照壮大,家机很罕用,也不往记了。
ACPI电源办理准时器
它的时钟旌旗灯号具有约莫为3.58MHZ的流动频次,该设备实践上是一个复杂的计数器,为了读取盘算器的值,内核必要会见某个I/O端口,必要初始化
准时器的数据布局
使用timer_opts形貌准时器
Timer_opts的数据布局
Name:标记准时器员的一个字符串
Mark_offset:纪录上一个节奏入手下手所经由的工夫,由时钟中止处置程序挪用
Get_offset前往自上一个节奏入手下手所经由的工夫
Monotonic_clock:前往自内核初始化入手下手所经由的纳秒数
Delay:守候制订数量的“轮回”
准时插补
就仿佛我们要为1小时35分34秒举行准时,我们不成能用秒表往统计,一定先利用盘算时的表,再用盘算分的,最初才用秒表,在80x86架构的准时器也会利用各类准时器往举行准时插补,我们能够经由过程cur_timer指针来完成。
单处置器体系上的计时系统布局
一切与准时有关的举动都是由IRQ线0上的可编程距离准时器的中止触发。
初始化阶段
1.初始化间,time_init()函数被挪用来创建计时系统布局
2.初始化xtime变量(xtime变量寄存以后工夫和日期,它是一个timespec范例的数据布局)
3.初始化wall_to_monotonic变量,它跟xtime是统一范例的,但它寄存将加在xtime上的形貌和纳秒数,如许即便突发改动xtime也不会遭到影响。
4.看是不是撑持高精度计时器HPET
5.挪用select_timer()选择体系中可使用的最好的准时资本,并让cur_timer变量指向该准时器
6.挪用setup_irq(0,&irq0)来创立与IRQ响应的中止门。
时钟中止处置程序
1.在xtime_lock按次锁发生一个write_seqlock()来回护与准时相干的内核变量,如许避免中止让该历程被制止。
2.实行cur_timer准时器工具的mark_offset办法(纪录上一个节奏入手下手所经由的工夫,由时钟中止处置程序挪用)
3.挪用do_timer_interrupt函数,步骤为
a)使jiffies_64值增1
b)挪用updata_times()函数来更新体系日期和工夫。
c)挪用updata_process_times()函数为当地CPU实行几个与准时相干的计数器感化。
d)挪用profile_tick()函数
e)假如使用内部时钟来同步体系时钟,则每隔660秒,挪用一次st_rtc_mmss()函数来调剂及时时钟。
f)挪用write_sequnlokc()开释xtime_lock按次锁。
4.前往值1,呈报中止已无效地处置了。
这个还算复杂,接上去是多处置器体系上的计时系统计划。
多处置器体系上的计时系统
初始化阶段
经由过程calibrate_APIC_clock()盘算当地APIC多久才发生一次中止。
全局时钟中止处置程序
SMP版本的timer_interrupt()处置程序与UP版本的处置程序在几个中央有差别。
Timer_interrupt()挪用函数do_timer_interrupt()向I/OAPIC芯片的一个端口写进,以应对准时器的中止请求。
Updata_process_times()函数不被挪用,由于该函数实行与特定CPU相干的操纵
Profile_tick()不被挪用,由于该函数一样实行与特定CPU相干的操纵。
静态准时器
这部分使用很简单,但要了解静态准时器的机理,真的澹退邓涤玫牟糠职伞
静态准时器寄存在timer_list布局中
Structtime_list{
Structlist_headentry;
Spinlock_tlock;
Unsignedlongmagic;
Void(*function)(unsignedlong);
Unsignedlongdata;
Tvec_base_t*base
};
Entry字段用于将软准时器拔出双向轮回链表行列中,其值该链表依据准时器expires字段的值将他们分组摊开(假如对静态准时器完成道理没乐趣的,能够忽视,不必要要设置的项目)
Expries字段给出准时器到期工夫,工夫用拍子数暗示,一样平常都是unsignedlongexpire=timeout+jiffies
Lock自旋锁
Function准时发生中止后,实行得函数
Data,能够界说一个独自的通用函数来处置多个设备驱动程序超时的成绩
</p>
网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup |
|