【JavaEE】———进程、进程的数据结构、进程的调度
【摘要】 阿华代码,不是逆风,就是我疯,你们的点赞收藏是我前进最大的动力!!希望本文内容能帮到你!目录一:操作系统二:进程、任务三:进程的调度引入:软件工程的本质,针对“复杂程度”的管理,管理的本质就是“抽象和封装”一:操作系统1:操作系统的定位和功能2:多任务操作系统3:单任务操作系统二:进程、任务1:进程概念正在运行的程序就叫做进程或者任务2:进程是“系统分配资源”的基本单位每个任务在执行的过程...
阿华代码,不是逆风,就是我疯,你们的点赞收藏是我前进最大的动力!!希望本文内容能帮到你!
目录
一:操作系统
二:进程、任务
三:进程的调度
引入:软件工程的本质,针对“复杂程度”的管理,管理的本质就是“抽象和封装”
一:操作系统
1:操作系统的定位和功能
2:多任务操作系统
3:单任务操作系统
二:进程、任务
1:进程概念
正在运行的程序就叫做进程或者任务
2:进程是“系统分配资源”的基本单位
每个任务在执行的过程的当中,都需要消耗一定的硬件资源。换而言之(等价说法),进程在运行过程中,都需要给进程分配系统资源。
3:操作系统的进程管理
简述(具体过程比下文更加复杂):
(0)PCB
(1)描述PCB
(2)组织PCB
(3)实例
在我们打开任务管理器的时候会显示很多进程,其实就是系统在遍历链表后,打印链表上节点的信息。
如果运行一个新的程序,系统就会多一个进程,就需要构造一个新的PCB,并把这个PCB加入到链表的节点中去
如果退出一个进程,就把对应的PCB在链表上删除,并且回收掉相关的PCB的资源
(4)PID
PID是PCB的核心属性之一
PID是进程的身份标识,具体表现形式为,一个整数,同一台机器,同一时刻,每一个进程都有一个不同的整数数字标号,后续如果要对进程进行一些操作,我们就可以根据这个数字来区分进程
比如:当我们要结束一个进程的时候,选中进程,点击结束任务,任务管理器获取到这个进程的PID,然后调用一个系统API,把这个pid作为参数传入,最后完成杀死进程的一个操作
(5)内存指针
内存指针就是描述进程使用内存资源的详细情况。
打个比方:进程现在要去住旅馆,像旅馆馆主申请房间,馆主同意后分配给你一个房间,你就只能在这个房间中活动,
(6)文件描述符表
文件描述符表是用来描述进程所涉及到的硬盘资源
存储器=内存+外存,外存包括但不限于(硬盘,光碟,u盘,软盘等),因为现在硬盘居多,所以我们说的外存默认都指硬盘。
进程想要修改文件,那么就得先“打开文件”——:在文件描述符表上分配一个表项,构造一个结构体,来描述这个文件的实体信息
三:进程的调度
背景描述:进程在运行的时候需要消耗占用一定的CPU资源,而在同一台机器同一时刻有5个进程需要“同时”运行,那cpu是如何处理的呢?
1:分时复用,并发执行
打个比方——只有一个单核CPU(一个舞台),现在需要5个进程同时运行(上舞台表演),(同一时刻,同意舞台只能有一个进程)怎么办,那就只能压缩每个进程表演的时间,(进程ABCDE超速轮回切换上台),人是感知不到这个切换的过程的(因为cpu的频率足够高),这样肉眼就会误以为是五个进程在“同时运行”。
当然也有极端情况,进程数量太多了,cpu处理不过来,表现出来就是系统卡顿,鼠标转圈。
2:并行执行
同样打比方——现在我们有一个四核cpu,8个进程,同样要让这些进程满足同一时刻,同一舞台,只能有一个进程表演,要达到肉眼难以区分的切换速度,这个过程就要复杂许多了
但是这里任然满足“分时复用,并发执行”这一概念,在此基础上多了一条“并行执行”(因为舞台数多了嘛)
3:并发编程
我们现在计算机的执行过程是 “并发执行”+“并行执行”同时存在的,所以我们就把这两者结合统一叫成“并发编程”
但是两个进程如何运行需要看系统如何调度,这里涉及到系统调度器模块的实现(略)
4:状态
状态是描述进程是否能被cpu调用执行
(1):就绪状态
进程此时空闲,整装待发,操作系统知乎一声,进程直接就上cpu那开始干活了
(2):阻塞状态
也可以理解成进程正在等待,比如用户调用Scanner,进程需要等待用户输入东西,在这个过程中,进程是不方便被操作系统调用去干别的事的,这就是阻塞状态。
5:优先级
我们在前面说了,舞台只有4个,但是我有很多个进程,那么谁先上呢?这里就涉及到一个优先级的问题了,看那个进程比较重要,由操作系统来进行统一调配。
比如:我在打王者农药,同时又挂着微信,此时有人给我发消息,系统肯定是先紧着农药,消息晚点收也无所谓~~~~这就是优先级
6:记账信息
这个概念也很好理解,,这个红字中怎么判断,哪个进程重要呢?这就涉及到了记账信息。
我们还是用进程舞台演出的例子哈,在一个轮次中,每个进程表演的时间不同(即进程在CPU中占用的时间比例不同),我们统计这一轮中进程的时间占比,作为记账信息,在下一轮中操作系统根据这个信息来对新一轮的进程进行优先级安排。
7:上下文
也是pcb(进程控制模块)中的一种数据结构,支撑进程调度的重要属性之一,相当于单机游戏中的存档和读档。
1:存档
在进程被cpu调度之前,把普通寄存器当中的信息,单独保存到一个地方(一般是内存的关键寄存器中),不要让这些信息被覆盖或者消失。
2:读档:
在下一次进程被cpu调度之前,把关键寄存器当中的信息给恢复加载到普通寄存器当中
注:无论存档还是读档都是在cpu调度进程之前
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)