在windows系统里面,到底什么是多任务,和多进程,多线程有什么区别?
现代操作系统是多任务分时操作系统!
windows当然是典型的多任务分时操作系统。
当然了,一个庞大的操作系统是非常复杂的,也无法用区区几百字来描述它。那么,就认识它的主要原理与实现就好了,关于内部的代码与详细的实现过程这里我就不深入写明了,不伤害无辜的脑细胞了。
回到本问题的核心内容:
多任务
进程
线程
【多任务概念】
我们所说的多任务,只是我们看起来的多任务。你也许会体验到,我可以在QQ上视频聊天,同时又在 Pps 那里看视频,还在刷微博,还挂着一个什么《QQ三国》之类的网游。这就是多任务。
从宏观上来看,这些程序都在同一时间执行。
从微观上来看,这些程序不是在同一个时间上执行。
上面两句话是什么意思呢?
(本文中 ,Cpu 均指单核单线程 处理器)
Cpu 它一个周期(CPI)只能执行一条指令,它无法同时执行所有程序的指令。那怎么办?搞计算机的工程师就想了一个办法,让不同程序的指令轮流执行。
A程序中的指令被Cpu执行了,就到 B程序中的指令被执行 ……………………
【进程】
我们可以理解一个进程就是一个程序,进程与应用程序的不同之处在于,进程它工作在后台,应用程序工作在前台,应用程序是能够与用户进行人机交互的。
应用程序由进程组成。
【线程】
一个应用程序由进程组成,那么,进程由什么组成?就是线程。
真正在执行各种计算机操作的东西就是线程,比如:读取文件、访问内存等任何操作计算机硬件的动作,都是由线程来完成的。(线程有两种:内核线程、用户线程)
线程是由各种指令组成的
==============================================
一些情况:
有时候,你打开一个程序,稍等一会,这个程序运行了,但是,它的主界面窗口变灰了,标题栏上写了“失去响应”这样的字样。
这个时候,这个程序到底发生了什么呢?
这个程序由很多线程组成,负责后台处理数据的线程在不停的使用操作系统分配给这个应用程序的处理器时间,而负责 GUI 的线程得不到处理器时间,从而导致窗口变灰”失去响应“。稍等一会后,这个程序的窗口又恢复了,”失去响应”字样消失了,我又能正常操作这个应用程序了。这个时候,因为负责 GUI 的线程得到了处理器时间,它才能够响应用户对它的操作。
线程的切换,叫做线程调度。
前面我说了,线程有两种 “内核线程“、”用户线程”,线程也是有权限等级的,它们是有执行优先权(处理器执行时间)。操作系统会告诉Cpu,什么时候就要产生一个中断,然后执行下一个线程。(中断,我们就简单理解成暂停好了)
===================
若后面的知友发现勘误,敬请指出!
本人谦虚学习!