进程线程复习

一、进程简介

1、进程的构成

程序 数据 pcb

2、进程的状态

5状态:新建,就绪,执行,阻塞,终止在这里插入图片描述交换技术:将内存中暂时不用的进程数据或程序交换到外存,腾出空间交换进需执行的进程数据或程序交换进内存(换进程:挂起状态),什么情况会挂起

os释放空间
周期性执行工具软件(守护进程)
用户请求
时钟中断
父进程请求挂起子进程

7状态:新建 就绪 就绪/挂起 执行 阻塞 阻塞/挂起 终止在这里插入图片描述就绪/挂起:进程在外存,调入内存可执行
阻塞/挂起:进程在外存,等待事件

3、进程的创建

  1. 分配唯一标识符,主检查表增加表项
  2. 为进程分配空间:地址空间,栈,pcb,若有共享空间创建连接
  3. pcb初始化:进程标识,处理机状态,进程状态
  4. 建立连接:放入相应队列

4、进程的调度算法

  • FCFS(先来先服务)
  • 时间片轮转
  • 短进程优先
  • 剩余最短时间优先
  • 响应比优先

R=(W+S)/S
W:等待时间,S:执行时间
长进程等得越久,W越大,响应比就会变高,不至于长时间饥饿
短进程,S小

  • 优先级(静态 动态)
  • 多级反馈调度

多级就绪队列,来的放入第一级尾部,队列内FCFS,
第一个队列进程时间片用完没执行完放入第二个队列
第二个队列执行时间为第一个两倍
以此类推,第i个队列的优先级较上一级低,执行时间长,放的长进程(相对)

5、进程的切换

  • 什么时候切换

时钟中断
I/O中断
存储访问失效(虚拟内存)
陷阱
管理程序调用

  • 切换过程

1、保存线程(更新pcb)
2、把进程放入到相应队列,例如:阻塞
3、从就绪队列选其他进程执行
4、选中的进程pcb更新
5、内存管理的数据结构修改(你要占哪些空间,还需要什么空间)
6、恢复被选中进程的执行线程

6、进程间通信

  1. 管道
  2. FIFO
  3. 信号
  4. 信号量
  5. 消息队列
  6. 共享内存
  7. 文件
  8. socket

7、进程终止

  • 什么时候终止

正常运行完
超时终止
内存严重不足
越界访问
使用未允许的数据
除以0
超时等待时间发生
i/o错误,如找不到文件而非要读

  • 做什么

根据进程id找到pcb,读取进程状态
若为执行,终止其执行,调度新进程
如果有子孙进程也终止
将资源归还给父进程或者系统
将被终止的进程移除队列,等待其他进程来收集信息

二、线程

1、简介

1、共享进程地址空间,内存
2、tcb
3、创建终止切换花销更少
4、linux本质是单进程多线程(宣称多进程多线程),实质是多任务,task_struct标识

进程创建的时候内部clone()->do_fork()函数复制主进程的地址空间,内存,所以耗时高,最后复制出来mm_struct(虚拟内存结构体),fs,files,sighand等等
线程创建的时候也是内部clone函数,最后会生成指针指向主线程的mm_struct,fs,files,sighand等等
由此形成了我们经常讨论的进程与线程的差异,本质上就在clone时参数的差异,实质还是一个task

2、同步

信号量
临界区
互斥量
事件

3、通信

锁机制 互斥锁 读写锁 条件变量
信号量机制
信号机制
全局变量

三、进程与线程的区别

进程是资源分配的最小单位,线程是cpu调度的最小单位

  1. 数据共享、同步
    多进程数据共享复杂,需用ipc,数据是分开的同步简单,
    多线程因为共享进程数据,共享简单,但也因此原因导致同步复杂
    各占优势
  2. 内存 cpu
    多进程占用内存多,切换复杂,cpu利用率低
    多线程占用内存少,切换简单,速度很快
    线程优
  3. 创建销毁切换
    多进程创建销毁切换复杂,速度慢
    多线程创建销毁切换简单,速度很快
    线程优
  4. 编程调试
    多进程简单
    多线程复杂
    进程优
  5. 可靠性
    进程互不影响,但是一个线程挂掉会导致进程挂掉
    进程优
  6. 分布式
    多进程适应于多核,多机分布式,如果一台机器不够,扩展到多台比较简单
    多线程适应于多核分布式
    进程优

四、多进程多线程应用场景

  1. 需要频繁创建销毁的优先使用线程
    最常见的应用就是web服务器,来一个连接创建一个线程,断了就销毁,要是用进程,创建和销毁的代价是很难承受的。
  2. 需要大量计算优先使用线程
    所谓大量计算,当然就是要耗费很多cpu,频繁切换,线程最合适。
    常见的有图像处理,算法处理等。
  3. 强相关的用线程,弱相关的用进程
    例如:消息收发,消息处理弱相关可以用进程,消息处理中有消息解码和业余处理这种强相关的用线程较好
  4. 可能要扩展到多机分布用进程,多核用线程
    一般采用多进程加多线程结合使用

五、操作系统控制结构

  • 内存表

内存分配情况
外存分配情况(进程跟外存交互的)
访问共享内存去的属性(rwx)
管理虚拟存储需要的信息

  • I/O设备管理表

设备是可用的还是已分配的
I/O状态
I/0传输的在主存中的源和目的地址

  • 文件表

哪些文件
外存的位置
当前状态
文件管理系统统一管理

  • 进程表
  1. 进程的位置
  2. 管理进程的属性

进程id
进程状态
内存中的位置

  1. 程序

本地,全局的变量,常量,堆栈

  • pcb
    在这里插入图片描述
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值