4.1-进程概念

基本概念

程序运行在并发环境中的问题

  • 运行过程不确定
  • 结果不可再现(程序运行被干扰)
  • 解决方案:对运行进程加相互制约

新的概念:进程

  • 描述和管理程序的“运行过程”--进程

进程定义

  • 进程是程序在某个数据集合上的一次运动活动
  • 数据集合:软/硬件环境,多个进程共存/共享的环境

进程的特征

  • 动态性
    • 进程是程序的一次执行过程,动态产生/消亡
  • 并发性
    • 进程同其他进程一起向前推进
  • 异步性
    • 进程按各自速度向前推进
  • 独立性
    • 进程是系统分配资源和调度CPU的单位

进程与程序的区别

动态与静态

  • 进程是动态的:程序的一次执行过程
  • 程序是静态的:一组指令的有序集合

暂存与长存

  • 进程是暂存的:在内存驻留
  • 程序是长存的:在介质上长期保存(硬盘)

程序和进程的对应

  • 一个程序可能有多个进程

进程的类型

按使用资源的权限

  • 系统进程:指系统内核相关的进程
  • 用户进程:运行于用户态的进程

按对CPU的依赖性

  • 偏CPU进程:计算型进程(计算密集型)
  • 偏I/O进程:侧重于I/O的进程(IO密集型)

进程状态

运行状态

  • 进程已经占有CPU,在CPU上运行

就绪状态

  • 具备运行条件但无CPU可用,暂时不能运行

阻塞状态

  • 因为等待某种服务完成或信号不能运行的状态
  • eg:系统调用,I/O操作,合作进程信号...

进程状态切换

Linux进程的状态

可运行态

  • 就绪:TASK_RUNNING
    • 在就绪队列中等待调度
  • 运行:正在运行

阻塞(等待)态

  • 迁都阻塞:TASK_INTERRUPTIBLE(可中断)
    • 能被其他进程信号或时钟唤醒
  • 深度阻塞:TASK_UNINTERRUPTIBLE(不可中断)
    • 不能被其他进程通过信号和时钟唤醒

僵死态:TASK_ZOMBIE

  • 进程终止执行,释放大部分资源

挂起态:TASK_STOPPED

  • 进程被挂起

linux-进程状态切换

进程控制块

进程控制块(Process Control Block,PCB)

  • 描述进程状态、资源、和与相关进程关系的数据结构。
  • PCB是进程的标志
  • 创建进程时创建PCB;进程撤销时PCB同时撤销。

进程 = 程序 + PCB

  • 程序(代码,数据)
  • 进程(代码,数据,PCB)
    • eg:
    • 进程1:(代码,数据,PCB1)
    • 进程2:(代码,数据,PCB2)
    • 进程3:(代码,数据,PCB3)

PCB中的基本成员

  • name(ID):进程名称(标识符)
  • status:状态
  • next:指向下一个PCB的指针
  • start_addr:程序地址
  • priority:优先级
  • cpu_status:现场保留区(堆栈)
  • comm_info:进程通信
  • process_family:家族
  • own_resource:资源

Linux的进程控制块PCB:tack_struct

  • 进程状态
  • 调度信息
  • 标识符
  • 内部进程通信信息
  • 链接信息
  • 时间和计时器
  • 文件系统
  • 虚拟内存信息
  • 处理器信息

Linux进程的标识

  • PID
  • PPID:父进程ID
  • PGID:进程组ID

Linux进程的用户标识

  • UID:用户ID
  • GID:用户组ID

进程的上下文

  • Context,进程运行环境,CPU环境

进程切换过程

  • 换入进程的上下文进入CPU(从栈上来,出栈)
  • 换出进程的上下文离开CPU(到栈上去,入栈)
posted @ 2020-03-21 16:25  Quaint  阅读(190)  评论(0编辑  收藏  举报
……