目录
1.冯·诺伊曼计算机体系
在了解Linux系统编程中重要板块进程概念之前,我们需要先了解什么叫做冯·诺伊曼计算机体系。
冯·诺伊曼计算机体系是现代计算机的硬件体系结构的典范,其中分为五大硬件体系结构:
- 输入设备:键盘(典型的输入设备)……
- 输出设备:显示器(典型的输出设备)……
- 存储器:内存(数据吞吐量大,但是易失,即断电数据丢失)硬盘;
- 运算器+5. 控制器:CPU(中央处理器);
如此的计算机硬件结构基础之上,CPU想要对数据进行处理,需要从内存中取出数据进行处理。
即:CPU想要执行一个程序,首先需要将程序从硬盘加载到内存之中。
2.操作系统
仅是硬件系统对于一个计算机而言不完整的,一个完整的计算机还应存在使其能够完好发挥其硬软件功能的操作系统。
操作系统的本质便是:一个软件程序。
操作系统所要完成的功能也是创造它的目的:对计算机上的软硬件进行管理。
一个完整的操作系统需要具备:内核+外部应用。
在了解完操作系统的大致内容和功能之后,我们需要明白我们对于操作系统学习的重点,其重点在于:操作系统如何对计算机软硬件管理。(重点在于管理!)
对于管理,我们需要了解:管理体系。
3.管理体系
首先对于一个管理体系而言,其中用户分类为两类用户:管理者+被管理者;(在Linux中便为管理员用户(root用户)+其他普通用户);
毋庸置疑是,管理员用户会对其他普通用户进行管理,那么这部分的管理是如何实现的?
操作系统的回答便是:先对每个硬件进行描述,然后通过双向链表组织进行管理,如此便建立了管理员和普通用户的联系;
再而管理员并不会直接对被管理者进行操作,是通过硬件驱动来完成的,这便是管理方式。
对于具体的管理方式而言,操作系统向上层提供具体用于访问内核的接口,即系统调用接口;为保证具体操作过程的安全性,这些的系统调用接口的功能是单一的。
也正是由于系统调用接口的单一性,我们为了实现某些功能时需要进行较为复杂的编程,这也恰恰是我们需要对编程进行深入且细致学习的原因。
4.进程概念
铺垫到这里便结束了,接下来进行本文的标题内容也是重点内容。
通俗来讲,进程就是:运行中的程序,但进程的概念不止其描述的那么简单。
对于一个程序而言,运行一个程序首先需要将其加载到内存之中;对于一个内存而言,同一时间加载到一个内存中的程序远不止一个。
同一时间会存在较多程序需要进行运行,而对于仅有一个的CPU来讲,CPU该处理哪一个程序?
多任务操作系统中的CPU分时机制应运而生,其内容是:由操作系统用进行管理,CPU可以一直进行数据处理,由操作系统控制,CPU只处理一个程序很短的一段时间(时间片),然后就切换处理下一个程序,以快速切换的方式达到了一种效果--多个程序好像在同时运行。
但是如何记录每个进程按照时间推移而进行的改变,比如说后台播放的视频,我们如何保证其随着时间进行播放的过程,不受我们切换其他程序的影响。
因此操作系统需要对程序的运行过程进行描述,比如说记录处理过程中的数据,等到下次切换回来时,将这些数据重新加载到寄存之中。
对于这些程序运行过程的描述,叫做:pcb(process control block)--进程控制块,在Linux中是一个task_struct的结构体。
操作系统调度管理程序的运行就是通过pcb来进行实现的!
存在如此的底层逻辑之后,对于操作系统而言,一个程序是否在运行便不会是查看该程序是否加载到内存之中,而是看该程序有无对应的pcb对其进行描述。
因此对于操作系统而言:进程便是pcb,它是操作系统对于程序运行过程的动态描述,操作系统通过pcb来实现对程序的调度管理。