操作系统概念 进程

一、进程的定义

1. 程序和进程


在这里插入图片描述


  • 程序是一个被动的实体,例如一个包含存储在磁盘上的指令列表的文件(通常称为可执行文件)。
  • 当一个可执行文件被加载到内存中时,一个程序将成为一个进程
  • 进程是一个活动的实体,由一个程序计数器指定下一条指令来执行一组相关的资源。

2. PROGRAM COUNTER

在这里插入图片描述

  • 程序计数器(PC) 是一个CPU中的寄存器,里面存放下一条要执行指令的内存地址
  • 通常,CPU在取完一条指令之后会将PC寄存器的值加“1”,以计算下条要执行指令的地址

3. PROCESS IN MEMORY

进程在内存中的状态
在这里插入图片描述


注解:
1)text 代码段:我们编写的程序经过编译生成对应的指令,进程内存布局中的 text 段,就是用来存放这些计算机指令的。CPU 不断地从 text 段取走指令,进程就不断地往下执行。
2)data 段:这部分主要存放全局变量和静态变量数据。因为全局变量和静态变量数据的生命周期是伴随着进程开始和结束的,所以 data 段专门用来存放整个进程执行期间都需要保存的数据。
3) stack 段:栈空间,属于进程内存布局的一部分,用于存放局部变量、函数返回地址。
4) heap 段:堆空间,属于进程内存布局的一部分,堆用于程序运行时的动态内存分配,如 malloc 动态申请内存。
5)stack 栈空间在高地址,heap 堆空间在低地址。stack 栈空间的增长方向从高地址往低地址, heap 堆空间的增长方向从低地址往高地址。



二、 一个运行中的进程内存空间

在这里插入图片描述


  1. 首先,我们的程序经过编译得到一系列的二进制计算机指令,这些指令都放在 text 段

在这里插入图片描述


  1. 程序开始执行

a) main函数中调用了 g函数g函数中调用了 f函数

b) 当进行子程序切换(即函数调用)的时候,需要记录函数的返回地址。比如,main函数中调用了 g函数,当 g函数执行结束,下一条指令应该对应的是 main函数中调用 g函数位置的下一处return 0; 。因此,当发生子程序的调用时,我们应该把子程序调用的下一处地址保存到栈空间,以便从栈空间中取出下一条指令的地址。

c) 在整个程序的执行过程中,出现了全局变量和静态局部变量,因此将其保存到 data 段。同时还出现了 malloc 进行动态内存分配,heap 段也使用到了。

在这里插入图片描述


  1. 最后函数全部运行结束并返回,data/heap/stack 空间都释放

在这里插入图片描述


  1. 进程的定义

在这里插入图片描述


三、 并发的进程

1. 并发的概念

Concurrency:the fact of two or more events or circumstances happening or existing at the same time.

并发可以解释为:在同一时间段“发生”或者“存在”。

并行可以理解为:“running at the same time.”。即:在同一时间“运行”。


2. 并发进程共享CPU

在这里插入图片描述


四、进程的状态

1. 进程状态(PROCESS STATE)

在这里插入图片描述


2. 进程何时离开CPU

在这里插入图片描述


3. 进程状态的转换

在这里插入图片描述


在这里插入图片描述

注:源自B站up主:Y4NGY

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值