进程与线程

一、引入进程的原因

为了使程序能并发执行,并能对并发的程序加以描述和控制(解决程序并发的不可再现性)


二、什么是进程?

  • 进程是执行中的程序
  • 进程是动态概念,有声明周期
  • 它是操作系统进行资源分配和调度的基本单位

进程分类:

  • 系统进程:执行操作系统核心代码的进程(独占资源,最高优先级运行;直接执行 I/O 操作;内核态下活动)
  • 用户进程:执行用户程序的进程(通过系统调用竞争资源;不直接执行 I/O 操作;用户态下活动)

进程组成:

  • 一段可执行的程序
  • 程序所需要的相关数据(变量,工作空间,缓冲区)
  • 进程控制块(PCB 里面有程序的一些控制信息)

进程的状态:

  • 就绪态:获得除 CPU 外的所有必要资源
  • 运行态:获得 CPU 控制权,运行
  • 阻塞态:因为等待某事件而暂停执行(如 I/O 等待)

三、进程的创建、终止与切换

进程的创建:

  1. 申请空白 PCB(进程有唯一数字标识)
  2. 为新进程分配资源(为程序、数据和用户栈分配内存)
  3. 初始化 PCB (初始化标识信息;初始化处理机状态信息;初始化处理机控制信息)
  4. 将新进程插入就绪队列

进程的终止:

  1. 根据被终止进程的标识符,从 PCB 集合中检索出该进程的 PCB,从中读出该进程状态
  2. 若被终止的进程处于执行状态,应立即终止该进程的执行。
  3. 若该进程还有子孙进程,终止其所有子孙进程
  4. 将被终止进程的所有资源归还给父进程或系统
  5. 将被终止进程的 PCB 从所在队列或链表中移出,等待其它程序来收集信息

进程切换:

这里写图片描述

何时切换进程?

中断:

  • 时钟中断:时间片轮转,运行态 -> 就绪态
  • I/O 中断:运行态 -> 阻塞态
  • 内存失效:访问缺页/段,运行态 -> 阻塞态

陷阱:

  • 致命错误:运行态 -> 终止态
  • 不致命错误:系统试图恢复和告知用户

系统调用:

  • 运行态 -> 阻塞态

线程

四、为什么引入线程?

线程:程序中单一的顺序控制流程
目的:为了提高操作系统并发度

并发与并行:

并发:当都多个线程在操作时,如果系统只有一个 CPU,则它根本不可能真正同时进行一个以上的线程,它只能把 CPU 运行时间划分为若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状态(挂起等效于不在内存中),这种方式我们称之为并发。

并行:当系统有两个或多个 CPU 时,一个 CPU 执行一个线程的同时另一个 CPU 执行另一个线程,两个线程不抢占 CPU 资源,可以同时进行,这种方式我们称之为并行。

进程并发执行的好处:资源共享;提高速度;模块化


进程:是分配资源的单位
线程:系统调度的单位

线程的优点:

  • 响应度高:增加了对用户的响应程度
  • 资源共享:线程默认共享他们所属进程的内存和资源
  • 经济:终止一个线程比终止一个进程话费时间少;同一进程内切线程切换比进程间切换时间少
  • 多处理器体系结构的利用:单线程进程只能运行在一个 CPU 上;在多个 CPU 机器上使用多线程增加了并发功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值