计算机是如何工作的(二)【浅谈进程】

前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


一、缓存的概念

上文说到:计算机的读取速度而言,在CPU中是寄存器 >> 内存 >> 硬盘
因为寄存器和内存的速度差距相差过大,因此现代的CPU又提供了缓存模块。
以我的计算机为例,CPU提供了3块缓存,其中存在着容量大小的区别。在读取数据的速度方面,也是保持着数字越小,速度越快,成本越高的模组。

那么为什么要设置缓存呢?

原因是因为在CPU中存在着需要频繁使用的数据,如果每次都从内存中读取,速度就相对较慢。于是现代CPU就决定设立缓存,依据使用频率的高低,将数据放入到L1~L3中。
在这里插入图片描述
下图为计算机中速度的梯度在这里插入图片描述

二、操作系统

操作系统可以说是一台计算机的核心之一了,我们所知道的操作系统并不算少:Windows、Linux、macOS……都属于操作系统,而系统被研发出来的主要目的,就是为了能够把计算机上的所有硬件资源和软件资源进行一定程度上的管理
操作系统与CPU、硬盘、内存等硬件不同,操作系统属于一款大型软件
在这个软件中,存入了一组指令集合,使得计算机可以按照一定的规则进行执行。

内核用户态

在操作系统中,我们甚至可以理解为计算机上所下载的其他应用程序是操作系统所配套的应用程序。
在用户使用计算机时,使用每个应用程序都有着操作系统的参与。而操作系统在其中起着调度管理的作用。
以简单的例子来说明:

public static void main(String[] args){
	System.out.println("hello world");
}

我们在IDEA中写出这几句代码简直易如反掌,运行时间甚至1s不到。但在这运行之后,计算机中进行着计算量极大的运算。
在表面(用户层面),当运行这段代码的时候,Java调用了操作系统内核提供的api,随之运行。
而在内层(内核态),内核感知到了Java应用程序调用了操作显示器、CPU中开始进行一系列复杂的指令,运行后内核将要显示的数据往显示器上显示。

进程(process)

进程的概念(百度版本):进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
以我个人的浅薄理解,进程是当应用程序被运行起来之后,在操作系统中就会出现一个相对于的进程。换句话说:进程就是一个正在运行中的应用程序。

在计算机任务管理器中就可以看到进程的信息了。在进程中的应用都是正在运行的程序。
每一个运行中的程序(进程),在运行之后都会得到系统分配的资源,包括但不限于CPU、内存……
进程也可以认为是操作系统进行资源分配的基本单位。
在进程中展示的数据有CPU、内存……各项数据都表示着这一进程在计算机中被分配到的资源。
在这里插入图片描述

如何管理进程

计算机在不使用的状态下,依然在处理着许多进程(mysql、服务、自启动应用……),因此计算机需要处理数量如此庞大的进程,显然是需要进行管理的。

在操作系统中常用PCB(process control block 进程控制块)的结构体描述进程
1.PCB结构:在PCB中需要包含进程的核心信息,在使用操作系统中,通常会类似"链表"的结构将PCB连接起来。
2.查看进程:在任务管理器中查看的进程就是在遍历这个"链表"的节点,并且获取对应的进程信息。
3.创建进程:当应用启用以后,调用操作系统内核中的API,在内核中创建了新的进程,于是产生一个新的PCB并将该PCB添加到上述链表中。
4.销毁进程:程序退出,"链表"上PCB节点删除。

进程的属性

PCB中存储着进程的关键信息标识,通过这些标识能够到内存中找到对应的数据

1.pid

进程的id/标识符:通过pid可以区分进程,是进程之间区分的标识。

2.内存指针

在进程运行过程中,需要消耗一定的硬件资源,而内存就是一个关键的资源。内存指针会告知操作系统该进程需要的指令在内存中的地址和数据。**因此,内存指针的数量并非单一,而是一组!**大致指向如图所示。
在这里插入图片描述

3.文件描述符表

一个进程在运行的时候会操作部分文件,这时候通过文件描述符表可以记录当前这个进程,记录打开了哪些文件。

4.分时复用(CPU在进程方面的合理调度方式)

在CPU中,进程数量是远远大于CPU核心数的。在单位时间内,CPU能够同时进行32个进行(以本人的电脑看,可以查看CPU的核心数)。这种情况我们称之为**“并行执行”**
但进程的数量太多,必须进行合理的分配管理。因此对进程进行适合的调度是让各个进程能够顺利运行的必要条件。
分时复用的方法将CPU在单位时间内分成多个时间分片,在各个时间分片上运行多个不同的进程。由于时间分片的时间比较短,进程切换的速度极快,人们在感受上是认为这些进程是同时执行的(本质上不是同时),因此这样的情况我们称之为"并发执行"
通过分时复用的方法,我们可以成功的运行多个任务。

并发和并行的区别

并行:在微观和宏观时间上观测,多个进程是同时执行的。
并发:在微观时间观测,进程是串行执行;在宏观时间观测,进程是并行执行的。

PCB提供给进程调度的几种属性

1.状态

在进程中,为了能够不浪费CPU的系统资源,因此需要时刻关注进程的状态。如果进程属于就绪状态,则CPU可以继续提供给该进程资源;如果进程处于阻塞状态,则CPU可以选择不分配给该进程,这样在一定程度上规避了资源浪费的状况。

2.优先级

在进程中,CPU会通过进程优先级来判断进程的重要性,最终完成资源的倾斜分配,

3.上下文

在进程执行过程中,容易产生许多"中间结果",在进程切换出CPU之前需要把各种数据保存到PCB的上下文进行存档;同理,在进程恢复执行时,进程就需要把“中间结果”进行获取恢复。上下文记录着寄存器中进程的运行状态。

4.记账信息

因为优先级的存在,也是因为进程过多的原因,在操作系统中,很有可能会有部分进程存在无法获取CPU资源分配的状况,因此操作系统会进行类似统计的行为,适当分配给这些进程资源,使得这些被“忽视”的进程权重上升。4

总结

进程在计算机中是必不可少的一部分,也是连接线程的关键一环。
如有帮助,望三连支持~~~

计算机基础知识点系列

1.计算机是如何工作的(浅谈冯诺依曼体系和指令基础执行过程)


  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值