当前位置: 首页 > wzjs >正文

网站建设重庆黄岛区建设局网站

网站建设重庆,黄岛区建设局网站,贵州网站设计公司,服务器网站扩容 一年1G价格目录 1. 进程的概念 2.进程是如何被调度的 2.1描述 2.2 组织 2.3 PCB中描述的进程特征 2.4 进程调度的相关属性(接2.3) 3. 内存管理 1. 进程的概念 一个跑起来的程序就称之为进程(没跑起来就不是进程) 进程是操作系统分配资源的基本单位。 2.进程…

 

目录

 

1. 进程的概念

2.进程是如何被调度的

2.1描述

2.2 组织

 2.3 PCB中描述的进程特征

2.4 进程调度的相关属性(接2.3)

3. 内存管理


1. 进程的概念

一个跑起来的程序就称之为进程(没跑起来就不是进程)

 进程是操作系统分配资源的基本单位。

2.进程是如何被调度的

进程是一个重要的软件资源

它是由操作系统内核进行管理的

而管理主要分为两个步骤:描述和组织

2.1描述

使用一个结构体来描述进程属性,这个结构体有一个特殊的名字,叫做PCB(进程控制块)

2.2 组织

组织本质上是用一个数据结构将多个PCB给连接起来

在操作系统中是通过双向链表来对进程进行连接的

创建一个进程,本质上就是在双向链表中插入一个PCB节点;

销毁一个进程,本质上就是在双向链表中删除一个PCB节点。

我们在任务管理器中看到的进程,本质上就是遍历一次双向链表

 2.3 PCB中描述的进程特征

(1)pid

pid就是进程的ID,相当于进程的身份标识符。

(2)内存指针

内存指针指向的是系统划分给自己的内存空间。

(3)文件描述符表

文件描述符表,描述了进程占有的硬盘上的文件等资源。

内存指针和文件描述符表本质上就是描述了进程持有了哪些硬件资源。

PCB除了上面三条之外,还描述了进程描述的相关属性--2.4。(下面会说)

上面描述了PCB的其中3个属性,其中有描述了进程持有的资源,资源是由操作系统来进行分配的。

其中,硬件资源、内存、网卡这类的资源相对好分配,难分配的是CPU资源

通常情况下,进程的数量时要远远大于CPU的数量的,比如我的电脑里面的CPU是12核的

而进程却有上百个,这些进程我们希望是要同时进行,那么CPU上是如何分配的呢?

是用分时复用的方法进行分配的。

其主要分为并行和并发。

并行:微观上,同一时刻,两个核心上的进程是同时进行的

并发:微观上,同一时刻,一个核心上只能运行一个进程,但是他能对进程进行快速的切换。

比如:在CPU这个核心上,先运行一个浏览器,在运行一下QQ,再运行一下画图板...... 只要切换的速度足够快(我的电脑是3.3GHz,没秒运行33亿条指令),宏观上,人是感知不到的。

小知识:程序的并行还是并发是内核进行处理的,人们感知不到,因此往往将并行和并发统称为并发。(显示声明除外)

那么CPU是如何去进行这样的操作呢?

操作系统里面有一个重要的模块调度器,就负责让有限的CPU来调度执行这么多的进程

2.4 进程调度的相关属性(接2.3)

(1) 进程的状态

下面描述一些主要的状态:

就绪状态: 随叫随到,进程随时可以在CPU上运行。

运行状态:正在运行的进程(程序),和就绪状态相似。

堵塞状态:当前这个进程短时间内无法在CPU上运行。比如:进程在进行密集的I/O操作。

对于就绪状态和运行状态,很多操作系统并不会去明确区分。

(2)优先级

进程也是有优先级的,操作系统在进行调度的时候并不是一碗水端平

(3)上下文

操作系统在进行进程间的来回切换时,需要把进程执行的“中间状态”记录好,下次这个进程到CPU上运行的时候,可以恢复到上次的状态,方便继续执行。

上面的这段操作就类似于游戏中的“存档”、“读档”

而上下文的本质就是你“存档”的内容

进程的上下文是CPU中各个寄存器的值。

寄存器:CPU内置的存储数据的模块,保存的是程序运行过程中的中间结果。

保存上下文,就是把这些CPU寄存器的值,记录保存到内存中;

恢复上下文,就是把内存中的这些寄存器的值恢复回去。

(4)记账信息

操作系统,统计每个进程在CPU上占用的时间和执行的指令数目,根据这个来决定下一阶段如何调度。

3. 内存管理

在现在的操作系统中,进程中分配的内存都是虚拟的内存

为什么要使用虚拟内存空间呢?

因为在进程中,是可能出现bug的,而这些bug可能会导致,当前这个进程访问到另一个进程的内存空间中去,此时的影响就会很严重。

如下:

如果进程1 出现了bug,将指针指向了0x7000,

那可能会由于进程1的bug吧进程2给搞毁了,为了避免这种情况的发生,针对进程所使用的的内存空间,进行“隔离”,也就是虚拟内存空间。

代码里面使用的地址,不再是真实的物理地址,而是虚拟地址,再由操作系统和专门的硬件设备去进行虚拟地址到真实地址的转换,如果出现访问越界的情况,就会及时停止进程。

如下:

 当进程1 去访问0x3000的时候,MMU就会直接想进程反馈一个错误(让进程崩溃)。

这样一来进程出现了bug也不会去影响其他进程的运行。

虽然进程之间隔离了,但是有的时候还需要进程之间的相互配合。也就是进程间通信。

它的核心思路就是,开辟一块“公共空间”,让进程都可以去访问,然后在基于这块空间上去进行交互数据即可。

http://www.dtcms.com/wzjs/800101.html

相关文章:

  • 电子商务网站规划设计包括哪些方面百度推广客户端怎样注册
  • 中山建设网站官网wordpress密文
  • 海口手机端建站模板做网站需要服务器和什么软件
  • 凡科网怎么做网站wordpress数据库thinkphp
  • 卢松松网站的百度广告怎么做的云软件网站建设
  • 昆明网站建设推广公司哪家好外贸网站建站要多少钱
  • 谷歌 网站开发深圳创业补贴政策2021申请流程
  • 广州网站开发费用农业推广学
  • 建设商城类网站多少钱周口seo
  • 外贸网站推广计划wordpress 中文图片
  • 农资网站建设北京电商购物网站开发
  • 南昌网站搭建制作公司中国建设银行官网首页登录
  • 做ptt网站推广引流的10个渠道
  • 济南网站的优化国家企业信用信息公示系统登录
  • 企业网站建设栏目结构图网站是怎么做排名的
  • 怎么优化网站源码关键词积分支付 WordPress
  • 网站推广的方法枫子上海企业名录大全官网
  • 深圳做棋牌网站建设哪家好帮人代做静态网站多少钱
  • 怎么给网站 做排名海淀区seo搜索引擎优化企业
  • 网站制作蒙特工商局网站做年报
  • 万网网站价格外贸推广平台怎么做
  • 崇礼网站建设wordpress 查询参数
  • 学校网站建设状况网站怎么做链接
  • 广州建设教育网站佛山市建设工程交易中心
  • 网站开发的基础做淘宝客网站能赚到钱吗
  • 网站建设指标外贸建站系统源码
  • 珠海外贸网站建设企查猫
  • 校园旅游网站建设方案策划书网络推广加盟项目
  • 优化外包顾问百度快照优化推广
  • 阳江网站设计广州网站设计建设公司