目录
一、进程(Process)的概念
进程(process)也称为任务(task),是操作系统对一个正在运行的程序的一种抽象,可以把进程看作程序的一次运行过程。同时,在操作系统内部,每个进程在执行过程中,都需要消耗一定的软件和硬件资源,因此进程又是操作系统进行资源分配的基本单位。
二、进程管理
描述进程:
进程使用进程控制块(PCB)进行描述,计算机内部要管理任何现实事物,都需要将其抽象成一组有关联的、互为一体的数据。
在不同语言中,可以使用类或结构体的方式来描述事物的特征。
每一个进程控制块(PCB)对象,就代表一个运行着的程序,即进程。
阅读指针 -> 《什么是进程控制块(PCB Process Control Block)?》
组织进程:
操作系统通过线性表、搜索树等数据结构将进程控制块(PCB)进行组织,方便管理时进行增删改查操作。
三、进程调度
进程调度(Process Scheduling),是对CPU资源进行分配。
同一时刻,一个CPU核心上,只能有一个进程在运行。但CPU核心少,进程往往非常多,CPU资源不够分配。此时就需要进行进程调度,分时复用,并发执行。
操作系统对CPU资源的分配,采用的时时间模式,即不同的进程在不同的时间段使用CPU资源。
四、内存管理
内存管理(Memory Manage)也称为内存分配。每个进程的内存是彼此独立,互不干扰的,这也体现了进程的“独立性”。
进程运行过程中被切换出CPU,此时其消耗的内存空间将暂时存放至硬盘的特定区域(swap空间),直到进程真正执行,
操作系统对内存资源的分配,采用的是空间模式,即不同进程使用内存中的不同区域,互相之间不会干扰。
五、进程间通信
进程是操作系统进行资源分配的最小单位,而且进程间具有“独立性”,但有时也需要多个进程之间配合完成某些任务,这就需要系统提供一些公共空间,让多个进程都能访问,进程之间借助公共空间进行数据交互,这就被称为进程间通信(Inter Process Communication)。
主流操作系统提供的进程通信机制包括:管道、共享内存、文件、网络、信号量、信号等。
六、多进程编程
简述并发的概念:
并发(Concurrency)是一种在同一时间执行多个任务的技术。在计算机领域中,并发通常通过多线程或多进程来实现。多线程可以让程序同时执行多个任务,而多进程则可以让程序同时执行多个独立的程序。
多个进程在同一个CPU中依次切换执行,当切换速度足够快时,在人的感知中,这些进程就是同时在执行的,这就被称为“并行”。
当多个进程在多个CPU中依次切换执行时,从微观上看来,这些进程就不再是“依次执行”,而是“同时执行”,这就被称为“并发”。
在多核CPU中,并行和并发是同时出现的,因此,往往也将并行和并发统称为并发,与之对应的编程方式就称为并发编程。
多进程编程的缺点:
进程通常可以很好的解决“并发编程”的问题,但在需要频繁创建和销毁进程得情况下,进程表现得不尽如人意。此时使用的多进程编程,会使得系统开销过大。
系统开销过大的原因在于,进程是操作系统进行资源分配的基本单位,每次创建或销毁进程都需要申请或释放系统资源。
总结,进程过于“笨重”,在频繁进行创建和销毁时,需要不断地向系统申请和释放资源,开销较大。
阅读指针 -> 《什么是线程(Thread)?进程和线程有什么区别?》