zoukankan      html  css  js  c++  java
  • 第二章操作系统逻辑结构总结

    1. 逻辑结构

    1.1 逻辑结构,即OS的设计和实现思路!

    1.2 逻辑结构的种类:

    (1)整体式结构:以块为基本单位构建或以模块为基本单位构建。

    特点:

    • 模块设计、编码和调试独立;
    • 模块调用自由;
    • 模块通信多以全局变量形式完成;

    缺点

    • 信息传递随意,维护和更新困难。

    (2)层次结构:分层结构的操作系统,所有功能模块按照调用次序排成若干层,相邻层间只有单向依赖或单向调用。上层的实现依赖下一层,每一层为上一层提供服务

    分层原则:

    • 硬件相关-最底层
    • 外部特性-最外层
    • 中间层-调用次序或消息传递顺序
    • 共性的服务-较低层
    • 活跃功能-较低层

    特点:

    • 结构清晰,避免循环利用
    • 整体问题局部化,系统的正确性容易保证
    • 有利于操作系统的维护、扩充、移植

    (3)微内核结构(客户/服务器结构,Client/Server)

    操作系统=微内核+核外服务器

    a) 微内核: 要足够小,提供OS最基本的核心功能和服务

    • 实现与硬件紧密相关的处理

    • 实现一些较基本的功能

    • 负责客户和服务器间的通信

    b) 核外服务器

    • 完成OS的绝大部分服务功能,等待应用程序提出请求

    • 由若干服务器或进程共同构成

    例如:进程/线程服务器、虚存服务器、设备管理服务器等 以进程形式运行在用户态

    2. CPU的态

    2.1 CPU的态,即CPU的工作状态,对资源和指令使用权限的概述;

    2.2 态的分类:

    • 核态(能够访问所有资源和执行所有的指令;管理程序/os内核);

    • 用户态(仅能访问部分资源,其他资源受限;管理应用程序);

    • 管态(介于核态和用户态之间);

    2.3 态的转化

    a)用户态向核态转化

    ​ 用户请求OS提供服务——>发生中断——>用户进程产生错误(内部中断)——>用户态企图执行特权指令

    b)核态向用户态转化

    一般是执行中断返回

    2.4 硬件按照“态“来区分CPU的状态,OS按照“进程”来区分CPU的状态;

    2.5 linux上进程分为五态,新建状态,就绪状态,阻塞状态(等待态),运行状态,终止状态。

    • 新建状态:进程刚创建,但还不能运行,OS还没有把它加到可执行进程组中,通常是还没有加载到主存中的新进程。

    • 就绪状态 :一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。

    • 执行状态:当一个进程在处理机上运行时,则称该进程处于运行状态。

    • 阻塞状态:一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时仃止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。

    • 挂起状态:由于IO的速度慢于CPU的运算速度,经常出现CPU等待I/O的情况。这时OS需要将主存中的进程对换至外存。在进程行为模式中需要增加一个新的挂起(suspend)状态。当内存中所有进程阻塞时,OS可将一进程置为挂起态并交换到外存,再调入另一个进程执行。

    • 退出状态:OS从可执行进程组中释放出的进程,或者是因为它自身停止了,或者是因为某种原因被取消。进程不在适合执行,但与作业相关的表和其它信息临时被OS保留起来,为其他程序提供所需信息。

    状态之间的转换如下图:

    3. 中断机制

    3.1 中断定义

    中断指CPU对突发的外部事件的反应过程或机制。CPU受到外部信号(中断信号)后,停止当前工作,去处理外部事件,处理完毕后回到原来工作的中断处(断点)继续原来的工作。 

    3.2 中断目的:

    • 实现并发

    • 实时处理

    • 故障自动处理

    3.3 中断的一些概念:

    a)引起系统中断的事件称为中断源;

    b)中断类型:

    (1)强迫中断和自愿中断:

    ​ 强迫中断:程序无预期

    ​ 自愿中断:程序设计好的

    (2)内中断和外中断:

      外中断:CPU外部世界(如i/o)

       不可屏蔽中断:中断原因很关键CPU必须响应

       可屏蔽中断:中断原因不重要CPU可以不响应

      内中断:CPU内部世界

    c)断点:(程序中断的地方)

       用程序下一条指令的地址来表示这个参数

       在汇编语言中就是CS:IP

    d)现场(程序正确运行所依赖的信息集合):

        相关寄存器

      现场的两个处理过程:

        现场保护:进入中断服务程序之前,把东西放进栈里

        现场恢复:恢复原程序,把栈的东西换原

    e)中断响应过程:

        1.识别中断源

        2.保护断点和现场

        3.装入中断服务程序的入口地址(CS:IP)

        4.进入中断服务程序

        5.恢复现场和断点

        6.中断返回LRET

    e)中断响应的实质:

        交换指令执行地址(CS:IP)

        交换了CPU的态

        现场保护和恢复,还有传递的参数

    reference:

    cpu的态https://blog.csdn.net/Maybe_ch/article/details/85650818

    中断https://www.cnblogs.com/beautiful7/p/12409589.html

    问题

    1. 何为操作系统的逻辑结构?有哪几种典型逻辑结构?

    ​ 逻辑结构,即OS的设计和实现思路。有整体结构、层次结构、微内核结构三种。

    2. 分层结构的分层原则是什么?

    • 硬件相关——最底层
    • 外部特性——最外层
    • 中间层——调用次序或消息传递顺序
    • 共性的服务——较低层
    • 活跃功能——较低层

    3. 微内核结构的特点是什么?

    1)较高的灵活性和可扩充性

    2)高了操作系统的可靠性

    3)更适合于分布式系统

    4. 何为CPU的态?定义态的作用什么?有哪些态?

    1)CPU的态,即CPU的工作状态,对资源和指令使用权限的概述;

    2)为了避免用户程序错误地使用特权指令,保护操作系统不被用户程序破坏。具体规定为,当CPU处于用户态时,不允许执行特权指令;当CPU处于系统态时,可执行包括特权指令在内的一切机器指令;

    3)核态、用户态、管态;

    5. 中断的概念是什么?中断的响应过程是怎样的?

    1)中断指CPU对突发的外部事件的反应过程或机制。CPU受到外部信号(中断信号)后,停止当前工作,去处理外部事件,处理完毕后回到原来工作的中断处(断点)继续原来的工作。

    2)中断的响应过程: 

    ① 识别中断源

    ② 保护断点和现场

    ③ 装入中断服务程序的入口地址(CS:IP)

    ④ 进入中断服务程序

    ⑤ 恢复现场和断点

    ⑥ 中断返回LRET

    6. 操作系统分层结构有何作用?在应用编程中,我们如何使用分层的编程思想提升程序的可移植性和可维护性?

    1)开发人员的专业分工,专注理解某一层。 由于某一层仅仅调用其相邻下一层所提供的程序接口,只需要本层的接口和相邻下一层的接口定义清晰完整,开发人员在开发某一层时就可以像关注集中于这一层所用的功能和技术。

    2) 可以很容易用新的实现来替换原有层次的实现。 只要前后提供的服务(接口)相同,即可替换。 系统开发过程中,功能需求不断变化,我们可以替换现有的层次以满足新的需求变化。

    3)降低了系统间的依赖。 比如业务逻辑层中的业务发生变化, 其他两层即表现层以及数据访问层程序也不需要变化。 这大大降低了系统各层之间的依赖。

    4)有利于复用。 充分利用现有的功能程序组件,将已经辨识的具有相对独立功能的层应用于新系统的开发,保证新系统开发的过程中,能够将重点集中于辨识和实现应用系统特有的业务功能, 最终缩短系统开发周期,提高系统的质量。

    7. 操作系统微内核架构有何作用?在应用编程中,我们如何使用“客户-服务器”的编程思想提升程序的功能可扩展性?

    1)作用

    ① 提高了系统的可扩展性

    ② 增强了系统的可靠性

    ③ 可移植性强

    ④ 提供了对分布式系统的支持

    ⑤ 融入了面向对象技术

    2)如何使用

    ① 客户只能通过以公有的方式定义的接口使用服务器,这意味着客户(客户程序员)唯一的责任是了解接口。

    ② 服务器(服务器程序设计人员)的责任是确保服务器根据该接口可靠并准确的执行。

    ③ 服务器设计任务只修改设计的实现细节,而不能修改接口。

    这样程序员就能够独立的对客户和服务器进行改进,对服务器的修改不会对客户的行为造成意外的影响。

  • 相关阅读:
    Android应用开发基础篇(16)-----ScaleGestureDetector(缩放手势检测)
    Android应用开发基础篇(15)-----URL(获取指定网址里的图片)
    Android应用开发基础篇(14)-----自定义标题栏
    Android应用开发提高篇(6)-----FaceDetector(人脸检测)
    Android应用开发提高篇(5)-----Camera使用
    Android应用开发提高篇(4)-----Socket编程(多线程、双向通信)
    Android应用开发基础篇(13)-----GestureDetector(手势识别)
    Android应用开发基础篇(12)-----Socket通信
    Android应用开发实例篇(1)-----简易涂鸦板
    Android应用开发提高篇(3)-----传感器(Sensor)编程
  • 原文地址:https://www.cnblogs.com/victorxiao/p/13476413.html
Copyright © 2011-2022 走看看