计算机是怎么工作的5

本文解释了Linux系统中进程控制块PCB的结构和作用,如何使用链表组织进程,以及内存管理、PID、文件描述符表的重要性。着重讨论了单核CPU下的多任务处理(并发)和多核CPU带来的并行执行概念,展示了现代计算机执行过程中的并发与并行特性。
摘要由CSDN通过智能技术生成

在Linux上,PCB是一个叫做 struct  task_struct{.....}这样的结构体

                   使用链表这样的数据结构来把若干个task_struct给串起来

当我们看到任务管理器中的这些进程的时候,意味着系统内部就在遍历链表,并且打印每个节点的相关信息;

如果运行一个新的程序,于是系统中就会多一个进程,多的这个进程就需要构造除一个新的PCB 

并且添加到链表上

如果某个运行中的程序,退出了,就需要把对应进程的PCB从链表中删除掉,并且销毁对应的PCB资源

此处的表述是一个简化版本,事实上组织更加复杂

(例如:一个优秀的音乐家,听到一首歌,就能把对应的谱子,给写出来)

一个优秀的程序员,看到一个程序的效果,也能大概知道对应的代码是咋搞的

PCB中的一些核心属性,

PCB这个结构体,是一个非常庞大的结构体  (上百个属性)

比如有些程序,是带有驱动的,驱动,是在系统内核中执行的,这里出现的问题是可能会导致系统卡死或蓝屏的

pid   进程的身份标识  

        此处通过一个简单的不重复的整数来进行区分的

系统会保证,同一个机器上,统一时刻,每个进程pid都是唯一的

后续针对某个进程进行操作,就可以拿着pid来进行区分了

比如,选中某个进程,并且点击结束任务,此时,就是任务管理器获取到你选中的进程的pid 

一个系统api,把pid  作为参数穿进去,从而完成这里的杀死进程的操作

内存指针(一组)

进程运行过程中,需要消耗一些系统资源的,其中内存就是一种重要的资源

整个系统,内存这么多(16G),这16G都可以随意使用嘛???

当然不是,先从系统这里申请,系统分给你一块,你才能使用

(把内存想象成小旅馆,有很多房间,所谓的申请内存,就是跟小旅馆老板说开个房间,申请到了才可以使用,如果房子你没申请,你也进不去,就算你强行破门而入,产生的后果也不可预期)

 每个进程,都必须使用自己申请到的内存

内存指针,

就是用来描述说你这个进程,都能使用哪些内存

一个进程跑起来的时候,需要有“指令”也需要有数据(指令和数据,都是要加载到内存中的)

进程也需要知道,哪里是存的指令,哪里是存的数据

当你双击一个exe的时候,就会"运行进程“

这个过程中,就是系统先把exe这个文件里的内容(包含了指令和数据,先加载到内存中)然后再创建进程,让进程开始执行
指令一般不会很大,数据有可能很大的,程序加载的慢,加载的数据比较多可能性是很大的

文件描述符表

描述了这个进程,所设计的硬盘相关的资源

我们的进程经常要访问硬盘

操作系统,对于硬盘这样的硬盘设备进行了封装=》文件

存储器=内存+外存       外存(包括不限于,硬盘,软盘,光盘,U盘)

操作系统,不管你是哪种盘,都是统一进行的抽象,都是按照”文件“的方式来操作的

U盘:flash卡     光盘:VCD  

一个进程要想操作文件,需要先打开文件 ,就是让你的进程在文件描述表中分配一个表项(

(构造一个结构体)表示这个文件的相关信息

fopen是c语言的标准库函数

操作系统提供的api(Linux),就叫做open

Java标准库封装的api  本质上都是调用系统api

进程,是系统分配资源的基本单位(内存,硬盘=>就会在PCB中有所体现)

内存硬盘,网卡等资源,在pcb中都好体现

cpu这块是最复杂的

一个进程,消耗cpu资源,是啥意思??

CPU是一个舞台,要执行的指令,就是演员    进程要执行指令

一个cpu可能有一个核心,也可能有多个核心

每个核心都是一个舞台    演员需要登上舞台,才能进行表演

同一时刻,一个舞台上,只能有一个演员

 我这个电脑上的cpu,有16个逻辑核心,我系统上的进程,远远不止16个

舞台不够用,咋办??

所以,这就涉及到一个非常关键的概念,分时复用(并发)

关键要点,让多个演员,轮流登台

考虑一个简单的场景:现在咱们的电脑上只有一个核心---2007年前的cpu基本都是单核的

Q:单个核心的cpu,能否支持一个“多任务操作系统”运行呢??
那个年代,像windows xp,windows  2000,windows  98甚至更早之前,早都有多任务操作系统了

分时复用

cpu核心只有一个,先执行进程1的代码(进程1 登台演出)执行一会后,让进程1 下来,进程2上,以此类推

只要切换速度足够快,人是感知不到这个切换的过程的。在人眼看起来,多个任务/进程,就是“同时执行”的

cpu频率,都是多少多少GHz,一秒钟执行几十亿条指令

意味着,短时间内,cou就可以进行很多次的任务切换,只要足够快,人就感知不到

(当然也有极端情况,比如,系统进程太多了,负担太重,就会出现卡顿,鼠标出现转圈这种情况,卡住了,这个进程捞不着去cpu上执行了)

后来,随着多核cpu诞生,同时执行进程,变得更复杂了

同时就可以有四个不同的进程,在各自的舞台上进行执行,此时此刻,微观上,这几个进程也是同时执行的,而不是靠快速切换模拟的“同时执行”

称为“并行执行”

与之对应的,前面的并发执行,仍然存在

每个核心仍然要分时复用,仍然要快速切换

当前现代的计算机执行过程,往往是并行+并发同时存在的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值