学科分类
目录
Linux编程

进程处理机制

虽说进程在程序执行时产生,但进程并不是程序。程序是“死”的,进程是“活”的,程序是指编译好的二进制文件,它存放在磁盘上,不占用系统资源,是具体的;而进程存在于内存中,占用系统资源,是抽象的。当一次程序执行结束之后,进程随之消失,进程所用的资源被系统回收。

对计算机用户而言,计算机似乎能够同时执行多个进程:听音乐、玩游戏、语言聊天等,都能在同一台计算机上同时进行。但实际上,一个单核的CPU,同一时刻只能处理一个进程,用户之所以认为同时会有多个进程在运行,是因为计算机系统采用了“多道程序设计”技术。

所谓多道程序设计,是指计算机允许多个相互独立的程序同时进入内存,在内核的管理控制之下,相互之间穿插运行。多道程序设计必须有硬件基础作为保障。

采用多道程序设计的系统,会将CPU的整个生命周期划分为长度相同的时间片,在每个CPU时间片内只处理一个进程,也就是说,在多个时间片上,系统会让多个进程分时使用CPU。假如现在内存中只有3个进程A、B、C,那么CPU时间片的分配情况可能如图1所示。

图1 CPU处理进程示意图

虽然每个时间片一个CPU上只能处理一个进程,但CPU划分的时间片是非常微小的,且当下CPU运行速度极快(已达到纳秒级,1秒可执行约10亿条指令),因此,在宏观上,可以认为计算机能并发执行多个程序、处理多个进程。

进程对CPU的使用权是由内核分配的,内核必须知道内存中有多少个进程,并且知道此时正在使用CPU的进程,这就要求内核必须能够区分进程,并可获取进程的相关属性。

点击此处
隐藏目录