计算机的时钟(一):NTP 协议

计算机的时钟(一):NTP 协议,第1张

本系列文章主要介绍计算机系统中时钟的处理。主要内容包含NTP,Lamport逻辑时钟,向量时钟,TrueTime等。本文是第一篇,介绍NTP协议。

不知道你注意过没有,假如隔了好几天打开你的电脑,任务栏的时间依然是显示正确的,即使你的电脑没有联网,这是如何做到的?

计算机的主板上有一个石英晶体振荡器和一个纽扣电池。石英晶体振荡器的频率是32768Hz每秒。在通电的时候,石英晶体每振动32768次,电路就会传出信息,表示1秒钟到了,通过这种方式来记录时间。但是石英晶体会有误差,正常情况下,每天的计时误差在正负1秒钟。而且在极端温度下,比如零下二十度,误差会变大。

正是因为石英晶体误差比较大,所以1985年特拉华大学的David L Mills设计了网络时间协议NTP(Network Time Protocol)来同步不同计算机系统之间的时钟。

NTP协议的目标是将所有计算机的时间同步到几毫秒误差内。实际上广域网可以达到几十毫秒的误差,局域网误差可以在1毫米内。NTP协议是一种主从式架构协议,使用分层的时钟源系统,每一层称为Stratum,阶层的上限是15,阶层16表示未同步设备。常见的阶层如下:

参考(基准)时钟,主要由高精度计时设备,比如铯或铷原子钟、GPS时钟、无线电时钟。它们生成非常精确的脉冲信号,触发计算机上的中断和时间戳。

主时间服务器,这些服务器与阶层0设备相连,在几微秒误差内同步系统时钟。阶层1服务器之间可以互相连接,进行完整性检查和备份。

这些计算机通过网络和阶层1服务器同步。每个计算机可以查询多个阶层1服务器,阶层2计算机之间也可以互相连接。

这些计算机与阶层2的服务器同步。

NTP协议的时钟同步过程如下:

从上面的流程中可以很容易地计算出:

AB之间的网络往返时间RTT(Round Trip Time):δ = (T4 - T1) - (T3 - T2)

AB之间的时间偏移:θ = ( (T2 - T1) + (T3 - T4) ) / 2

推导过程:A从发送请求消息到收到响应的时间间隔是 T4 - T1,其中 T3 - T2 是B的处理时间,所以网络往返时间

δ = (T4 - T1) - (T3 - T2)。

假设A和B的时间偏差为θ,那么 T3 - θ = T3`。

T4和T3` 的间隔是半个RTT:T4 - T3` = δ / 2

把T3`和δ代入上面这个等式,得到:θ = ( (T2 - T1) + (T3 - T4) ) / 2。

NTP协议使用UDP协议来传输,端口为123,报文格式如下:

各个字段的含义如下:

NTP协议在广域网可以达到几十毫秒的误差,局域网误差可以在1毫米内。误差最大的一个原因是发送请求和接收响应这两个阶段的网络时间可能是不一样的。前面我们推导时间偏移公式的时候,假设网络往返发送和接收阶段的时间是一样的,但是实际网络中,这两个阶段走的路由可能是不一样的,所花的时间也可能不一样,计算的时间偏移也不准确,这样就造成了广域网的误差可能达到几十毫秒甚至更高。局域网中因为网络比较稳定,经过的路由器也比较少,所以误差可以到1毫米内。

rfc5905

网络时间协议

NTP 协议简单分析

学院北京101407)
(版权归原作者所有)
摘要
文章介绍了作者在过击5年中在微内核技术上所做的工作.由于集成电路、计算机网络、分布式处理、多机并行处理、容错等技术的迅速发展,面向单处理机,采用内核不可抢占技术的Unix *** 作系统已经很难适应硬件技术的发展.为了适应以上技术的发展,Unix *** 作系统的内核越做越大,越做越复杂.完全丧失了其初始设计目标:系统短小精悍,容易理解.卡内基梅隆大学在美国国防部、国家科学基金的资助下,于1986年推出了一个基于微内核结构的 *** 作系统Math.口:随后.斯坦福大学等研究机构纷纷发表了他们在这个领域所做的工作, 各个大公司纷纷推出了基于微内核结构的 *** 作系统、D 微内核技术已成为新一代 *** 作系统体系结构的研究热点.
基于微内核结构的 *** 作系统和传统 *** 作系统相}匕,具有以下特点:① 内核精巧.通常内核只由任务管理、虚存管理和进程间通信3个部分组成.传统 *** 作系统内核中的许多部分都被移出内核.采取服务器方式实现;② 面向多处理机和分布式系统.基于微内核的 *** 作系统,在内核中引入了多处理机调度和管理机制,并引入了细粒度并发机制——
线程,使得多个处理机可以在同一个任务中并行地执行;③ 基于客户/服务器体系结构.在微内核结构的 *** 作系统中,任务间通信机制—— 消息机制是系统的基础, *** 作系统的各种功能都以服务器方式实现,向用户提供服务.用户对服务器的请求是以消息传递的方式传给服务器的.
“八五”期间,耪们在国家“八五攻关项目的支持下,对 *** 作系统微内核技术进行了探入研究,在微内核系统调度技术、存储管理技术、计时模型、微内核系统扩展技术及微内核 *** 作系统原型系统构造方面取得了一些研究成果.本文将介绍这些研究成果
正文
1 微内核系统调度技术
与传统的 *** 作系统内核相比,微内核调度系统中最突出的特征是增加了处理机和处理机集及线程的管理,并且向用户提供了灵活的手段来控翩自己的程序在处理机上的运行.这{羊,微内核系统就能很好地支持多处理机体系结构.同时,线程为用户提供了细粒度的并行处理机制,使得同一个用户任务中的不同线程可以同时在多个处理机上运行.
与进程相比,线程中所带的资源很少,因此,创建线程和撤消线程的开销就比进程小.线程也称为“轻进程.在系统调度中,线程的切换开销也比进程步,但是不同任务中的线程切换会引起任务的切换,在这种情况下,线程和进程的调度开销就变成一样了.为了优化系统效率,减步由于线程切换而弓I起的任务切换,在调度算法中加入了以下代码:
IF (所选中的线程和当前运行的城程属于同一十任务)
THEN 不做任务切换}
ELSE进行任务切换 *** 作}
显然,这种方法在某种情况下会对系统性能有所帮助,但是这种方法在很大程度上属于一种“被动的,或者说是一种“碰运气”的方法.另外,单纯以线程为主的调度算法对用户任务有失公平性,以线程为主的调度算法是完全参照传统 *** 作系统中的调度算法设计而成的.当线程投入运行时,系统为它分配周定大小的时间片,系统中线程按时间片轮转.这样,就产生了公平性问题:如果一个任务中有两个线程,那么,从理论上讲,它将比只用一个线程实现的任务多获得近1倍的处理机时间.在传统的进程调度系统中,一个用户可以通过创建多个进程来获得更多的处理机调度机会,但是,它是建立在增加了创建进程和进程间通讯的系统开销代价的基础上的相比之下,创建线程的开销非常小,同一任务间的线程之闭通讯开销也很小为了解决上述问题,我们提出并实现了一种将传统的任务和新的线程调度机翩相结合的方法:以任务为单位分配时间片(这样可以保证调度的公平性),在线程调度时,当一个线程不是由于任务时间片用完的原因而放弃处理机时,只要系统中没有高优先级线程,就从本任务中选取线程,从而使得由线程切换而引起的任务切换 *** 作开销达到最小.
从目前的发展来看,用户任务的并行粒度越来越小,即用户任务中的线程越来越多,而每个线程所执行的 *** 作会越来越步.因此,使用线程+任务的方法可以有效地减少单纯的以线程为主的系统调度所引起的系统开销.
2 微内核虚拟存储管理技术
微内核虚拟存储管理系统弓『入了存储对象(Memory Object)的概念,将物理内存看成外部存储对象的(如磁盘)高速缓存(Cache),实现了虚拟存储器写时拷贝(Copy onWrite)技术,引入了lazy evaluation技术.定义了虚拟存储器和硬件存储管理机制的接口(Pmap),实现了与机器无关的虚拟存储系统.
虚拟存储器写时拷贝算法是微内核虚拟存储管理系统的核心算法.它的弓f入使得虚拟存储器管理的效率大大提高了一步.但是,它的实现依赖于硬件存储管理机制的页面保护机制,对于一个具有写时拷贝共享属性的存储区,其页面保护被设置成写保护.多个用户可以共享的方式对它进行读 *** 作,但是,当用户试图对这块区域进行写 *** 作时,将产生写保护故障,页面故障管理程序将为用户进程复制物理页面.从而达到写时拷贝的目的.
在I386体系结构下,只有用户态页面允许写保护,在其他机器状态下,硬件存取机制将绕过页面保护机翩,直接对页面进行写 *** 作.在这种状态下,写时拷贝算法将失效.而在微内核体系结构中,可能有各种状态下的服务器,如在内核态下运行的服务器.为了解决这个问题。我们引入了写时拷贝和访问时拷贝(Copy oil Reference)相结合的算法.
即在用户态上使用写时拷贝算法,在其他状态下使用访问时拷贝算法来替换写时拷贝算法,以解决写时拷周算法失效的问题.访问时拷贝算法的实现依赖于页面保护机制的映页机制.这样,在其他状态下,在设置页面保护时将写保护改成映页即可.新的方法在效率上比写时拷贝算法低,但是比完全拷贝的方法高出许多,特别是与lazy evaluation技术相配合时
效率会更高.由于微内核提供的写时拷贝算法是对用户透明的,即对于用户编写的任何状态下的服务器都将使用写时拷贝算法.因此,在I386体系结构下,在非用户态上运行的用户服务器有可能出错,新的算法解决了这个问题.
3 微内核计时模型
在传统 *** 作系统中,为统计出每个进程的处理机时间使用量的单元.系统计时一般是放在处理机时钟中断服务程序中.系统
IF (当前盎程处于用户态)
增加当前进程的用户奋处理机时间使用量
在每个进程结构中都没有统计进程使用处理机时间
般采用如下代码段来进行用户进程的时间统计.
ELSE
增加当前进程的系统态处理机时闻使用量
由于在传统的 *** 作系统中, *** 作系统提供的服务完全由 *** 作系统内核来完成。用户通过系统调用进入内核来取得服务.因此,采用上述方法能比较准确地统计出用户所用的处理机时间.但是,这种计时方法是一种比较粗糙的计时方法.每次时钟中断时,它就将一个固定的时间片(时钟中断周期)加入披中断的进程中,而不管该进程是否完全使用了这些处理机对向.由于这种方法实现起来非常简单,系统开销很小,几乎所有的 *** 作系绕都采用了这种方法.在新的 *** 作系统中引入了细粒度的并行执行部件—— 线程。对于线程的计时也采用了和进程相同的方法.为了取得精确的处理机时同统计精度.一些新型 *** 作系统弓『入了新的计时机制.如MACH 3.0中引^了基于时间戳的精确计时机制.在微内核体系结构下.传统的 *** 作系统功能是通过服务器的方式来实现的.服务器和用户任务一样,也作为一个进程运行.当用户进程调用 *** 作系统服务时,微内核通过消息将系统服务的参数传递给 *** 作系统服务器,由 *** 作系统服务器来完成用户请求,并将结果通过消息传递给用户进程.这样,如果采用传统的方法来进行进程的处理机时问统十。就会将 *** 作系统为用户提供服务所用的处理机时间记入服务器中.而不是用户进程中.
为了解决这个问题,我们引^了委托线程的概念,建立了新的用户进程计时模型.在客户/服务器模型中,用户通过消息请求服务器的服务,服务器接收用户的消息完成用户的请求,再通过消息将结果传给用户.在这种体系结构下,可看成用户将自己的一部分工作委托给服务器完成,服务器是在为委托线程服务.当用户线程向服务器发出请求时,将用户线程标识传递给服务器,当服务器中的某个线程处理这个请求时,将用户线程标识记^服务器线程结构中的委托线程域中.在系统时钟中断服务程序中增加为委托线程计时的代码。就可将 *** 作系统服务器为用户进程限务的时同计算到用户进程中.
IF(当前线程结构中有委托线程)
IF(当前线程赴于用户态)
增加委托线程的用户态赴理机时间使用量
ELSE
增加委托线程的系统态处理机时间使用量
在多服务器体系结构下,一个用户请求往往需要多个服务器的协同服务,如一个文件读 *** 作,需要文件服务器的服务,如果文件服务器发现数据存放在磁盘中,它就需要请求设备服务器的眼务,设备服务器实际上是在为用户线程服务.因此,在多服务器情况下,当一个服务器向另一个服务器发出请求时,必须将自己的委托线程标识号传递给目标服务器.这样, *** 作系统为一个线程提供所有服务所使用的处理机时间都将计算到用户线程中击.为了完成以上功能,必须对微内核的消息传递机制进行扩充,使用户在请求服务时能将线程的标识传递给服务器,服务器在接收消息时能接收到委托线程标识.所有这些 *** 作必须对用户透明.微内核的消息传递机制由消息发送和消息接收两部分组成.通过在这两个原语中加入以下逻辑来实现委托线程标识的发送和接收.
SEND :
IF(当前线程结构中有委托线程标识)
将委托线程标识传递出去
ELSE
将当前线程的标识传递出击
RECEIVE:
IF(当前线程是服务器)
将委托线程号放凡服务器线程结构
在发送原语中,可将委托线程标识从一个服务器传递到另一个服务器.在接收逻辑中,通过增加服务器标识的判断可以避免非服务器线程之间的偶发通讯而导致的用户线程的计时错误.
4 结论
微内核技术是当今 *** 作系统发展的最新成果.在体系结构方面,它采用了面向对象技术来描述 *** 作系统内核对象,提出并实现了基于客户服务器体系结构的 *** 作系统.在算法方面,提出了许多高教新颖的算法,如线程及处理机调度算法、写时拷贝算法、与硬件无关的存储管理算法以及精确计时算法等等.在国产微内核 *** 作系统COSIX2.0的研制过程中,通过对国外微内核技术的消化和研究,提出并实现了一些新的算法和模型,改进了系统的性能,提高了系统的可靠性,做到了有所继承,有所刨新目前,我们正在进行基于微内核的JAVA虚拟机,支持服务质量(Quality of Services)的调度系统微内核热重启(Hot Restart)技术的研究.以上内容是我们一部分研究工作的总结.

1 微内核系统调度技术 与传统的 *** 作系统内核相比,微内核调度系统中最突出的特征是增加了处理机和处理机集及线程的管理,并且向用户提供了灵活的手段来控翩自己的程序在处理机上的运行.这{羊,微内核系统就能很好地支持多处理机体系结构.同时,线程为用户提供了细粒度的并行处理机制,使得同一个用户任务中的不同线程可以同时在多个处理机上运行. 与进程相比,线程中所带的资源很少,因此,创建线程和撤消线程的开销就比进程小.线程也称为“轻进程.在系统调度中,线程的切换开销也比进程步,但是不同任务中的线程切换会引起任务的切换,在这种情况下,线程和进程的调度开销就变成一样了.为了优化系统效率,减步由于线程切换而弓I起的任务切换,在调度算法中加入了以下代码: IF (所选中的线程和当前运行的城程属于同一十任务) THEN 不做任务切换} ELSE进行任务切换 *** 作} 显然,这种方法在某种情况下会对系统性能有所帮助,但是这种方法在很大程度上属于一种“被动的,或者说是一种“碰运气”的方法.另外,单纯以线程为主的调度算法对用户任务有失公平性,以线程为主的调度算法是完全参照传统 *** 作系统中的调度算法设计而成的.当线程投入运行时,系统为它分配周定大小的时间片,系统中线程按时间片轮转.这样,就产生了公平性问题:如果一个任务中有两个线程,那么,从理论上讲,它将比只用一个线程实现的任务多获得近1倍的处理机时间.在传统的进程调度系统中,一个用户可以通过创建多个进程来获得更多的处理机调度机会,但是,它是建立在增加了创建进程和进程间通讯的系统开销代价的基础上的相比之下,创建线程的开销非常小,同一任务间的线程之闭通讯开销也很小为了解决上述问题,我们提出并实现了一种将传统的任务和新的线程调度机翩相结合的方法:以任务为单位分配时间片(这样可以保证调度的公平性),在线程调度时,当一个线程不是由于任务时间片用完的原因而放弃处理机时,只要系统中没有高优先级线程,就从本任务中选取线程,从而使得由线程切换而引起的任务切换 *** 作开销达到最小. 从目前的发展来看,用户任务的并行粒度越来越小,即用户任务中的线程越来越多,而每个线程所执行的 *** 作会越来越步.因此,使用线程+任务的方法可以有效地减少单纯的以线程为主的系统调度所引起的系统开销. 2 微内核虚拟存储管理技术 微内核虚拟存储管理系统弓『入了存储对象(Memory Object)的概念,将物理内存看成外部存储对象的(如磁盘)高速缓存(Cache),实现了虚拟存储器写时拷贝(Copy onWrite)技术,引入了lazy evaluation技术.定义了虚拟存储器和硬件存储管理机制的接口(Pmap),实现了与机器无关的虚拟存储系统. 虚拟存储器写时拷贝算法是微内核虚拟存储管理系统的核心算法.它的弓f入使得虚拟存储器管理的效率大大提高了一步.但是,它的实现依赖于硬件存储管理机制的页面保护机制,对于一个具有写时拷贝共享属性的存储区,其页面保护被设置成写保护.多个用户可以共享的方式对它进行读 *** 作,但是,当用户试图对这块区域进行写 *** 作时,将产生写保护故障,页面故障管理程序将为用户进程复制物理页面.从而达到写时拷贝的目的. 在I386体系结构下,只有用户态页面允许写保护,在其他机器状态下,硬件存取机制将绕过页面保护机翩,直接对页面进行写 *** 作.在这种状态下,写时拷贝算法将失效.而在微内核体系结构中,可能有各种状态下的服务器,如在内核态下运行的服务器.为了解决这个问题。我们引入了写时拷贝和访问时拷贝(Copy oil Reference)相结合的算法. 即在用户态上使用写时拷贝算法,在其他状态下使用访问时拷贝算法来替换写时拷贝算法,以解决写时拷周算法失效的问题.访问时拷贝算法的实现依赖于页面保护机制的映页机制.这样,在其他状态下,在设置页面保护时将写保护改成映页即可.新的方法在效率上比写时拷贝算法低,但是比完全拷贝的方法高出许多,特别是与lazy evaluation技术相配合时 效率会更高.由于微内核提供的写时拷贝算法是对用户透明的,即对于用户编写的任何状态下的服务器都将使用写时拷贝算法.因此,在I386体系结构下,在非用户态上运行的用户服务器有可能出错,新的算法解决了这个问题. 3 微内核计时模型 在传统 *** 作系统中,为统计出每个进程的处理机时间使用量的单元.系统计时一般是放在处理机时钟中断服务程序中.系统 IF (当前盎程处于用户态) 增加当前进程的用户奋处理机时间使用量 在每个进程结构中都没有统计进程使用处理机时间 般采用如下代码段来进行用户进程的时间统计. ELSE 增加当前进程的系统态处理机时闻使用量 由于在传统的 *** 作系统中, *** 作系统提供的服务完全由 *** 作系统内核来完成。用户通过系统调用进入内核来取得服务.因此,采用上述方法能比较准确地统计出用户所用的处理机时间.但是,这种计时方法是一种比较粗糙的计时方法.每次时钟中断时,它就将一个固定的时间片(时钟中断周期)加入披中断的进程中,而不管该进程是否完全使用了这些处理机对向.由于这种方法实现起来非常简单,系统开销很小,几乎所有的 *** 作系绕都采用了这种方法.在新的 *** 作系统中引入了细粒度的并行执行部件—— 线程。对于线程的计时也采用了和进程相同的方法.为了取得精确的处理机时同统计精度.一些新型 *** 作系统弓『入了新的计时机制.如MACH 3.0中引^了基于时间戳的精确计时机制.在微内核体系结构下.传统的 *** 作系统功能是通过服务器的方式来实现的.服务器和用户任务一样,也作为一个进程运行.当用户进程调用 *** 作系统服务时,微内核通过消息将系统服务的参数传递给 *** 作系统服务器,由 *** 作系统服务器来完成用户请求,并将结果通过消息传递给用户进程.这样,如果采用传统的方法来进行进程的处理机时问统十。就会将 *** 作系统为用户提供服务所用的处理机时间记入服务器中.而不是用户进程中. 为了解决这个问题,我们引^了委托线程的概念,建立了新的用户进程计时模型.在客户/服务器模型中,用户通过消息请求服务器的服务,服务器接收用户的消息完成用户的请求,再通过消息将结果传给用户.在这种体系结构下,可看成用户将自己的一部分工作委托给服务器完成,服务器是在为委托线程服务.当用户线程向服务器发出请求时,将用户线程标识传递给服务器,当服务器中的某个线程处理这个请求时,将用户线程标识记^服务器线程结构中的委托线程域中.在系统时钟中断服务程序中增加为委托线程计时的代码。就可将 *** 作系统服务器为用户进程限务的时同计算到用户进程中. IF(当前线程结构中有委托线程) IF(当前线程赴于用户态) 增加委托线程的用户态赴理机时间使用量 ELSE 增加委托线程的系统态处理机时间使用量 在多服务器体系结构下,一个用户请求往往需要多个服务器的协同服务,如一个文件读 *** 作,需要文件服务器的服务,如果文件服务器发现数据存放在磁盘中,它就需要请求设备服务器的眼务,设备服务器实际上是在为用户线程服务.因此,在多服务器情况下,当一个服务器向另一个服务器发出请求时,必须将自己的委托线程标识号传递给目标服务器.这样, *** 作系统为一个线程提供所有服务所使用的处理机时间都将计算到用户线程中击.为了完成以上功能,必须对微内核的消息传递机制进行扩充,使用户在请求服务时能将线程的标识传递给服务器,服务器在接收消息时能接收到委托线程标识.所有这些 *** 作必须对用户透明.微内核的消息传递机制由消息发送和消息接收两部分组成.通过在这两个原语中加入以下逻辑来实现委托线程标识的发送和接收. SEND : IF(当前线程结构中有委托线程标识) 将委托线程标识传递出去 ELSE 将当前线程的标识传递出击 RECEIVE: IF(当前线程是服务器) 将委托线程号放凡服务器线程结构 在发送原语中,可将委托线程标识从一个服务器传递到另一个服务器.在接收逻辑中,通过增加服务器标识的判断可以避免非服务器线程之间的偶发通讯而导致的用户线程的计时错误. 4 结论 微内核技术是当今 *** 作系统发展的最新成果.在体系结构方面,它采用了面向对象技术来描述 *** 作系统内核对象,提出并实现了基于客户服务器体系结构的 *** 作系统.在算法方面,提出了许多高教新颖的算法,如线程及处理机调度算法、写时拷贝算法、与硬件无关的存储管理算法以及精确计时算法等等.在国产微内核 *** 作系统COSIX2.0的研制过程中,通过对国外微内核技术的消化和研究,提出并实现了一些新的算法和模型,改进了系统的性能,提高了系统的可靠性,做到了有所继承,有所刨新目前,我们正在进行基于微内核的JAVA虚拟机,支持服务质量(Quality of Services)的调度系统微内核热重启(Hot Restart)技术的研究.以上内容是我们一部分研究工作的总结

嗯,我猜你问的是PC的,不是单片机
一、汇编语言的中断分以下几种:
1BIOS中断,这是固化到BIOS程序中的,每次开机BIOS会自动加载到指定内存
2186下的DOS中断,在DOS系统被加载后,系统会延用BIOS的中断向量,并向里面添加一些新的向量,这些功能便是DOS系统自带的中断服务程序
3286及以上的系统中断,PC会进入保护模式,在OS被加载后,中断由IDT控制,这一机制类似于中断向量表,只不过中断向量换成了选择子。这样的中断机制对不同型号的CPU有略微的差别,这里不细说了,我自己也没全弄明白。
二、中断实现的方式(8086下的普通中断)
听说过“优先级编码器”没?——如果同时有两个信号被接收,会指定某一个信号的优先级高,先执行它。中断就是类似的处理方法。
当CPU获取到某一高 *** 作优先级的信号时(比如时钟,每固定时间就会触发一次;比如键盘响应,用户希望通过Ctrl+C来退出任何正在执行的DOS程序),CPU会将当前正在执行的程序挂起来,转而去处理该信号(类似于Call,但略有不同,你看的书应该会讲到)。
处理中断时,系统会将其解释为一个标号,比如int 9h、int 21h等等。这个标号是一个序号,在内存某处存放着连续的一个表格,这个标号便是表格中的“行号”,只不过,每一行是两列,包括了该中断的处理程序的段基址和偏移量。中断向量表是从0000:0000开始的,每4字节为一个表项。中断标号x4就是对应的中断向量表项所存的地址,高地址是基地址,低地址是偏移。
这么说不知道你懂不懂。。。
反正总结一下你的问题吧,中断服务程序是加载到内存中的,它在加载前可能是存在BIOS芯片上,也可能是存在硬盘里的;中断向量表里只能写上中断处理程序的入口地址,要知道每个表项只有4字节;具体的中断服务程序,我不信你学汇编的书上不讲,我大概讲一下:CPU的INTR引脚获得了中断信号,得到了标号,比方说是5号,中断向量表项为0000:000A,读取这个内存,得到中断程序入口地址比方说是AAAA:BBBB,那么它会将当前的CS/IP、Flags寄存器入栈,然后转到AAAA:BBBB处去执行一直到iret指令返回原任务(或许该中断结束了这个任务,就不会返回了)。
至于保护模式的中断,相信你暂时还没遇到。到后面还有 *** 控8259A芯片来实现高级中断的,这个就不是一般需要学的了。

Windows与Internet时间无法同步,一般可能是以下两种状况:
1、在获取最近一次同步状态时出错,Rpc服务器不可用;这一般是因为禁用或关闭了WindowsTime服务,将此服务启动即可。
2、Windows在与timewindowscom进行同步时出错。 这种情况稍微复杂些,此状况的解决办法有:
A、有可能是时钟服务器故障或忙,可以多试几次或换其他时钟服务器;
B、有可能是安装并开启了第三方网络防火墙,比如天网、金山网镖,同步时可以暂时关闭或退出防火墙软件,WindowsXP中内置的Internet连接防火墙除外。
C、如果以上两种方法无效,请将“自动与Internet时间服务器同步(S)”钩上,点击应用,然后再点“立即更新(U)”;如果原来是选中“自动与internet时间服务器同步”请先去掉勾选,再钩上确定退出,然后再进去更新。
此外,Windows XP系统自带的两个网上校时服务器很不好用,如果还是经常出现连接超时,可以给WindowsXP添加更多的校时服务器,方法如下:
开始菜单---运行---输入Regedit:
打开注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers 在打开的注册表窗口右边点击鼠标右键----“新建(N)"----“字符串值”,将该“字符串值”名字命名为数字,然后将该键值的数据改为校时服务器的网址即可,将“默认”的数值改为你想要的校时服务器的名称就是默认的校时服务器。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13453102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-09
下一篇 2023-08-09

发表评论

登录后才能评论

评论列表(0条)

保存