Linux进程

Linux进程(上)

一、概述

1.为什么引入进程?

由于程序在并发执行(间断性、失去封闭性、不可再现行)时,可能会造成执行结果的不可再现,所以 用“程序”这个概念已无法描述程序的并发执行,所以必须引入新的概念—进程来描述程序的并发执行,并要对进程进行必要的管理,以保证进程在并发执行时结果可再现。
**2.概念:**担当分配系统资源(CPU时间,内存)的实体。

二、进程的描述

1.Linux操作系统下的PCB是: task_struct,是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。

2.进程的三个基本状态:
在这里插入图片描述

  • 运行态/执行态(Running):当一个进程在处理机上运行时,则称该进程处于运行 状态。
  • 就绪态(Ready):一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。
  • 阻塞态(Blocked):(又称挂起状态、等待状态):一个进程正在等待某一事件发 生(例如请求I/O而等待I/O完成等)而暂时仃止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。
    3.task_ struct内容分类
  • 标示符: 描述本进程的唯一标示符,用来区别其他进程。
  • 状态: 任务状态,退出代码,退出信号等。
  • 优先级: 相对于其他进程的优先级。
  • 程序计数器: 程序中即将被执行的下一条指令的地址。
  • 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
  • 上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
  • I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
  • 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
    其他信息

三、进程操作

1.查看进程信息
可以通过/proc系统文件查看

  • 在这里插入图片描述
    通过系统调用获取进程标识符
  • 在这里插入图片描述

2.细分进程状态

  • R运行状态:处于R状态的进程,有可能在执行代码,有可能在运行队列(就绪队列)
  • S可中断睡眠状态:进程正在睡眠(被阻塞),等待资源到来是唤醒,也可以通过其们进程信号或时钟中断唤醒,进入运行队列
  • D不可中断睡眠状态:不可中断睡眠状态:通常等待一个10结束(也就是输入输出结束)
  • T暂停状态:结论:在linux下不要使用ctrl+z结束进程,不是结束,而是暂停
  • t跟踪状态:调试程序的时候可以看到
  • X死亡状态:这个状态是用户看不到的,在PCB被内核释放的时候,进程会被置为X,紧接着进程就退出了
  • Z僵尸状态:这个状态是用户看不到的,在PCB被内核释放的时候,进程会被置为X,紧接着进程就退出了

3.程序计数器与上下文信息

  • 程序计数器:保存程序下一条执行的指令
  • 上下文信息:保存寄存器当中的内容

4.内存指针

在这里插入图片描述

四、创建子进程

1.fork()与fork()的返回值
运行man fork认识fork(有两个返回值),父子进程代码共享(父子进程拥有的代码一样):

  • 在这里插入图片描述

2.针对fork的返回值,让子进程执行不一样的代码块
在这里插入图片描述

在这里插入图片描述

  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值