操作系统:王道笔记

文章目录

操作系统(Operating System,OS)

一.认识操作系统

1.1_1:操作系统的概念,功能和目标

  • 概念:控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。
  • 补充:进程

(processing):一个程序的执行过程。执行前需要将该程序放到内存中,才能被cpu处理。

图片

1.1_2:操作系统的特征

  • 四个特征:并发,共享,虚拟,异步;其中并发,共享是最基本的特征,二者互为存在条件
  1. 并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。

注意:并行:指两个或多个事件在同一时刻同时发生

  • 操作系统的并发性:计算机系统中同时存在多个运行着的程序。

一个单核处理器(cpu)同一时刻只能执行一个程序,因此操作系统会负责协调多个程序交替执行(这些程序微观上是交替执行的,但宏观上看起来就像在同时执行)

  1. 共享:即资源共享,指系统中的资源可供内存中多个并发执行的程序共同使用。
  • 两种资源共享的方式:互斥共享方式同时共享方式

(1):互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源
例如:视频聊天,qq和微信。
(2):同时共享方式:系统中的某些资源,允许一个时间段内由多个进程**“同时”**对它们进行访问
例如:同时给qq和微信发文件

注意:“同时”:往往是宏观的,微观上,这些进程可能是交替对该资源进行访问(即分时共享)

  1. 虚拟:指把一个物理上的实体变为若干的逻辑上的对应物。物理实体是实际存在的,而逻辑上对应物是用户感受到的。
  • 两种虚拟技术:空分复用技术(虚拟存储器技术)和时分复用技术(虚拟处理器)
  1. 异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的。而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
  • 小结:图片

1.1_3 操作系统的分类与发展

  1. 手工操作阶段
  2. 批处理阶段:单道批处理,多道批处理(系统资源并行利用)。
  3. 分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可以通过终端与计算机进行交互。优点:用户请求可以被即时响应,解决人机交互问题
  4. 实时操作系统:能优先响应一些紧急任务。分为硬实时系统软实时系统
  5. 其他操作系统。
  • 小结:图片

1.1_4 操作系统的运行机制体系结构与

  • 指令:处理器cpu能识别,执行的最基本的命令。如加法指令。

两种指令:特权指令;非特权指令

  • 两种处理器状态 :(用程序状态字寄存器(PSW)中都某标志为来标识当前处理器状态)

用户态(目态):此时cpu只能执行非特权指令
核心态(管态):特权指令,非特权指令都可以执行

  • 两种程序:

内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令也可以执行非特权指令,运行在核心态
应用程序:为保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态

  • 操作系统的内核:是计算机上配置的底层软件,是操作系统最基本,最核心的部分。实现操作系统内核功能的那些程序就是内核程序。

操作系统内核图:图片


  • 计算机系统的层次结构:图片

  • 操作系统层次结构:

时钟管理:实现计时功能;
原语:一种特殊的程序。最接近硬件的部分,这种程序的运行具有原子性。
图片

—

  • 操作系统的体系结构:图片

大内核与微内核的区别:
注意:变态(cpu状态的转换)的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能

图片


  • 小结:图片

1.1_5: 中断和异常

  • 中断机制的诞生:为解决串行程序执行的问题,引入中断机制,实现了多道程序并发执行。

  • 本质发生中断就意味着需要操作系统介入,开展管理工作 。由于操作系统的管理工作(比如进程切换、分配I/O设备等)需要特权指令,因此cpu要从用户态转为核心态。中断可以使cpu从用户态切换为核心态,使操作系统获得计算机等控制权。有了中断,才能实现多道程序并发执行。

    注意:
    用户态到核心态的切换是通过中断实现的,且中断是唯一的途径
    核心态到用户态到切换是通过执行一个特权指令,将PSW到标识设置为用户态。

  • 中断的概念和作用

    1. 当中断发生时cpu会立即进入核心态
    2. 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
    3. 对于不同的中断信号,会进行不同的处理
  • 中断的分类:内中断和外中断(本质区别:信号源)

    内中断:也称异常、例外、陷入;信号来源于cpu内部,与当前执行的指令有关。

    陷阱、陷入(trap):有意而为之的异常,如系统调用
    故障(fault):由于错误条件引起的,可能被故障处理程序修复,如缺页
    终止(abort):不可恢复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如除以0.
    外中断:中断;信号来源于cpu外部,与当前执行的指令无关。
    I/O中断请求:
    人工干预:

    外中断的处理过程:
    图片

    Step1:执行完每个指令之后,cpu都要检查当前是否有外部中断信号
    Step2:如果检测到外部中断信号,则需要保护被中断进程的cpu环境(如程序状态字PSW、程序计数器PC、各种通用寄存器)
    Step3: 根据中断信号类型转入相应的中断处理程序
    Step4:恢复原进程的cpu环境并退出中断,返回原进程继续往下执行
    小结:图片


1.1_6:系统调用

  1. 系统调用:操作系统给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获取操作系统内核的服务
  2. 应用程序通过系统调用请求操作系统的服务。而系统中的共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
  3. 系统调用的过程:传递系统调用参数->执行陷入指令(用户态)->执行相应内请求程序处理系统调用(核心态)->返回应用程序。
    • 注意:
    1. 陷入指令(trap指令)是在用户态执行对,执行陷入指令之后立即引发一个内中断,使cpu进入核心态
    2. 发出系统调用请求是在用户态,而对系统调用对相应处理核心态下进行*。
  4. 小结: 图片

第二章:进程管理

2.1:进程的概念、组成、特征

  • 程序:是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合。
2.1.1:进程的概念
  • 进程(Process)的概念:是动态的,是程序的一次执行过程。同一程序多次执行会对应多个进程
  • 进程是进程实体的运行过程,是系统进行资源分配调度的一个独立单位。
  • 进程是动态的,进程实体是静态的;进程实体反应了进程某一时刻的状态就像视频中的一帧。
  • 进程’‘用进程实体(进程映像)更准确’‘:由PCB程序段(代码:指令序列),数据段(运行过程中产生当各种数据)。其中PCB是给操作系统用的,程序段和数据段是给进程自己用的。
    • 操作系统对进程进行管理工作所需的信息都存在PCB中
    • PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时,会回收其PCB。
    • 进程控制块(PCB):包括进程描述信息(PID,UID),进程控制和管理信息(CPU、磁盘、网络流量;进程当前状态:就绪态阻塞态/运行态),资源分配清单(正在使用哪些文件,I/O,内存),处理机相关信息(PSW各种寄存器用于实现进程切换)
      • PID:当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的“身份证号”。
      • ID(UID):基本的进程描述信息,可以让操作系统区分各个进程

程序的运行
图片

2.1.2:进程的组成

图片

2.1.3:进程的特征

图片

2.2:进程的状态、进程的组织

2.2.1:进程的状态
  • 创建态和就绪态

图片


  • 运行态
    图片

  • 阻塞态
    图片

  • 终止态
    图片

2.2.2:进程状态的转换

图片

图片

2.2.3:进程的组织*
  1. 链接方式
    图片

  1. 索引方式
    图片

2.2小结:

图片

2.3:进程控制

  • 进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。就是实现进程状态转换
  • 用原语实现进程控制
  • 原语:是一种特殊的程序,它的执行具有原子性。也就是说,这段程序的运行必须一气呵成,不可中断
    图片

  • 原语原子性的实现
  • 利用关中断和开中断
    图片

  • 进程控制相关的原语
  • 创建原语
    图片
  • 终止原语
    图片
  • 阻塞和唤醒原语
    图片

-切换原语
图片
图片

2.3:小结:

图片

2.4:进程通信

  • 进程通信:进程之间的信息交换
    图片

2.4.1:共享存储
  • 两个进程对于共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具来实现,操作系统只负责提供共享空间和同步互斥工具(如P,V操作))
  1. 基于数据结构的共享:比如共享空间中只能放一个长度为10的数组,这种共享方式速度慢、限制多,是一种低级通信方式
  2. 基于存储区的共享:在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式
2.4.2:消息传递

图片


2.4.3:管道通信
  • 管道:指用于连续写进程的一个共享文件,又名pipe文件。其实就是在内存中开辟一个大小固定的缓冲区
    图片
  • 管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道。
  • 各进程要互斥地访问管道
  • 数据以字符流的形式写入管道,当管道写满时,写进程write()系统调用将被阻塞等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞
  • 如果没有写满,就不允许读。如果没读空就不允许写
  • 数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况
小结:

图片


2.5:线程的概念

  • 同一个进程分为了多个线程。
  • 线程是一个基本的cpu执行单元,也就是程序执行流的最小单位。
  • 引入线程后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务。
  • 引入线程后,进程只作为除cpu之外的系统资源的分配单元。
  • 引入线程后,的变化

图片

  • 线程的属性

图片

2.6:多线程模型

2.6.1:线程的实现方式
  • 用户级线程
    图片
  • 线程切换是由应用程序软件控制的,即在用户态就可以完成线程切换,并不需要操作系统干涉。
  • 用户级线程的优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态,线程管理的系统开销小,效率高。
  • 用户级线程的缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高。多个线程不可在多核处理机上并行运行。

  • 内核级线程
    图片

2.6.2:多线程
  • 一对一
    图片

  • 多对一
    图片

  • 多对多
    图片

小结:

图片

2.7:处理机调度概念、层次

2.7.1:调度的基本概念

图片


2.7.2:调度的三层次
  • 作业:一个具体的任务
  • 用户向系统提交一个作业相当于用户让那个操作系统启动一个程序(来处理一个具体的任务)
  1. 高级调度(作业调度)

图片

  1. 低级调度(进程调度/处理机调度)
  • 低级调度:按照某种策略中就绪队列中选取一个进程,将处理机分配给它
  • 进程调度是操作系统中最基本的一种调度,在一般的操作系统中必须配置进程调度
  • 进程调度频率很高,一般几十毫秒一次
    图片
  1. 中级调度(内存调度)
  • 中级调度:按照某种策略决定将哪个处于挂起状态的进程重新调入内存
  • 频率比高级调度高
    图片
补充:进程的挂起态与七状态模型

图片

2.7.3:三层调度的联系与对比

图片

小结

图片

2.8:进程调度的时机、切换与过程、进程调度方式

2.8.1:进程调度的时机

图片
图片

2.8.2:切换与过程

图片

2.8.3:方式:抢占与非抢占

图片

小结

图片

2.9:调度算法的评价指标

  1. CPU利用率

图片

  1. 系统吞吐量

图片

  1. 周转时间

图片
图片

  1. 等待时间

图片

  1. 响应时间

图片

小结

图片

2.10:调度算法

图片

2.10.1:先来先服务 (FCFS)

图片
图片

2.10.2:最短作业优先(SJF)
  1. 非抢占的短作业优先:SPF
    图片

  2. 抢占的短作业优先:SRTN:最短剩余时间优先
    图片
    图片


图片

  1. 注意
    图片
2.10.3:最高响应比优先(HRRN)

图片
图片

小结

图片
图片

2.11:调度算法

2.11.1:时间片轮转RR
  • 时间片为2
    图片
    图片
    图片
    图片
    图片
    图片
    图片

  • 时间片大小为5
    图片
  • 所以时间片如果太大,则该算法会退化为FCFS
  • 时间片如果太小,会导致进程切换过于频繁,导致实际用于进程执行时间比例减少
    图片

2.11.2:优先级调度(抢占和非抢占)
  1. 非抢占
    图片

  2. 抢占
    图片

  3. 补充
    图片

  4. 小结
    图片

2.11.3:多级反馈队列:抢占

图片
图片
图片
图片

图片

小结:

图片

2.12: 进程同步、互斥

2.12.1:进程同步

图片

2.12.2:进程互斥

图片
图片
图片

小结

图片

2.13: 进程互斥的实现方法

2.13.1:单标志法

图片

  • 只能轮流访问,如果一方一直不访问临界区,那么虽然此时临界区空闲,但并不允许另一方访问;违背“空闲让进”原则
2.13.2:双标志先检查
  • 如果按照并发运行1526的顺序,不太行。
    图片
2.13.3:双标志后检查
  • 并发也有问题
    图片
2.13.4:Peterson算法

图片

小结

图片

2.14:进程互斥的硬件实现方法

2.14.1:中断屏蔽法

图片

2.14.2:TestAndSet(TS/TSL)

图片

2.14.3:Swap(XCHG)

图片

小结

图片

2.15:信号量机制

图片

2.15.3:整型信号量

图片

2.15.2:记录型信号量

图片
图片
图片
图片
图片

图片

小结

图片

2.16:用信号量机制实现进程互斥、同步、前驱关系

图片

2.16.1:实现进程互斥

图片

2.16.2:实现进程同步

图片
图片

2.16.3:实现进程的前驱关系

图片

小结

图片

2.17:生产者消费者问题

图片

图片
图片

图片

  • 小结
    图片

2.18:多生产者-多消费者

2.19:吸烟者问题

2.20:读者-写者问题

2.21:哲学家进餐问题

图片
图片
图片

  • 或者仅当一个哲学家左右两支筷子都可用时才允许他抓起筷子;可行
    图片

2.22:管程

2.22.1:管程的定义和基本特征

图片

2.22.2: 管程解决生产者消费者问题

图片
图片

2.23:死锁的基本

2.23.1:什么是死锁
  • 死锁:各进程竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象。发生死锁后,都将无法向前推进。
  • 饥饿:由于长期得不到想要的资源,某进程无法向前推进的想象。
  • 死循环:某种进程执行过程中一直跳不出某个循环的现象。
    图片
2.23.2:死锁产生的必要条件

图片

2.23.3:什么时候发生死锁

图片

2.23.4:死锁的处理策略

图片
图片

小结

图片

2.24:预防死锁

图片
1.
图片

图片

图片

图片

  • 小结
    图片

2.25:避免死锁

图片

  • 银行家算法
    图片

图片
图片

  • 发生死锁的例子

  • 图片

  • 实现
    图片

  • 小结:
    图片

2.26:死锁的检测和解除

2.26.1:检测

图片
图片
图片

2.26.2:解除

图片

小结

图片

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

it小白666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值