操作系统-高分笔记

章节内容:

  1. 绪      论:讲述了操作系统的基本概念,发展和分类,运行环境,体系结构
  2. 进程管理:介绍进程和线程,处理器的调度,同步与互斥,死锁
  3. 内存管理:介绍了内存分配方式,虚拟内存管理,内存管理方式的对比
  4. 文件管理:文件系统的逻辑结构和物理结构,文件系统的实现,磁盘组织管理
  5. 设备管理:I/O管理,I/O子系统,告诉缓存和缓冲区

 

 

章节内容可以理解为主要围绕计算机硬件来讲解的:  

     计算机硬件包括: 1、CPU(进程管理)     2、内存条(内存管理)     3、硬盘(文件管理)     4、显示器、键盘、鼠标,打印机(设备管理)

这样就容易理解整个计算机系统了。

 

 

 


 

章节一:绪论

     主要讲解了操作系统为何产生以及发展。思考一下,刚开始把一堆CPU,内存,硬盘和鼠标键盘给你,你要怎么用起来,要想对他们进行各种协助就要一个东西来管理。最初的硬件是通过人工来管理的,特别选择女性来管理,因为各个插头的拔插和连接需要很细心。但是慢慢的发现这样很麻烦,就开始有脱机输入输出技术--》批处理技术--》操作系统。

     现代操作系统最基本的特征是:并发和共享。

     操作系统的五大功能:处理器管理、存储器管理、文件管理、设备管理、提供用户接口

     并行性:两个或多个事件在同一时间同时发生

     并发性:两个或多个事件在同一时间间隔发生,交替进行。

     操作系统分类:批处理、分时、实时、嵌入式、网络、集群、分布式。

     用户态和核心态:     用户态:             用户程序执行时机器所处的状态     权限小,只能执行特定指令。

                                    核心态:操作系统管理程序执行时机器所处的状态     权限大,能执行特权指令。      特权指令:I/O指令、设置中断屏蔽指令、清理内存指令、设置时钟指令。

               核心态只向用户提供接口,使得用户态能执行特定的指令和中断等。

     操作系统的体系结构: 1、模块组合结构     2、层次结构     3、微内核结构(为了实现分布式系统环境,内核(普通用户进程)只留下最基本的功能,其他由运行在服务器进程来实现,形成 “客户/服务器”模式。客户拥有微内核

 


章节二:进程管理

 

进程和线程 比较:

     1、调度:进程是拥有资源和独立调度的基本单位     线程只是独立调度单位,运行时资源属于进程。

     2、拥有资源: 不管是有无线程的操作系统,进程都是拥有资源的基本单位,而线程只拥有极少的私有资源(程序计数器、一组寄存器、栈。用来保存线程的执行历史和线程的执行状态,这些资源也是进程的)

     3、并发性:有线程的操作系统,进程可以并发,线程也可以并发。可以理解为一个程序有好几个进程,每个进程又有好几个线程。

     4、系统开销:进程大(切换进程时要保存运行环境,重新启动时又要回复) ,线程小(自己本来就那么一点可怜的资源,开销肯定小)

 

进程包括: 程序段、数据段、进程控制块(是进程存在的唯一标志,因为在进程的整个生命期终,系统总是通过进程控制块进行控制的)

基础的基本状态:运行、就绪、阻塞。只有阻塞是主动的,没有资源就自己阻塞,其他都是被动的。

 

死锁产生的四个必要条件:互斥、请求与保持(没有得到新的资源前现在拥有的资源不释放)、不剥夺、环路等待(你等我我等你释放资源)

 

用户级线程和内核级线程区别:

  1. 用户级线程:当一个用户级线程阻塞,整个进程都必须等待。
  2. 内核级线程:当一个内核级线程阻塞,不会影响其他线程。因为一旦线程阻塞,内核会从当前或者其他进程(process)中重新选择一个线程保证程序的执行。

进程通信:

  1. 共享存储器系统 :设置一个共享存储区
  2. 消息传递系统:直接通信方式、间接通信方式(设置一个中间实体-信箱)
  3. 管道通信系统:管道是用于连接读写进程以实现它们直接通信的共享文件,所以管道是共享文件。

 

处理器的三级调度:   运行频率:高级调度(作业调度)<中级调度< 低级调度(进程调度)

 

每次高级调度(作业调度)必须解决两个问题:1、决定操作系统可以接纳多少作业     2、决定接纳哪些作业

中级调度:可以理解为     操作系统将外存上的页面调入内存。

调度的评价标准:      1、CPU利用率     2、系统吞吐量     3、响应时间     4、周转时间

常见调度算法:     1、先来先服务     2、短作业优先     3、优先级(作业调度、进程调度)     4、时间片轮转     5、高响应比优先     6、多级队列(若干个独立的队列)     7、多级反馈队列(多个队列形成一条链,前面的队列执行了后面的队列才执行)

同步与互斥:

     互斥:进程-资源-进程

     同步:进程-进程

     如何区分:只要是同类进程即为互斥关系,不同类进程即为同步关系。

临界资源和临界区:

     临界资源:属于系统资源

     临界区:属于进程,是进程访问临界资源的代码块。

同步应遵循的准则:

  • 空闲让进
  • 忙则等待
  • 有限等待
  • 让权等待(当一个进程不能进入自己的临界区时,则释放处理器给其他进程)

经典同步问题:

  1. 生产者-消费者问题:设置一个空缓冲区数目,一个满缓冲区数目,一个互斥信号量。
  2. 读者-写者问题
  3. 哲学家进餐问题:分成奇数号和偶数号,奇数号的哲学家先拿左边筷子,然后拿右边筷子;偶数号的哲学家则相反
  4. 理发师问题:把店内的所有椅子看做一个变量,只要有空椅子就留下,没有就离开。

死锁:产生原因是几个进程因竞争系统资源或相互通信而处于永久阻塞状态。

     根本原因:竞争资源          重要原因:进程推进顺序不当

处理死锁的四种方法:

  • 鸵鸟算法:对死锁视而不见
  • 预防死锁:设置限制条件,破坏产生死锁的4个必要条件之一或几个
  • 避免死锁:资源动态分配过程中,用某种方法防止系统进入不安全状态,比如不给某个进程分配资源。
  • 检测和解除死锁:采取措施解除死锁,比如剥夺某个进程的资源。

饿死:因为等待时间过长而饿死,比如在优先级分配算法中,不断的有高优先级的进程产生,则低优先级的进程总是分配不到处理器,则会饿死。 饿死是有机会分配到处理器,只是时间比较长,而死锁是相互缺乏资源不能分配处理器。

 


章节三:内存管理

 

  • 内存管理基础
    • 连续分配管理方式
    • 非连续分配管理方式      分页管理方式,分段管理方式,段页式管理方式
  • 虚拟内存管理         其实就是在磁盘上开辟一个空间作为缓冲区,事先把需要的资源放在缓冲区里
    • 页面置换算法有:最佳,先进先出,最近最少使用,时钟  置换算法

 

 

内存管理是指由于计算机所有的运行程序都是要放在内存条上才能运行的,但是内存条属于紧缺资源,所以得合理利用,通过合理的分配算法并设置虚拟内存的方法来扩充内存大小。

连续分配管理方式:

  • 单一连续分配
  • 固定分区分配
  • 动态分区分配

内部碎片和外部碎片:内存被分成各个分区,内存中分区里没有被利用的碎片是内部碎片,在内存中没有被利用的是外部碎片。 

     如:分片管理---固定分区(将内存分成固定大小的多个分区)---有内部碎片

           分段管理---动态分区(要用多大的内存空间就开辟多大的)----最终整个内存中会剩余比如20MB,而任何进程所需要的都不止20MB,从而这20MB就是外部碎片。

非连续分配管理方式:

  1. 基本分页存储管理方式:将用户作业分成若干个大小相等的页,内存分成与页面大小相等的块,在为作业分配内存时,以块为单位分配。作业调度时必须一次性将所有页面调入内存。
    • 优点:1,内存利用率高    2,实现了离散分配     3,便于存储访问控制     4,无外部碎片
    • 缺点:1,需要硬件支持(尤其是快表,快表指的是指定作业页号和内存物理块号的对应表)    2,内存访问效率下降     3,共享困难     4,内部碎片
  2. 基本分段存储管理方式:将用户作业分成若干个逻辑分段,每个分段都是一组完整的逻辑信息集合。每次将一个逻辑分段调入内存中,但不要求每段都连续。
    • 优点:1,便于程序模块化处理和处理变换的数据结构     2,便于动态链接和共享     3,无内部碎片
    • 缺点:1,与分页类似,需要硬件支持   2,为了满足分段的动态增长和减少外部碎片,需要采用拼接技术       3,分段的最大尺寸受到主存可用空间的限制       4,有外部碎片
  3. 段页式管理方式:先将用户作业以逻辑结构分成若干个逻辑分段,再将每一个逻辑分段分成若干大小固定的页;而内存还跟分页存储一样分成若干个大小相同的物理块,对内存的分配以物理块为单位。

 

注意:不管是连续分配管理还是非连续分配管理,都是一次性将用户作业都放入内存中,这样很难满足一些大型的用户作业,有可能用户作业不能全部调入内存,那就阻塞了。

 

虚拟内存管理

     面对大型的用户作业,无法一次性全部调入内存的情况下,那就得引入虚拟内存了。因为用户作业中有些程序是不频繁使用的,所以可以先放在外存上,当需要的时候再调入内存。这就利用的是局部性原理。

局部性原理:大多数程序在执行时,在一个较短的时间内仅使用程序代码的一部分,程序所访问的存储空间也是局限于某个区域。

请求分页存储管理方式:

     利用上面讲到的基本分页存储管理方式将用户作业分页,然后利用虚拟内存管理技术,先将程序部分调入内存,其他的当需要的时候再从外存中调入。

     请求分页 = 基本分页 + 请求调页功能 + 页面置换功能

  • 优点:1,可以离散存储程序,降低了碎片数量       2,提供虚拟存储器,提高了主存利用率 ,有利于多道程序运行(因为可以调入多个用户作业了)
  • 缺点:1,必须硬件支持(因为用了基本分页技术)     2,有些情况下系统会产生抖动现象(就是刚使用完的程序被调出内存了,下一秒又需要时又调入内存,如此反复就出现了抖动)    3,程序最后一页存在未被利用的部分

 

页面置换算法:

    • 最佳置换算法:无法实现,作为一个标准来衡量其他置换算法的优劣。
    • 先进先出算法:先进来的页面也先调出去,  (存在Belady异常)
    • 最近最少使用算法:前面被调入的代码中最少使用的代码段被调出去。   是最接近最佳置换算法的。
    • 时钟置换算法:页面被访问一次计数器就+1,当计数器为0时,则将页面调出。

     抖动现象和Belady异常:

          抖动:刚调出的代码又调入,反复这样就是抖动。

          Belady异常:先进先出算法中,缺页率会随着所分配的物理块数的增加而增加。其他置换算法没有Belady异常。

 

请求分段存储管理系统:跟请求分页存储管理类似,先分段,然后调入一部分分段进入内存开始运行。

 


章节四:文件管理

 

上一章节讲的是对内存的管理,这一章讲的是对外存的管理。主要涉及的就是存在外存中的文件的结构,以及如何快速的找到指定的文件。

 

文件系统 = 文件 + 管理文件的软件 + 数据结构

文件系统包括4层:

  • 基本I/O控制层
  • 基本文件系统层
  • 基本I/O管理程序层
  • 逻辑文件系统层

磁带和磁盘的特点是:磁盘是随机存取,磁带是顺序存取。

磁盘访问时间 = 寻道时间 + 旋转延迟 + 传输时间

文件保护:防止文件受到物理破坏和非法访问

文件目录的实现:  1,线性表            2,散列表

调度算法:

  1. 先来先服务算法:按照进程请求访问磁盘的先后次序进行
  2. 最短寻道时间算法:当前磁头所在磁道距离最近的请求最为下一次服务的对象
  3. 电梯调度算法:像电梯一样,当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务对象。(对两端磁道请求比较不公平)
  4. 循环扫描算法:为了照顾到两端磁道的请求,规定磁头单向移动,例如:自里向外移动,当磁头移动到最外磁道时立即返回到最里磁道,如此循环进行扫描。

磁盘管理:

  • 磁盘格式化:新磁盘是磁性记录材料的空磁盘。在磁盘能存储数据前,必须分成扇区以便磁盘控制器能进行读和写操作。这叫低级格式化。
  • 引导块:计算机启动时要运行一个初始化程序(自举程序),自举程序会初始化CPU、寄存器、设备控制器和内存等。该自举程序要找到磁盘上的操作系统内核,调入内存,并转到初始地址,从而开始操作系统的运行。

 


章节五:设备管理

I/O软件设计的基本思想是:将设备管理软件组织成一种层次结构。其中底层软件与硬件相关,用来屏蔽硬件的具体细节;高层软件则为用户提供一个友好的、清晰而统一的接口。

I/O软件的层次结构:

  • 此处为用户
  • 用户层软件:进行I/O调用,格式化I/O,SPOOLing
  • 设备独立性软件:命名,保护,阻塞,缓冲,分配
  • 设备驱动程序:奖励设备寄存器,检查状态
  • 中断处理程序:当I/O结束时唤醒驱动程序
  • 此处为硬件:执行I/O操作

I/O设备的4种控制方式:

  • 程序直接控制方式:程序直接控制设备,例如键盘输入,程序就一直循环访问设备控制器,直到所有的数据都输入完成。这样会一直占用着CPU。
    • 优点:非常简单
    • 缺点:CPU的利用率相当低。因为I/O太慢了,跟不上CPU的步伐。
  • 中断控制方式:CPU给设备发送指令,然后等设备完成I/O后给CPU一个中断指令,其中CPU可以去干别的事情。例如键盘输入,CPU给键盘发送输入需求指令,键盘就开始输入,其中CPU去干别的事。但是每输入一个数就要中断一次。
    • 优点:与程序直接控制方式相比,CPU和I/O设备间可以并行工作了,CPU的利用率提升了不少。
    • 缺点:每输入/输出一个数据,就要去中断CPU,中断次数多了,反而耗费了大量CPU的时间,因为中断的时候,CPU要保护之前正在运行的程序现场,返回时又要恢复现场,所以浪费CPU时间。
  • DMA控制方式:这是中断控制方式的加强版,因为中断控制方式每输入一个数字就要中断一次CPU,所以DMA控制方式是在外设和内存之间开辟直接的数据交换通路,先将一批数据输入内存,在一批数据输入完成后才去中断CPU,极大的提高了CPU的利用率。
    • 优点:设备和CPU可以并行工作,数据交换速度加快,CPU利用率增加。
    • 缺点:存在一定局限性,如:数据传送方向,存放数据的内存起始地址及数据的长度等都由CPU来控制,给CPU增加了负担,而且每台设备都需要一个DMA控制器,当设备增加时,多个DMA控制器的使用不经济。
  • 通道控制方式:跟DMA控制方式类似,也是以内存为中心,是吸纳设备与内存直接交换数据的控制方式。但是与DMA方式相比,通道所需要的CPU干预更少,而且可以做到一个通道控制多台设备,从而进一步减轻了CPU负担。例如:CPU控制两个通道1和2,通道1连接设备控制器1,2和3等,通道2也是连接了设备控制器4,5和6等。
    • 优点:解决了I/O操作的独立性和各部件工作的并行性。使得CPU的干预更少。不仅实现了CPU和通道的并行操作,而且通道与通道之间也能实现并行工作,各个通道上的设备也能实现并行工作,从而可以提高整个系统的效率。
    • 缺点:由于需要更多的硬件(通道处理器),因此成本较高。通道控制方式通常应用于大型数据交互的场合。

 

SPOOLing系统:由磁盘中的输入井和输出井,内存中的输入缓冲区和输出缓冲区。

设备控制器:设备一般由机械部分和电子部分组成,其中设备的电子部分通常称为设备控制器。

设备控制器应具备的功能:

  1. 接受和识别来自CPU的各种指令
  2. 实现CPU与设备控制器,设备控制器与设备之间的数据交换
  3. 记录设备的状态供CPU查询
  4. 识别所控制的每个设备的地址

缓冲的实现方法:  1,采用硬件缓冲器实现            2,在内存划出一块存储区

设备分配依据的主要数据结构:设备控制表(DCT),设备控制器控制表(COCT),通道控制表(CHCT),系统设备表(SDT)

设备分配算法:1,先来先服务       2,优先级高者优先

假脱机技术(SPOOLing):将独占设备改造成共享设备,从而提高设备利用率和系统的效率。例如:打印机,在打印机中设置缓冲区,要打印的东西都放到缓冲区中,这样一次根据分配算法打印就实现了假脱机。 

 


 

 

 

 

没有更多推荐了,返回首页