操作系统的cpu分时共享技术

为什么我们日常的电脑既可以看视频,又可以浏览网页,又可以微信聊天等等同时运行?为什么我们日常的计算机4c或8c的可以处理数以百计或数以千计的计算任务呢?

1什么是cpu分时共享技术

操作系统的cpu分时共享技术---如果同时有很多进程在执行,操作系统会将cpu的执行时间分成很多份,进程按照某种策略轮流在cpu上运行。现在的cpu计算能力非常强大,虽然每个进程都只被执行了一小段时间,但是在外部看来就像是所有进程同时在执行,每个进程似乎都独占一个cpu。

类似的技术在网络中也有应用--分时复用(Time Division Multiplexing,TDM),是采用同一物理连接的不同时段来传输不同的信号,能达到多路传输的目的。在网络中应用于用一条线路传输多路数据。

2进程的三种状态

多个进程在外部看来是同时运行的,实际上进程是共享cpu的,并不是一直在cpu上运行,所以在某一时刻就有进程需要等待cpu运行。所以进程主要有三种状态:运行、就绪和阻塞。

状态 描述
运行 当一个进程在cpu上运行时,则称进程出于运行状态;出于运行状态的进程数小于或等于cpu的数目
就绪 当一个进程获得了除cpu以外的一切所需资源,只要得到cpu即可运行,则称此进程为就绪状态
阻塞 也成为等待或睡眠状态,当一个进程正在等待某一事件的发生(例如等待I/O完成、等待锁)而暂时停止运行时,这时即使把cpu分给进程也无法运行,则称该进程为阻塞状态

3进程与线程

不同的进程在cpu上轮流执行,每次都要进行进程间的cpu切换,代价是非常大的。实际上每个用户的请求对应的不一定是一个进程,而是一个线程。线程可以理解为轻量级的进程,在进程内创建,拥有自己的线程栈。在cpu上进行线程的切换代价也相对更小。进程是最小的管理单元,线程是最小的调度单元。线程在运行时与进程一样,也有三种主要状态,从逻辑上看,进程的主要概念都可以套用在线程上。我们在进行服务器应用开发的时候,通常都是多线程开发。充分理解线程对软件的开发和设计非常有价值。

4程序是如何运行起来的

软件被开发出来时是文本格式的代码,这些代码通常不能直接运行,需要使用编译器编译成操作系统或者虚拟机可以运行的代码,即可执行代码,他们都被存储存储在文件系统中。不管是文本格式的代码还是可执行的代码,都被称为程序。程序是静态的,存储在磁盘里。要想让程序处理数据、完成计算任务,必须把程序从外部设备加载到内存中,并在操作系统的管理调度下交给CPU执行,运行起来才能真正发挥软件的作用。程序运行起来以后被称为进程。
进程除了包含可执行的程序代码,还包括在运行期使用的堆内存空间、栈内存空间、供操作系统管理使用的数据结构。

堆是一块无序的内存空间,任何时候进程需要申请内存,都会从堆空间中分配,分配到的内存地址则记录在栈中。
栈是一个严格的后进先出的数据结构,同样由操作系统维护,主要用来记录函数内部的局部变量、堆空间分配的内存空间地址等。

posted @ 2023-08-01 18:06  du-z  阅读(339)  评论(0编辑  收藏  举报