进程那些事儿

目录

一、操作系统

二、进程

1、进程的理解

 2、进程的管理

2.1、PCB的属性

3、进程的调度过程

3.1、进程的状态

3.2、进程的优先级

3.3、进程的上下文

3.4、进程的记账信息

4、进程的虚拟地址空间


一、操作系统

       操作系统说白了就是一种搞管理的软件,所谓的管理,就是“描述+组织”它对硬件设备和软件资源进行管理,而进程就是属于一种软件资源。

二、进程

1、进程的理解

       进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程,也可以把进程理解成一个“正在进行”的程序,(如图:QQ音乐,QQ); 同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。要想让进程跑起来。就得给进程分配一定的系统硬件资源:CPU、内存、磁盘、网络。

 2、进程的管理

       前边说管理=描述+组织。这里的描述就是PCB,也是进程控制块,这相当于一个类,也相当于一个C语言的结构体,一个结构体对象就对应一个进程。进程使用一定的数据结构来组织,一种常见的做法就是使用双向链表。

查看进程列表,本质上就是遍历操作系统内核中的这个链表,并显示其中的属性;

创建一个进程,本质上就是创建一个PCB对象,加入到内核的链表中;

销毁一个进程,本质上就是把这个PCB对象从内核链表中删除。

2.1、PCB的属性

pid:一个进程的身份标识,一个机器同一时刻不可能有两个进程的pid相同;

内存指针:描述了这个进程使用的内存空间是哪个范围;

文件描述符表:描述了这个进程都打开了哪些文件。系统中打开一个文件,其实就得到了一个“文件描述符”,这个文件描述符(整数)就像一个“遥控器一样”,文件数据是在磁盘上,代码中操作磁盘数据不像操作内存数据那么方便,所以往往是借助这种“遥控器”的方式来操作。

并发式执行:1个CPU运行多个进程,宏观上是同时执行,微观上是顺序执行

并行式执行:多个CPU运行多个进程(CPU1运行进程1,CPU2运行进程2),进程1 和进程2在宏观上、微观上都是同时执行

3、进程的调度过程

3.1、进程的状态(R、S、X)

3.2、进程的优先级

3.3、进程的上下文

       需要记住上次运行到哪个指令了,方便下次调度的时候能够继续从这个位置来运行,也就是通常说的存档和读档。进程的上下文主要是存储调度出CPU之前寄存器中的信息,把寄存器中的信息保存到内存中,等到这个进程下次恢复到CPU上执行的时候,就把内存保存好的数据恢复到寄存器中。操作系统何时进行进程调度(把进程放到CPU,把进行切换出CPU),这个对于进程本身是感知不到的

3.4、进程的记账信息

        记录这个信息在CPU执行了多久,用来辅助决定这个进程是继续在CPU上执行,还是说要调度出去。

4、进程的虚拟地址空间

        一个进程要想运行,就需要给他分配一些系统资源,内存就是一个核心的资源。为了一定程度的减少内存访问越界带来的后果,我们引进了虚拟地址空间

       如果进程1的内存范围是01x100 - 0x800,如果我们的代码尝试修改0x801的地址的数据,这个操作就是越界访问。如果这是一个真实的物理地址(真实的内存地址),这就会把0x801修改成功,如果这个0x801是进程2要使用的内存,此时进程2可能就出现bug,如果进程访问的是虚拟地址,也尝试修改0x801,此时系统会针对0x801来查询页表,找到对应的物理地址,由于0x801是非法地址,在页表中查询不到,系统就会明白这是在越界访问,于是让这个进程出现崩溃,防止影响其他进程。这样做就让进程与进程之间相互影响可能性变小了,隔离性增加了,进程也就更稳定了。不过当两个进程需要相互交流沟通时,就很困难了。

页表:一种数据结构,相当于hash,实现虚拟地址和物理地址进行一种映射关系。好比对每个班级学生进行编号,编号这就是虚拟地址,教务系统就是页表,学号就是物理地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值