操作系统——进程笔记

进程

进程的概念

进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

源分配调度的一个独立单位。

当进程被创建时(如打开应用),操作系统会为该进程创建一个唯一的,不重复的“身份证号”——PID(Process ID,进程ID)

操作系统要记录PID、进程所属用户ID(UID:基本的进程描述信息,可以让操作系统区分各个进程)

进程的组成
  • PCB
  • 程序段
  • 数据段
进程的特征
  • 动态性
  • 并发性
  • 独立性
  • 异步性
    各自独立,以不可预知的速度前进。
  • 结构性
    每个进程都会有程序段,数据段,PCB。

进程的状态与转换

进程的状态:

  • 创建态
    在此阶段操作系统会为进程分配资源、初始PCB

  • 就绪态
    进程已经就绪,只是没有空闲CPU,就暂时不运行。
    系统中可能会有很多个进程处于就绪态

  • 运行态
    一个进程在CPU上运行

  • 阻塞态
    主动请求,等待某个事件发生,事件发生前,进程无法继续往下执行。

  • 终止态
    一个进程可以执行exit系统吊桶,请求操作系统终止该进程。操作系统会让该进程下CPU并回收资源。

有些地方可能考察进程七状态模型

进程的组织
  • 链式方式

  • 索引方式

进程控制

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。

如何实现进程控制?

答:用“原语”实现,原语的执行具有“原子性”,一气呵成。

如何实现原语的“原子性”

原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断。

可以用“关中断指令”和“开中断指令”这两个特权指令实现原子性。

进程控制相关的原语

进程控制总结

进程间通信

进程间通信是指两个进程之间产生数据交互。

共享存储

进程不能直接读其他进程的地址空间

eg. 要不然垃圾软件可以直接读私人信息

共享存储有两种方式:

  • 基于数据结构的共享
    可以理解为一个大家都可以读的全局变量
  • 给予存储区的共享
    操作系统在内存中画出共享存储区,数据的形式、存放位置等都不做控制。
    这种共享方式速度很快,是一种高级通信方式。
消息传递

进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。包括消息头和消息体。

两种方式:

  • 直接通信方式
  • 间接通信方式
管道通信

管道通信是一个循环队列,先进先出。

线程

每个进程可以有多个线程。

可以把线程理解为“轻量级进程”
线程是一个基本的CPU执行单元,也是程序执行流的最小到单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度。

引入线程后,进程只作为除CPU之外的系统资源的分配单元。

线程的实现方式

  • 用户级线程
    早期操作系统。使用线程库实现并发运行。
    一个线程被阻塞,整个进程都会被阻塞。
  • 内核级线程
    操作系统支持的线程。
    管理成本更高,开销更大
  • 组合方式
多线程模型
  • 一对一模型

  • 多对一线程模型

  • 多对多模型

线程的状态与转换

线程状态通常只关心最主要的三个状态,即:

  • 就绪态
  • 运行态
  • 阻塞态
组织
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值