《操作系统》整理

目录

    • 定义:
            • 计算机系统的结构:
            • 组织:
            • 计算机系统的体系结构:
            • 操作系统的结构:
            • 操作系统的服务:
            • 系统调用
            • 虚拟机
            • 其他计算机系统:
            • 其它计算环境:
  • 操作系统的管理:
    • 进程(process)管理:
      • 调度:
          • 进程创建:
          • 进程间的通信模型(IPC)
            • 1.消息传递:
            • 2.共享内存:
      • 线程
          • 线程模型:
          • 线程库:
          • 线程的一些命令
          • 线程取消
          • 线程池
    • CPU调度
          • 调度算法
          • 线程调度
    • 进程同步
      • 临界区:
      • Peterson”s算法:
      • 硬件同步
      • 信号量
        • 无忙等待的信号量
          • 经典同步问题
          • 管程
    • 死锁:
        • 处理死锁方法:
            • 银行家算法:
    • 内存管理
      • 内存地址编制方法
      • 内存分配方式
      • 虚拟内存
        • 页置换算法
    • 存储管理:文件系统管理
    • I/O子系统
    • I/O保护 :

定义:

操作系统是对计算机资源(硬件、软件)管理、为用户提供服务(交互、运行环境)的软件、是种系统软件。
计算机用户与硬件之间一直运行的一个程序,狭义称为内核(kernel)程序
操作系统设计目标:用户目标:系统应该方便和容易使用、可靠、安全
开发目标:系统容易设计、实现、维护
策略:做什么 机制:怎么做
开发语言:早期:汇编 现在:高级(c、c++)java不行(要有虚拟机)

  • 目标:方便用户解决问题、使用计算机,通过管理软件有效使用计算机硬件资源
计算机系统的结构:
  • 层次结构 :用户—>应用程序- >操作系统->硬件
组织:

单个或多个中央处理器通过总线与内存和设备控制器相连

  • 启动(Booting):先确认每个设备是否正常->开启引导程序Bootstrap(主板)、设备初始化、操作 系统载入内存、运行进程,(第一个进程init())
  • 中断 :一个事件的触发是由软中断、硬中断实现
    软中断是执行中断指令产生的,而硬中断是由外设引发的。
    硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。
    硬中断是可屏蔽的,软中断不可屏蔽。
    有专门的文件标识符
    系统一旦发生中断,CPU会运行中断服务程序,且每个中断都有自己的中断服务程序
    系统通过中断向量表(Interrupt Vector Table)来管理中断请求与中断服务程序之间的关系

《操作系统》整理_第1张图片

  • Ctrl+Alt+Delete快捷启动是什么中断?
    《操作系统》整理_第2张图片
    标准输入:键盘
    标准输出:显示器

  • I/O结构 :设备控制器有本地缓冲器,CPU负责内存与本地缓冲器之间的数据传递,设备控制器控制本地缓冲器和外设之间的。通过中断通知I/O设备操作完成
    所以为了提高cpu利用率,采用DMA直接访问内存方式,以块为单位完成传送触发中断

  • I/O操作: 同步:只有I/O结束后,用户程序才能运行
           异步:I/O期间,用户程序也能运行

  • 存储结构: 寄存器、存储设备(1.磁盘 2.闪存 3.固态硬盘)等

计算机系统的体系结构:
  • 单处理器系统:只有1个通用处理器来处理用户进程的指令,其他专用处理器只接受系统指令。
  • 多处理器系统:多个处理器共享一个内存,操作系统可以运行在一个或多个CPU上
    每个处理器都有自己的寄存器 -》并行计算能力
    《操作系统》整理_第3张图片
  • 集群系统:互相连接的计算机组成的并行分布式系统
操作系统的结构:

简单结构:MS-DOS THE进行了层次划分

(1) 批处理系统 :由人为方式调度程序运行
(2) 多道程序系统 :调度程序已经放在操作系统了(提高CPU使用率)
(3)分时系统,又称多任务系统:给每个任务赋予一个时间片 (让每个任务公平使用CPU)
现在既是多道程序又是多任务系统

多道程序设计的基本特征:无序性、多道性、间断性
分时系统追求:快速响应用户 公平使用cpu

操作:双重模式操作
《操作系统》整理_第4张图片
操作系统有双重运行模式:用户模式、内核模式

  • 用户态:执行用户程序
  • 管态(核心态):操作系统执行 用模式位区分

出现中断或陷阱 硬件切换到管态

特权指令:有可能引发错误的指令,在管态正常使用,用户态时:使用系统调用,软中断进入管态

操作系统的服务:

提供用户接口、程序执行、I/O操作、文件系统操作、通信、出错检测(资源分配、账务、保护)

运行程序与操作系统传参:寄存器、内存的一张表、程序把参数 压入栈
命令行界面:CIL 有的在内核实现、有的通过系统程序实现、shell——获取并执行用户指令
图形用户界面:GUI
《操作系统》整理_第5张图片

系统调用

程序通过API(方便、兼容性)访问,而不是直接使用系统调用(也会调用)
三种常用API:1.Windows的Win32 API 2. POSIX(Unix、linux、mac os) 3. java虚拟机的java API

每个系统调用都有一个固定番号,操作系统通过一张系统调用番号表来管理系统调用接口(其实是查地址,但地址动态)
运行程序与操作系统传参:寄存器、内存的一张表、程序把参数 压入(call by value 按值传递)、
(call by reference 快点、引用传递(传地址))

系统程序不属于内核,但属于操作系统的一部分

应用程序:提供服务给用户 系统程序:提供服务给其他软件

虚拟机

通过软件模拟的具有完整硬件功能的、运行在一个完全隔离环境的完整计算机系统

其他计算机系统:

分布式、其他专用:实时(带有时间节点)、嵌入式、多媒体、手持系统

其它计算环境:

C/S、点对点、基于web计算

操作系统的管理:

OS的基本特性是并发共享

进程(process)管理:

顺序执行的特征:顺序性、封闭性(独占系统的资源)、可再现性(初始条件相同、结果相同)

进程是运行着的程序,一个进程被载入内存,这个程序就变成进程
同一程序经过多次创建,运行在不同的数据集上,形成了不同的进程
操作系统会执行程序进程任务作业(任务的1个实例)
程序与进程的概念区别:程序是被动实体,而进程是活动实体,程序是永久的,都可一对多
一个进程:代码段、栈(临时数据)、堆(动态数据)、数据段(全局变量)
《操作系统》整理_第6张图片- 进程控制块PCB:专门的数据结构,记录进程外部特征,描述进程的运动变化过程。包含许多与特定进程相关的信息

  • 进程的特征:结构特征(进程实体=程序段+相关数据段+PCB)、动态性、并发性、独立性、异步性
    task_struct
    《操作系统》整理_第7张图片

进程之间是树形结构

调度:

进程调度队列 :就绪(在内存就绪并等待运行)、I/O设备队列
《操作系统》整理_第8张图片

1.长程调度(作业调度程序):从作业的缓冲池中选择进程,并装入就绪队列中等待执行(I/O调度) 慢点
2.短程调度(CPU调度):从准备执行队列中选择一个进程,并为之分配cpu 快点
3.中程调度:将进程从内存中取出,缓解内存紧张 分时系统

  • 上下文切换:将CPU切换到另一个进程需要保存当前进程的状态,并恢复另一个进程状态
  • 进程的属性:1.拥有资源`的独立单位(一直是) 分配时间片
进程创建:

进程之间是树形结构
OS根据PID来识别进程
《操作系统》整理_第9张图片《操作系统》整理_第10张图片
《操作系统》整理_第11张图片《操作系统》整理_第12张图片
《操作系统》整理_第13张图片级联终止:一个进程终止,它的所有子进程也将终止
僵尸进程:进程结束,但它的父进程没有等待它

进程间的通信模型(IPC)

《操作系统》整理_第14张图片

1.消息传递:

receive、send :直接通信、间接通信(信箱)、同步和异步、缓冲(零容量、有限容量、无限容量)

用信箱实现进程间互通消息的通信机制要有两个通信原语:发送原语和接收原语

交换的消息都在缓冲中,零容量(阻塞)、有限容量、无限容量

2.共享内存:

共享内存区域:无线缓冲、有限缓冲

生产者-消费者问题

套接字:通信的端点,由IP地址和端口号组成
远程过程调用(RPC)::存根 传普通数据结构
远程方法调用(RMI):传对象

管道:文件 匿名管道(半双工的、数据单向)、命名管道(可靠的)

线程

cpu调度的最小单位(拥有很少的资源)可独立调度和分派的基本单位`
状态 :就绪、阻塞、执行 可并发执行
可与属于同一个进程的线程共享代码段、数据段、操作系统资源
创建线程:只需复制栈和寄存器的内容

   用户线程:用户级线程库进行管理,不受内核管理,且内核不能感知。按进程分配时间
   内核线程(真正的资源调度单位):由内核创建、切换由内核完成 按线程分配时间
线程模型:
     多(用户线程)对一(内核线程)
     一对一:希望内核线程少
     多对多 
     两级模型(混合模型)允许用户线程绑定一个特定的内核线程
线程库:

为程序员提供的、创建和管理线程的API
《操作系统》整理_第15张图片

线程的一些命令

《操作系统》整理_第16张图片
《操作系统》整理_第17张图片

线程取消

目标线程:线程完成任务之前终止线程的任务,需要取消的线程

取消方式:
   	 异步取消:
   	 延迟取消:
  • 信号:用来通知进程某个特定事件的发生,是OS提供内核进程之间的通信机制
    在这里插入图片描述
线程池

在进程开始时创建一定数量的进程,并放入到进程池中等待工作

  • 调度程序激活:一种解决用户线程库和内核间通信的方法

CPU调度

《操作系统》整理_第18张图片
《操作系统》整理_第19张图片《操作系统》整理_第20张图片
非抢占式调度:一旦分配后,不会被其他进程使用
抢占式调度:会被其他进程使用
《操作系统》整理_第21张图片

调度准则:
CPU使用率
吞吐量(一个时间单位里完成的进程数量)
等待时间(在就绪队列等待的时间)
响应时间(提交请求到第一次响应)
周转时间(从进程提交到进程完成) 

上下文切换时间

调度算法

选择下一个CPU区间(剩余CPU区间),而不是进程整个区间长度,分为非抢占调度抢占调度

1.先到先得 FCFS:非抢占 最简单的调度 有利于长作业、CPU作业 可用于作业、进程调度 根据到达次序

  • 护航效果:所有其他小进程都等待一个大进程

2.最短作业优先 SJF(最优的,给出最短的平均等待时间):关联到每个进程下次运行的CPU脉冲长度,调度最短的进程
非抢占抢占(最短剩余时间优先调度) 可能会出现饥饿现象(长的一直等下去)

3.优先级算法 PS:非抢占抢占 用数字表示优先级,数值越小、优先级越高
一个进程的优先级与它的下一个CPU区间的长度成反比
静态优先权在创建就确立,且在整个生命期保持不变 可能会出现饥饿无限阻塞
解决办法:老化,随着等待时间的长度,增加进程的优先级
所以使用动态优先级:进程的的等待时间、已使用处理机的时间、资源使用情况

4.时间片轮转 RR:分时系统中:为了使多个终端能够得到系统及时响应 可抢占
系统每隔一个时间片发出一个时钟中断,调度另一个进程执行
周转时间依赖于时间片的大小
根据经验:时间片 应大于80%的CPU区间

5.多级队列调度 MQS:将就绪队列分为多个独立的队列
队列内:自己的调度算法
队列间:固定优先级抢占调度、队列间给定时间片调度

6.多级反馈队列调度
进程可以在多个队列之间有移动,老化

线程调度

《操作系统》整理_第22张图片 Linux只支持系统范围的线程调度

实时调度:硬实时系统(硬截止时间)、软实时系统

进程同步

  • 竞争:对共享数据的并发访问可能会导致数据的不一致性(进程顺序乱了,且结果不能预测)
  • 互斥:指多个进程不能同时使用同一个资源
  • 同步:进程之间的协作

临界区:

  • 实现: 互斥、前进(有空让进)、有限等待
    定义: 多个进程必须互斥的访问,进程中访问临界资源的一段代码
    执行时间互斥

《操作系统》整理_第23张图片《操作系统》整理_第24张图片

Peterson”s算法:

《操作系统》整理_第25张图片

前提条件是加载存储指令是原子指令,即加载和存储指令是不可被中断的指令。
不能没有turn,否则都进入不了临界区
《操作系统》整理_第26张图片

硬件同步

现代计算机系统提供特殊指令叫原子指令( atomic instructions),运行时不会发生中断

  1. TestAndSet ( ) :检查和设置字的内容(返回原来的值,将传入的值变成true)
  2. swap( ) :交换两个字的内容 不可中断的指令
    《操作系统》整理_第27张图片
    全局变量 lock 初始为false,相当于锁
    《操作系统》整理_第28张图片《操作系统》整理_第29张图片
    局部变量 key 初始为true 每个进程一个 相当于为钥匙

在swap算法下,若key或lock为false,则可进去临界区
Peterson’s (软件实现),testandset,swap(硬件实现)都会出现忙等待

所以声明waiting【i】表示等待进入临界区的进程,初始为false
可以进入临界区:lock或waiting[i]为false
《操作系统》整理_第30张图片

信号量

无忙等待的同步工具
《操作系统》整理_第31张图片1.二进制信号量,又称互斥锁
《操作系统》整理_第32张图片《操作系统》整理_第33张图片
若想控制进程先后,定义一个前序变量,且初值为0,完成后才+1,执行下一个进程。

无忙等待的信号量

解决忙等待:将忙等待的进程挂起(运行状态—等待状态),可以进入临界区时,让进程重新启动(等待状态—就绪状态)

《操作系统》整理_第34张图片

经典同步问题

有限缓冲问题
读者和写者问题
哲学家进餐问题

管程

《操作系统》整理_第35张图片《操作系统》整理_第36张图片条件变量:某一资源类型的信号量
《操作系统》整理_第37张图片

死锁:

  • 死锁:指多个进程互不相让,都得不到足够的资源(涉及多个资源
    原因:竞争资源、进程推进顺序不当
    出现条件:互斥(1个资源只能1个进程占用)、占有并等待、不可抢占、循环等待(P0等待的资源被P1占用,P1等待的资源被P2占用……)。
    通过资源分配图描述:点: 进程、资源 边:请求边、分配边
    《操作系统》整理_第38张图片《操作系统》整理_第39张图片

处理死锁方法:

  • 忽略死锁

  • 预防死锁(限制资源请求、确保至少一个必要条件不成立)
    通常不通过否定互斥条件来预防死锁
    《操作系统》整理_第40张图片《操作系统》整理_第41张图片《操作系统》整理_第42张图片

  • 避免(安全状态:使每个进程都可顺序执行 ,确保系统不进去不安全状态
    若单个实例,采用资源分配图 引入需求边看是否会出现环路;
    当进程申请资源时,需求边变成申请边

    对资源的申请,把申请边变成分配边后,如果没有环就允许申请,如有环就不允许申请

    若含有多个实例,银行家算法,安全算法)

银行家算法:

《操作系统》整理_第43张图片按循环选择下一个
1.安全性算法:确定系统是否处于安全状态

2.资源请求算法:判断是否可安全允许请求的算法

  • 检测(也分只有一个实例:维护等待图(进程是节点)
    在这里插入图片描述
    若等待图中有环,则系统存在死锁;
    多个实例:检测算法)
  • 恢复(人处理、资源抢占、进程终止、把不能正常运行的回滚到安全状态)

内存管理

重定位:把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程
提高内存使用率、管理数据的存储、指令的运行

内存地址编制方法

一个进程使用的内存地址范围:由一对基地址寄存器和界限地址寄存器来定义

地址绑定是逻辑地址到物理地址的映射
逻辑地址:CPU产生,(虚拟空间)
物理地址:内存设备所读入的地址 可以直接寻址
《操作系统》整理_第44张图片《操作系统》整理_第45张图片《操作系统》整理_第46张图片内存管理单元:MMU
编译、加载时绑定 进行交换必须回到原位;执行时绑定,运行时可以发生地址变化

地址重定位:
静态:把指令地址全部转换为绝对地址,执行中无需再进行地址转换;
动态:在CPU访问内存前,动态依靠硬件地址变换机构

逻辑地址:CPU生成的地址
物理地址:内单元的地址

  • 静态链接:加载程序合并到二进制程序镜像中,一直驻留在内存
  • 动态链接,链接延迟到运行时,适用于系统库,由操作系统管理,存根:定位适当的内存驻留库程序
  • 动态加载:直到被调用之前,程序不会被载入到内存,即加载延迟到运行时,由程序员决定

内存分配方式

分配内存空间:
《操作系统》整理_第47张图片
单一连续区管理: 基址寄存器
多分区管理:可用于多道程序;固定(静态)分区:作业装入前,就被划分为若干个固定大小的连续分区,运行期间个数,大小不变
动态分配: 系统里有一张分区说明表,来记录已分配孔和未分配孔的信息
《操作系统》整理_第48张图片
拼接(紧缩):解决碎片,只适用于动态重定位

不连续分配:
分页:把物理内存分成大小固定的块,称为帧
把逻辑内存也分成固定大小的块,叫做页。以页为单位分配内存,设置页表
《操作系统》整理_第49张图片《操作系统》整理_第50张图片没有内碎片
(有外碎片:紧缩:I/O不可以)
页表的实现:
1.用一组专用寄存器保存 页表基寄存器(PTBR)
2.可以放在主存中:页号,偏移 ;页表基址寄存器指向页表,页表限长寄存器表明页表的长度
通过联想寄存器(并行查找),对内存两次存取,一次是存取页表,一次是存取数据
解决办法:硬件缓冲,称为 地址转换旁观缓冲 (TLB),键-值

《操作系统》整理_第51张图片《操作系统》整理_第52张图片《操作系统》整理_第53张图片《操作系统》整理_第54张图片《操作系统》整理_第55张图片《操作系统》整理_第56张图片哈希表【虚拟页码,映射的帧号、指向链表下一个元素的指针】
反向页表:减少页表消耗的内存空间,整个系统只有一个页表 【进程标识符,页码,页偏移】
《操作系统》整理_第57张图片
分段:以用户视角去管理内存
一般组成:主程序、函数、方法、对象、堆、栈、局部变量、全局变量等
逻辑地址:【分段号,偏移】
《操作系统》整理_第58张图片

虚拟内存

基础:程序的局部性理论
允许执行进程时不必完全载入内存,可以部分程序载入到内存
《操作系统》整理_第59张图片
《操作系统》整理_第60张图片
虚拟内存也允许共享,实现进程之间内存共享
《操作系统》整理_第61张图片 页错误:
《操作系统》整理_第62张图片《操作系统》整理_第63张图片《操作系统》整理_第64张图片《操作系统》整理_第65张图片

页置换算法

《操作系统》整理_第66张图片4.近似LRU的实现:附加引用位算法、二次机会算法、增强型二次机会算法

物理帧的分配:平均分配方式:分配帧大小相同;比列分配:进程大小比例;优先级分配:进程优先级

  • 系统颠簸:进程没有分配足够的帧而频繁的页调度
    内存映射文件:采用虚拟内存将文件I/O当成普通内存访问
    内核内存空间的分配:需要连续分配:buddy分配(按2的幂的大小来分配);slab分配(slab 是由一个或多个物理上连续的页,cache 含有一个或多个 slab)

存储管理:文件系统管理

操作系统对存储设备的物理属性进行了抽象的定义,即文件, 它是存储的逻辑单元。
大容量存储系统、一般是二级存储设备。
高速缓存,临时存储设备、置在高速与低速设备之间
在多任务环境下、多处理器环境下,分布式环境下必须要保
证数据的一致性,用硬件解决

I/O子系统

针对用户隐藏具体硬件设备的特性

  1. 一个包括缓冲(buffer)、高速缓存(cache)和假脱机 (spooling)的内存管理部分
  2. 通用设备驱动器接口
  3. 特定硬件设备的驱动程序

在Linux、unix上,通过文件管理接口实现

1.缓冲(Buffering):为传输数据暂时存储数据 ,自己用完就清空不用置换
2. 缓存(Caching):为性能提高暂时存储数据
3. 假脱机(Spooling):是关于低速字符设备与计算机主机交换信息的一种技 术,通过实现虚拟设备可以共享设备

I/O保护 :

所有I/O指令都是特权指令
内存保护:保护中断向量、中断服务程序, 基址、界限寄存器
在中断发生后,进入中断处理的程序属于操作系统程序
CPU保护:防止用户陷入死循环 使用timer定时器产生中断,控制权返回OS

你可能感兴趣的:(操作系统,操作系统)