【操作系统】[第二章][自用]

本文详细探讨了进程和线程的概念,包括它们之间的区别、并发性、系统开销、占用空间等方面。进程是资源分配的基本单位,而线程是调度的基本单位,不单独占有资源。此外,介绍了进程的组成部分、用户级线程与内核支持线程的主要区别,以及进程创建、终止、阻塞和唤醒的原语。文章还提到了进程通信、调度算法、同步与互斥机制,以及经典同步问题如生产者消费者问题。
摘要由CSDN通过智能技术生成

1 进程和线程

1.1 二者的比较

1.1.1 进程与线程的比较

(1)调度 与 拥有资源方面:

  1. 进程:拥有资源的基本单位、独立调度分配的基本单位;
  2. 线程:基本不拥有资源,独立调度分配的基本单位。(只有一些保证运行的必不可少的资源,如一个线程ID、一个程序计数器、一个寄存器组、一个堆栈)
  • 【注】:这里的 独立调度分配 指的是:
  1. 只有进程的系统中,进程是独立调度分配的基本单位;
  2. 有了线程的系统中,独立调度分配的基本单位就变成了线程。

(2)并发性方面:

  1. 进程之间可以并发;
  2. 同一进程的不同线程之间也可以并发。

(3)系统开销方面:

  1. 创建和撤销进程时,系统要为之创建和回收PCB;分配和回收资源时开销比线程大。
  2. 切换时,涉及到CPU环境的保存与恢复、存储器管理方面的操作,
  3. 线切换时,仅需保存和设置少量寄存器的内容,代价比线程切换少的多。
  • 【注】:页表是在内存之中的,如果要加快地址的转化,就要查快表(TLB),快表在Cache里面,速度比内存快的多,每一个进程都有自己的TLB,TLB上的内容都是随着进程的运行而动态更新的。如果一个进程下了处理器,此时它并不会保存TLB的内容,而是等到下次再上处理器的时候,再从头更新TLB,所以切换进程会导致快表失效。(线程共享所属进程的快表)

(4)占用空间方面:

  1. 所有线程都共享所属进程的地址空间,也共享所属进程已经打开的文件等。
  2. 每个线程有属于自己的栈空间不与其他线程共享

1.1.2 其他(程序和进程的区别)

(1)并发与共享

  1. 并发:两个或多个事件在同一时间间隔发生。
  2. 共享:也叫资源共享/资源复用,并发执行的进程or线程共同使用同一个系统资源。

(2)单道批处理系统和多道批处理系统

  1. 区别就在于内存中有几道作业。

(3)程序和进程的区别

  1. 程序静态的概念,进程动态的概念;
  2. 进程有生命周期,会进行“创建->运行->结束”的过程;
  3. 程序变成进程,首先要将程序装入内存
  4. 进程是程序的一次执行过程。

(4)就绪队列

  1. 就绪队列是指就绪进程的PCB组成的队列。
  2. 调度程序相当于批处理系统中的监督程序。(监督程序是调度作业到系统中运行;调度程序是调度程序到CPU中运行)
  3. 就绪队列与阻塞队列的区别:

1.1.3 进程的组成成分&特点:

(1)进程的组成部分:

  1. 程序段+数据段+PCB

(2)进程的特点:

1.2 用户级线程&内核支持线程

1.2.1 主要区别:

(1)主要的区别就是:

  1. 用户级线程中,线程切换不需要内核管理;
  2. 内核支持线程中,线程切换需要内核管理。
  • 【注】:所以在内核支持线程中,对于用户的线程切换而言,其模式切换的开销较大。因为线程运行是在目态,而调度和管理则是依赖内核(管态)。

(2)多线程模型角度上看:

  1. 用户级线程是多对一模型的一种:多个用户线程映射到一个内核线程上;
  2. 内核支持线程是一对一模型的一种:一个用户线程映射到一个内核线程上。

1.2.2 二者的优缺点:

(1)用户级线程的优缺点

  1. 下面缺点中第一条的解释:
  • 由于用户级线程,操作系统并不知道,所以操作系统就认为只有一个进程,所以只为该进程分配一个CPU;
  • 那么当线程A被阻塞时,OS的调度程序并不会因为用户级线程被阻塞而调度CPU,所以整个进程都会被阻塞。

(2)内核即线程的优缺点

1.3 进程切换与上下文切换

(1)进程切换,必然发生在内核态

(2)上下文切换

  1. 上下文切换的时机:
  2. 上下文切换的过程:

1.4 其他

(1)在多线程系统中

  1. 进程只作为除了CPU之外的其他系统资源的分配单位;
  2. 线程则作为处理器的分配单位;
  • 所以不同进程中的线程也可以并发执行。

(2)是否需要互斥的问题:

  1. 不同进程之间的同名变量是不一样的,不需要互斥;
  2. 同一进程里的不同线程之间的同名变量也不需要互斥(因为每个线程有自己独属的栈空间)

(3)区分进程&线程 和 父进程&子进程:

  1. 子进程和父进程  都有  各自的虚拟内存空间
  2. 而  线程 共享所属进程的地址空间

1.5 原语

1.5.1 进程 创建原语:

(1)进程 创建原语 的过程:

(2)进程创建的场合:

  1. 用户登入;
  2. 高级调度(作业调度)发生;
  3. 系统响应用户程序提出的请求;
  4. 现有进程创建新进程;

1.5.2 进程 终止原语:

(1)进程终止原语的过程:

(2)进程终止的场合:

  1. 进程运行完毕,正常退出;
  2. 进程运行过程中出现错误,例如除0异常;
  3. 进程发生了严重的错误而退出;
  4. 被其他进程杀死;
  5. 其他导致进程终止的事件:超过时限、无可用内存、访问越界、保护错误、IO失败、无效指令、数据误用等等。

1.5.3 进程 阻塞原语:

(1)进程阻塞原语的过程:

(2)进程阻塞发生的场合:

  1. 进程向系统请求临界资源失败;
  2. 进程等待某种操作的完成;
  3. 新数据尚未到达;
  4. 等待新任务到达;

1.5.4 进程 唤醒原语:

(1)进程唤醒原语的过程:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值