要了解进程,我们首先要先了解两大知识点:
1.冯诺依曼体系结构(从硬件的角度来谈)
2.操作系统(从软件的角度来谈)
一.冯诺依曼体系结构
1.冯诺依曼体系结构的说明
2.冯诺依曼体系结构的价值
要了解冯诺依曼体系结构的价值,首先我们要先明确两点:
1.冯诺依曼之前的计算机的局限
可是在基于冯诺依曼体系结构设计的计算机出现之前
计算机有两大不足之处:
1.效率低
2.贵
为什么会这样呢?
这是从网上找的一张计算机的存储金字塔
它详细的说明了一个道理:
当时的计算机只有CPU和输入设备,输出设备
而且大家可能都听说过木桶原理
2.为什么在计算机体系结构当中要存在内存?
因此内存的引入使得我们的计算机的整体效率还不错,而且还比较便宜,这也就利于计算机的传播
使用计算机的人越来越多,因此才出现了互联网
至此,我们就将理解进程前冯诺依曼体系结构相关的前置知识介绍完毕
下面我们来谈一下第二个前置知识:操作系统
二.操作系统
1.什么是操作系统
这里的驱动程序是指:
操作系统可以通过调用对应底层硬件对应的驱动程序的接口来实现对底层硬件的访问与控制
因此把操作系统可以通过驱动程序来保证对硬件管理的高效性和成功率
2.操作系统如何进行管理
至此,我们就了解了操作系统是如何进行软硬件资源管理的了
那么接下来的问题是:
操作系统跟用户之间是什么关系呢?
下面我们就说明操作系统跟用户之间的关系:
3.为什么要有操作系统
4.系统调用接口和用户操作接口
至此,大家对于这张图片的理解就会更加深刻了
我们将理解进程前操作系统相关的前置知识介绍完毕了
下面我们正式进入进程的学习当中
三.进程理解
1.进程的概念
我们大家应该都知道我们windows系统当中的任务管理器
程序被加载到内存变成进程的时候,操作系统会给每一个进程分配一个用来存放该进程的结构体对象的数据,方便操作系统对进程进行管理!
下面这个就是描述进程信息的结构体
至此操作系统成功将进程的属性用PCB对象描述好了,
因此操作系统对于进程的管理就变成了对PCB对象的管理
因此:
进程=内核数据结构(不仅仅是PCB对象)+可执行程序
因此,所有对进程的控制和操作都只和进程的PCB对象有关,和进程的可执行程序无关
只要你愿意,你可以把PCB对象放入任何数据结构中进行管理!
2.task_struct结构体独特的链接方式
请注意:
一个task_struct可以被连入多种数据结构中!!!
这一点很重要,因为我们以后还要介绍运行队列,
这就是在不改变task_struct已经形成的链表结构的同时
还可以将其放入队列当中的原因
3.task_struct内容分类(粗略的谈一下)
那么task_struct里面都是什么呢?
我们先来粗略的谈一下
关于这里的这个pc指针或者eip寄存器
我们介绍一下它的作用
这些内容我们以后会详细介绍的
你说了这么多,总得让我们见一见进程吧
下面我们先来看一下进程基础的相关操作
四.进程基础的相关操作
1.查看进程
先生成一个process可执行程序
ps ajx | head -1 && ps -ajx | grep 可执行程序名字 • 1
在这里我们先执行了一个可执行程序:process
然后查看这个进程
ps ajx | head -1 && ps -ajx | grep 可执行程序名字 | grep -v grep
2.杀死进程
刚才我们说了ctrl+c退出一个进程
有些时候ctrl+c并不可行(下面我们就会见到这种情况的)
此时就需要我们去使用
kill -9 进程的PID
来杀死指定的进程