• 恶补《操作系统》2_1——王道学习笔记


    2操作系统-进程

    2.1_1 进程的定义、组成、组织方式、特征

    组成:PCB(进程存在唯一的标志),程序段,数据段

    组织方式:链接方式,指针指向不同的队列;索引方式,索引表

    特征:动态性、并发性、独立性、异步性、结构性

    2.1_2 进程的状态与转换

    1)状态:

    1. 运行状态:占有CPU,并在CPU上运行,单核只能一个进程(双核两个)(CPU√,其它资源
    2. 就绪状态:已经具备运行条件,但是没有空闲的CPU,暂时不能运行(CPUX,其它资源
    3. 阻塞状态:等在某个事件的发生,暂时不能运行(CPUX,其它资源X
    4. 创建状态:创建PCB,程序段,数据段
    5. 终止状态:回收内存,程序段,数据段,撤销PCB

    2)进程状态间的转换(图,且只能这样转化)

    1. 创建态->就绪态
    2. 就绪态->运行态
    3. 运行态->就绪态
    4. 运行态->中止态(比如数组越界)
    5. 运行态->阻塞态(主动)
    6. 阻塞态->就绪态(被动)

    2.1_3 进程控制

    1 基本概念:

    1. 什么是进程控制?

    答:实现各种进程状态转换。

    1. 为什么进程控制要一气呵成?

    答:就绪和堵塞是两个队列指针,转换状态时要至少进行两个操作才能完成,如果中途中断,会导致信息不一致。

    1. 如何实现进程控制?

    答:用原语实现一气呵成,因为原语可以用“关中断指令”,就不会检查是否有中断指令了,自然是一气呵成的执行下去。

    1. 原语做的事情:
      1. 更新PCD中的信息
      2. PCD插入合适的队列
      3. 分配/回收资源

    2 进程控制相关的原语

    1)进程的创建:

    1. 创建原语:申请空白PCB、为新进程分配所需资源、初始化PCB、将PCB插入就绪队列
    2. 引起进程创建的事件:用户登录、作业调度、提供服务、应用请求

    2)进程的终止:

    1. 撤销原语:终止进程,删除PCB
    2. 引起进程中止的事件:正常结束、异常结束、外界干预

    3)进程的阻塞:

    1. 阻塞原语:运行态->阻塞态
    2. 引起进程阻塞的事件:需要等待系统分配某种资源、需要等待相互合作的其他进程完成工作

    4)进程的唤醒:

    1. 唤醒原语:阻塞态->就绪态
    2. 引起进程唤醒的事件:等待的事件发生

    5)进程的切换

    1. 切换原语:更新PCB
    2. 引起进程切换的事件:当前进程事件片到、有更高优先级的进程到达、当前进程主动阻塞、当前进程终止

    2.1_4 进程通信(IPC)

    概念:两个进程之间的数据交互,如软件之间的一键分享

    1、共享存储 (分配共享空间,且互斥(PV操作)

    1. 基于数据结构的共享:固定分配(低级通信)
    2. 基于存储区的共享:划分存储区(高级通信),不管你具体怎么用这个存储区

    2、消息传递

    数据交换以格式化的消息为单位,格式化的消息=消息头+消息体

    1. 直接通信方式(直接点名发给谁,消息直接挂载到接受队列)
    2. 间接通信方式(间接利用信箱(中间人)发送消息)

    3、管道通信(pipe

      1. 管道/共享文件/内存缓冲区/循环队列
      2. 只能实现半双工通信
      3. 互斥地访问(没写满,不能读,反之同理)
      4. 写满/读空——堵塞

    2.1_5 线程概念

    1. 什么是线程,为什么要引入线程?

    答:线程是一个基本的CPU执行单元,也是程序执行流的最小单位,进一步提高了系统的并发度

    1. 引入线程机制后,有什么变化?

    1. 资源分配、调度:进程是资源分配的基本单位,线程是调度的基本单位
    2. 并发性:各线程间也能并发,提升了并发度
    3. 系统开销:可以只在进程中切换,减小了CPU切换环境的系统开销
    1. 线程有哪些重要的属性?
    1. 线程是处理机调度的基本单位
    2. CPU计算机中,各个线程可占用不同的CPU
    3. 每个线程都有一个线程ID、线程控制块(TCB
    4. 线程也有就绪、阻塞、运行三种基本状态
    5. 线程几乎不拥有系统资源(系统资源都在进程中)
    6. 同一进程的不同线程间共享进程的资源
    7. 由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预
    8. 同一进程中的线程切换,不会引起进程切换
    9. 不同进程中的线程切换,会引起进程切换
    10. 切换同进程内的线程,系统开销很小
    11. 切换进程,系统开销较大

    2.1_6线程的实现方式和多线程模型

    1、线程的实现方式

    1. 用户级线程(ULT):由应用管理,从用户的视角看能看到的线程。

    优点:管理不用涉及到CPU转换态,故线程管理系统开销小效率高

    缺点:当其中一个用户级被堵塞,其他都会被堵塞,进而整个进程都会被堵塞。

    1. 内核级线程(KLT):由操作系统管理,从操作系统内核视角看能看到的线程。内核级线程才是处理机分配的单位

    2、多线程模型

    1. 多对一模型

    nULT映射到1KLT

    优点:开销小,效率高

    缺点:容易阻塞,并发度不高

    1. 一对一模型

    nULT映射到nKLT

    优点:并发能力很强

    缺点:占用成本高,开销大

    1. 多对多模型

    nULT映射到mKLT上(n>=m

    中和以上两种优缺点

  • 相关阅读:
    SparkStreaming (六) --------- 优雅关闭
    matlab 13折线法数据量化编码与解码
    失业暴增,痛苦转行、危机来袭普通人如何做好职业规划?
    使用python做了一个pdf转word的小工具
    健身耳机哪款好,几款适合健身的耳机分享
    网上商城小程序(小程序+PHP)
    C语言第五章第3节用do...while语句实现循环学习导案
    Python + 大数据-Hadoop生态-Linux(一)-环境搭建和Vi
    海屯心理平台搭建系统模式
    保护你的网站:了解5种常见网络攻击类型及其防御方法
  • 原文地址:https://blog.csdn.net/qq_47966193/article/details/138139188