基于Linux与操作系统的进程概论

基于冯诺依曼体系的理解

冯诺依曼体系用用一句理解就是外设的、不急需的信息用硬盘存储,快的、急需的信息用内存存储,CPU处理

硬盘 内存 与进程

存储在硬盘的文件(程序)被加载到内存,并且操作系统为其创建一个PCB结构体就说明一个进程诞生了

操作系统对进程的描述

描述进程的结构体(PCB)

  • 进程编号(标识符)
    • pid
  • 进程的状态
    • 任务状态
      • 运行状态
        处于运行队列的进程 R状态

      • 阻塞状态
        因缺少软硬件资源而进入相应资源的等待队列 S状态
        D状态: 属于阻塞状态,为深度睡眠状态,为高IO时进程的状态,处于D状态的进程无法被操作系统关闭。当操作系统出现D状态时,其已经接近满资源占用
        T状态:属于阻塞状态,等待某些特殊信号或被用户直接暂停。处于T状态的进程完全停止
        相关命令 kill -19 PID stop该进程 kill -18 PID continue该进程

      • 挂起状态
        因内存资源不足,将阻塞状态的进程的代码和数据重新放入硬盘,仅在等待队列中保存PCB

      • 僵尸状态与死亡状态
        进程结束即为死亡状态 X状态,而进入死亡状态之前进程会先进入僵尸状态
        僵尸状态 Z状态 操作系统需要维持该即将死亡进程的信息直至父进程回收其信息

        孤儿进程

        如果父进程先退出,其子进程的父进程变成操作系统,该子进程成为孤儿进程

    • 退出码
    • 退出信号
  • 优先级
    • 相对于其他进程的优先级
  • 程序计数器
    • 程序中即将被执行的下一条指令的地址
  • 上下文信息
    • 进程执行时处理器中寄存器的信息
  • struct PCB* next
    • 指向下一个PCB结构体

code&&data

PCB需与code&&data共同描述一个完整的进程,缺一不可

查看进程属性

  • ls /proc
    该目录下记录了所以的进程属性,信息来源于内存。每个子目录名都是其进程的PID
  • ps ajx
  • getpid()
    • 头文件
      #include<sys/types.h>
      #include<unistd.h>
    • 作用
      返回调用该函数的PID
  • getppid()
    • 头文件
      #include<sys/types.h>
      #include<unistd.h>
    • 作用
      返回调用该函数的父进程的PID(PPID)
  • 查看优先级信息
    ps -al 主要看PRI 与 NI
    PRI --优先级 priority
    NI --优先级修正数据 nice值 调整范围[-20,19] 每次调整都是以80为基础与上次优先值无关

管理进程

  • kill -9 PID //9是信号
  • 通过系统调用fork创建进程
    • 头文件
      #include<unistd.h>
    • 返回值 pid_t
      子进程返回0,父进程返回创建的子进程的PID
    • 作用
      创建一个新的进程,父子进程公用一个代码块,数据块可能会被操作系统拷贝(写时拷贝)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值