CPU是如何在WINDOWS下处理多任务的
中央处理器(CentralProcessingUnit)的缩写,即CPU,CPU是电脑中的核心配件,只有火柴盒那么大,几十张纸那么厚,但它却是一台计算机的运算核心和控制核心。下面是学习啦小编带来的关于CPU是如何在WINDOWS下处理多任务的的内容,欢迎阅读!
CPU是如何在WINDOWS下处理多任务?
windows任务处理可分为两类:协同式多任务和抢先式多任务处理模式。
1)使用协同式多任务处理模式,CPU的分配直接由应用程序决定,所以系统性能好坏取决于应用程序设计好坏。而运行抢先式多任务处理模式,各进程占用CPU的时间由系统调度程序决定,当调度程序检测出有比当前任务优先级更高的程序事件后,暂停当前任务并将CPU时间分配给优先级更高的进程。所有的Win16应用程序都在同一台虚拟机上运行,各程序之间采用的是协同式多任务处理。每个Win32应用程序和MS-DOS应用程序都具有自己专用的虚拟机,其进程按抢先式多任务处理方式运行。
2)Windows中的多任务调度策略
Windows中调度的任务有两种状态:运行状态和等待状态。正在运行的任务处于运行状 态,当该任务把CPU控制权交给其他任务后,就被置为等待状态。为了便于任务调度和保存每个任务运行的参数,Windows在装载应用程序时,由LoadModule()函数创建一任务数据库(简称TDB),该任务数据库在内存中是以链表的形式存在,TDB链表中的结点记下了每个任务切换时的堆栈指针、中断处理程序地址及此任务对应的模块句柄和实例句柄等
Windows就是根据TDB链表中存放的各个任务的数据信息来完成任务调度的。 对Windows而言,CPU属于临界资源,在某一时刻只有一个任务独占CPU。为了合理分配CPU,提高系统的性能,Windows根据任务是否存在等待事件来进行任务调度。如果当前任务没有事件可供处理,那么就应该把控制权交给其他具有等待事件的任务。为了记录每个任务的等待事件个数,在TDB链表中,为每个任务建立一个事件计数器(TDB偏移6处的值),系统调度程序就是根据该计数器来进行任务调度。我们可以通过Windows中未公开的核心函数PostEvent()把指定任务的事件计数器值增1,人为地伪造一个事件,引起相应的任务被唤醒。 当有多个任务都具有等待事件时,Windows采用的最高优先级(HPF)算法进行调度。为此Windows定义了任务的优先权值:范围从-32到+15,任务的优先权值越小,它的优先级就越高,其任务结点在TDB链表中的位置也越靠前。而在实际应用中,绝大多数Windows应用程序的优先值都是0,若优先权值相同,则按先来先服务的原则进行。任务的优先权值只对具有等待事件的任务生效,如果一个任务没有等待事件,即使优先权再高,也不会被调度。 若当前任务所分配的时间片用完或当前任务再无等待事件,任务调度程序就要释放当前任务的控制权,把控制权交给已选中的可调度任务。但在WindowsAPI中并没直接公开这样一个函数,许多具有释放控制权功能的函数都被隐藏在GetMessage()或PeekMessage()这样的消息函数中,当应用程序在消息环中没有消息可供接收时,它就会把控制权交给别的任务,以防止当前任务进入死循环。当前任务释放控制权以后,如果没一个任务被调度程序选中,调度程序就会使Windows进入系统空闲状态,相应的电源管理软件就会使整个系统处于低能耗的睡眠状态,直至有任务被唤醒而重新开始正常运转
3)多任务处理
多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务.Linux、windows就是支持多任务的操作系统,比起单任务系统它的功能增强了许多。当多任务操作系统使用某种任务调度策略允许两个或更多进程并发共享一个处理器时,事实上处理器在某一时刻只会给一件任务提供服务。因为任务调度机制保证不同任务之间的切换速度十分迅速,因此给人多个任务同时运行的错觉。多任务系统中有3个功能单位:任务、进程和线程。
相关阅读推荐:
1982年,Intel推出80286芯片,它比8086和8088都有了飞跃的发展,虽然它仍旧是16位结构,但在CPU的内部集成了13.4万个晶体管,时钟频率由最初的6MHz逐步提高到20MHz。其内部和外部数据总线皆为16位,地址总线24位,可寻址16MB内存。80286也是应用比较广泛的一块CPU。IBM 则采用80286 推出了AT 机并在当时引起了轰动,进而使得以后的 PC 机不得不一直兼容于PC XT/AT。
1985年Intel推出了80386芯片,它X86系列中的第一种32位微处理器,而且制造工艺也有了很大的进步。80386内部内含27.5万个晶体管,时钟频率从12.5MHz发展到33MHz。80386的内部和外部数据总线都是32位,地址总线也是32位,可寻址高达4GB内存,可以使用Windows操作系统了。但80386芯片并没有引起IBM 的足够重视,反而是 Compaq 率先采用了它。可以说,这是 P C 厂商正式走“兼容”道路的开始,也是AMD 等 CPU 生产厂家走“兼容”道路的开始和 32 位 CPU的开始,直到今天的 P4 和 K7 依然是 32 位的 CPU(局部64位)
1989年,Intel推出80486芯片,它的特殊意义在于这块芯片首次突破了100万个晶体管的界限,集成了120万个晶体管。80486是将80386和数学协处理器80387以及一个8KB的高速缓存集成在一个芯片内,并且在80X86系列中首次采用了RISC(精简指令集)技术,可以在一个时钟周期内执行一条指令。它还采用了突发总线(Burst)方式,大大提高了与内存的数据交换速度。
1989 年,80486 横空出世,它第一次使晶体管集成数达到了 120 万个,并且在一个时钟周期内能执行 2 条指令。
看了CPU是如何在WINDOWS下处理多任务的文章内容的人还看:
7.千元级处理器推荐