操作系统--进程

操作系统–进程和线程

进程定义

  • 进程 = 程序段+数据段+PCB
  • PCB进程存在的唯一标志

进程的特征

  • 动态性:进程是程序的一次执行过程,是动态地产生,变化和消亡的
  • 并发性:内存中有多个进程实体,可以并执行
  • 独立性:进程是独立运行的,独立获得资源,独立接受调度的基本单位
  • 异步性:各进程按各独立的,不可预测的速度推进
  • 结构性:每个进程都有PCB,进程 = 程序段+数据段+PCB

PCB

  • 进程描述信息:进程标识符PID,用户标识符UID
  • 进程控制和管理信息:进程当前状态,进程优先级
  • 资源分配清单:程序段指针,数据段指针,键盘等
  • 处理机相关信息:各种寄存器值

进程组织方式

  • 链接方式:按照进程状态将PCB分为多个队列,操作系统持有指向各个队列的指针
  • 索引方式:根据进程状态,建立几张索引表,操作系统持有指向各个索引表的指针

进程状态

五态模型

  • 就绪态,运行态,阻塞态,创建态,结束态

七态模型

  • 就绪态,运行态,阻塞态,创建态,结束态,阻塞挂起,就绪挂起

注:线程有五态模型,但是没有七态,因为进程才是资源调度的基本单位,而线程是处理机执行的基本单位,所以不存在资源的挂起。

进程控制

进程控制就是要实现进程状态的切换

进程控制用原语实现

相关原语:

  • 进程的创建
  • 进程的终止
  • 进程的阻塞(和唤醒成对出现)
  • 进程的唤醒(和阻塞成对出现)
  • 进程的切换

注:进程的阻塞和唤醒必须成对出现,也就是说,有进程的阻塞就必须有进程唤醒的相关原语。

进程通信

进程通信主要分三种:

  • 共享存储
  • 管道通信
  • 消息传递

共享存储: 设置共享空间,并互斥访问共享空间,有两种实现方式,一种是基于数据结构,一种是基于存储区的共享

管道通信: 设置共享管道(缓冲区),一个管道只能实现半双工通信(就是单向的),并互斥访问管道,写满才能读,读空才能写,并且管道满了不能再写,读空了不能再读。

消息传递: 传递结构化消息,系统提供“发送/接收原语”来实现,,两种方式,一种是直接通信,一种是间接通信(信箱方式,就是有中间商)


多线程模型

线程的目的

引入线程是为了提高并发读,减少并发带来的开销。

线程的属性

  • 线程是处理机调度的单位,而进程是资源分配的单位
  • 同一进程的各线程共享进程拥有的资源
  • 同一进程内的线程切换不会导致进程切换
  • 每个线程都有一个线程ID,线程控制块(TCB)
  • 线程不拥有系统资源
  • 线程切换,系统开销小,比切换进程要小得多

线程的实现

用户级线程:用户视角的线程

内核级线程:操作系统能看到的线程

组合方式:两者结合

注:内核级线程才是处理机分配的单位,用户级线程和内核级线程存在映射关系。

多线程模型

  • 多对一:多个用户线程对内核级线程,线程管理交给应用程序
  • 一对一:一个用户线程对多个内核级线程,线程管理交给操作系统
  • 多对多:多个用户对多个内核级线程,部分线程管理交给操作系统

注:内核级线程才是处理机分配的单元

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值