美文网首页
《现代操作系统》——1引论

《现代操作系统》——1引论

作者: shijiatongxue | 来源:发表于2019-04-04 21:41 被阅读0次

    《计算机组成与体系结构》——7操作系统支持就已经知道,操作系统并不是和计算机一起出现的产物,然后呢,OS的主要任务就是任务的调度和存储的管理!因此,在学习的时候,应该把重点放在进程的理解和文件的管理上。

    • 1 引论
    • 2 进程与线程
    • 3 内存管理
    • 4 文件系统
    • 5 输入/输出
    • 6 死锁

    其他的章节(7-13)可以继续了解。


    1.2 操作系统的历史

    • 第一代(1945~1955):真空管和穿孔卡片
      机器语言
    • 第二代(1955~1965):晶体管和批处理系统
      FORTRAN或汇编语言
    • 第三代(1965~1980):集成电路和多道程序设计
      IBM 360是第一个采用(小规模)集成电路的主流机型,与采用分立晶体管制造的第二代计算机相比,其性能/价格比有很大提高。在7094上0,若当前作业因等待磁带或其他I/O操作而暂停,CPU就只能简单地踏步直到该I/O完成。解决办法是将内存分为几个部分,每一部分存放不同的作业,当一个作业等待I/O操作完成时,另一个作业可以使用CPU。
    • 第四代(1980年至今):个人计算机
      x86代表所有使用指令集体系结构家族的现代处理器,这类处理器的源头可以追溯到20世纪70年代的8086芯片。
    • 第五代(1990年至今):移动计算机

    1.3 计算机硬件简介

    处理器

    【图】
    每个CPU都有一套可执行的专门指令集。所以,x86处理器不能执行ARM程序,而ARM处理器也不能执行x86程序。
    除了用来保存变量和临时结果的通用寄存器外,多数计算机还有一些对程序员可见的专用寄存器,其中之一时程序计数器,它保存了将要取出的下一条指令的内存地址。在指令取出之后,程序计数器就被更新以便指向后继的指令。
    另一个寄存器时堆栈指针,它指向内存中当前栈的顶端。该栈包含了每个执行过程的栈帧。一个过程的栈帧中保存了有关的输入参数、局部变量以及那些没有保存在寄存器的临时变量。
    还有程序状态字(PSW)寄存器。这个寄存器包含了条件码位、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户程序通常突入整个PSW,但是,只对其中的少量字段写入。在系统调用和I/O中,PSW的作用很重要。

    流水线与超标量:在超变量中,有多个执行单元,而不是单个流水线。

    多数CPU都有两种模式,内核态用户态
    用户在用户态下运行,仅允许执行整个指令集的一个子集和访问所有功能的一个子集。以搬而言,在用户态中有关I/O和内存保护的所有指令是禁止的。当然,将PSW中的模式位设置成内核态也是禁止的。为了从操作系统中获得服务,用户程序必须使用系统调用以陷入内核并调用操作系统。

    两种架构的4核芯片.png

    多线程和多核芯片
    多线程允许CPU保持两个不同的线程状态,然后在纳秒级的时间尺度内来回切换。多线程并不是真正的并行处理!在一个时刻只有一个进程在运行,但是线程的切换时间则减少那纳秒的数量级。
    除了多线程,还出现了包含2个或4个完整处理其或内核的CPU芯片。
    核心数量更多的GPU,它们擅长处理大量并行的简单计算,比如在图像应用中渲染多边形,它们不太能圣人串行任务,并且很难编程。虽然GPU对操作系统很有用,但操作系统本身不太可能运行在GPU上。

    存储器

    典型的存储层次结构.png

    寄存器与CPU相同的材料制成,所以和CPU一样快。其典型的存储容量是,在32位CPU中为32*32位,而在6位CPU中为64*64位(1KB)。

    高速缓存,它多数由硬件控制。主存被分割成高速缓存行,其典型大小为64字节。当某一个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中。如果是,称为高速缓存命中,缓存满足了请求,就不需要通过总线把访问请求送往主存。高速缓存命中通常需要两个时钟周期(cycle)

    L1缓存用来存储已解码的指令,它总是在CPU内部,多数芯片安排由第二个L1缓存,用来存储那些频繁使用的数据字。另外,往往还设计由第二级缓存,用来存放进来使用过的若干兆字节的内存字。两个级别的缓存差别在于,对L1缓存的访问,不存在任何延时;而对L2缓存的访问会延时1或2个时钟周期。

    主存(RAM),P.S.也就是我们说的内存。

    4核芯片.png

    只读存储器(ROM),用于启动计算机的引导加载模块就放在ROM中。

    另外,还有最新出现的闪存,它也是非易失性的,但是可以擦除和重写。它的性能介于主存和磁盘之间。
    CMOS存储器,用于保持当前时间和日期。它由一块小电池驱动,即使电脑没有上电,时间仍然可以正确更新。之所以采用CMOS是因为它消耗的电能非常少。

    磁盘

    机械臂从一个柱面移到相邻的柱面大约需要1ms。而随机一道一个柱面的典型时间为5ms-10ms,其具体时间取决于驱动器。一旦磁臂到达正确的磁道上,驱动器必须等待所需的扇区旋转到磁头之下,这就增加了5ms-10ms的时延,其具体时延取决于驱动器的转速。

    所以整个时延=寻道时延+旋转时延+读(写)时延

    与磁盘有点类似的是固态硬盘,它的存储介质是闪存。

    虚拟内存机制:有时我们需要把程序放到磁盘上,而将主存作为一种缓存,用来保存最频繁使用的部分程序。这时需要快速地映像内存地址,以便把程序生成的地址转换为有关字节在RAM中的物理地址。该映射由CPU中的一个称为存储器管理单元(MMU)的部件来完成。

    I/O设备

    I/O设备一般包括两个部分:设备控制器和设备本身。SATA(Serial ATA,串行高级技术附件)磁盘控制器可以适配任何一种SATA磁盘。
    专门与控制器对话,发出命令并接收相应的软件,称为设备驱动程序。一般情况下,必须把设备驱动程序装入操作系统中,这样它可在核心态运行。(具体的装入方式和中断处理请看书1.3.4 p17。)

    总线

    一个大型x86系统的结构.png

    在传统的PCI总线上,一个32位数据通过32条并行的导线发送。与之相反,PCIe使用串行总线架构,通过一条被称为数据链路传递集合了所有位的一条消息,这非常像网络包。
    USB:集中式总线,其根设备没1ms轮询一次I/O设备,看是否有信息收发。

    1.5 操作系统概念

    时刻记得:操作系统的两个任务,任务调度和文件管理。

    文件

    进程和文件层次都可以组织成树状结构,但这两种树状结构有不少不同之处。一般进程的树状结构层次不深(很少超过三层),而文件的树状结构常常多达四层、五层或更多层。进程树层次结构是暂时的,通常最多存在几分钟,而目录层次则可能存在数年之久。

    在读写文件之前,首先要打开文件,检查其访问权限。若权限许可,系统会返回一个小整数,称作文件描述符,供后续操作使用。若禁止访问,系统则返回一个错误码。

    本小节讨论的最后一个特性既与进程有关也与文件有关:管道。管道(pipe)是一种虚文件,它可以连接两个进程。当进程A想对进程B发送数据时,它把数据写到管道上,仿佛管道就是输出文件一样。

    由管道连接的两个进程.png

    保护

    UNIX操作系统通过对每个为念赋予一个9位的二进制保护码,对UNIX中的文件实现保护。该保护代码有3个字段,一个用于所有者,一个用于所有者同组的其他成员,一个用于其他人。这些位就是知名的rwx位。对于一个目录来说,x的含义是允许查询。

    shell

    操作系统是进行系统调用的代码。shell本身不是操作系统的一部分,但它体现了许多操作系统的特性,并很好地说明了系统调用的具体用法。

    用户登陆时,同时启动了一个shell。它以终端作为标准输入和标准输出。首先显示提示符(如$),提示用户shell正在等待接收命令。假如用户键入
    $ date

    shell创建一个子进程,并运行date程序作为子进程。在该子进程运行期间,shell等待它结束。在子进程结束后,shell再次显示提示符,并等待下一行输入。

    现在,许多个人计算机使用GUI。事实上,GUI与shell类似,GUI只是运行在操作系统顶部的程序。

    1.6 系统调用

    记住下列事项是有益的。任何单CPU计算机一次只能执行一条指令。如果一个进程正在用户态运行一个用户程序,并且需要一个系统服务,比如从一个文件读数据,那么它就必须执行一个陷阱或系统调用指令,将控制转移到操作系统。操作系统接着通过参数检查找出所需要的调用进程。然后,它执行系统调用,并把控制返回给在系统调用后面跟随的指令。

    用于进程管理的系统调用

    在UNIX中的进程将其存储空间划分为三段:正文段(如程序代码)、数据段(如变量)以及堆栈。数据向上增长而堆栈向下增长。

    进程.png

    用于文件管理的系统调用

    • open 打开一个文件
    • close 关闭文件
    • read 读
    • write 写
    • lseek 移动文件指针
    • stat 返回文件信息

    用于目录管理的系统调用

    • mkdir
    • rmdir
    • link 允许同一个文件以两个或多个名称出现
    • mount 允许将两个文件系统合并为一个

    各种系统调用

    • chdir
    • chmod 改变文件的权限
    • kill
    • time 以秒为单位返回当前时间

    习题

    1. 内核态和用户态有哪些区别?
      答:大多数现代CPU提供两种执行模式:内核态和用户态。 CPU可以执行其指令集中的每条指令,并在内核态下执行时使用硬件的各种功能。 但是用户态只能执行部分指令,执行时仅使用部分功能。追yi流年
      把操作系统的核心功能放在内核态,保证系统可以稳健运行,而其他功能放在用户态,方便调用而且不容易造成系统的崩溃。

    x. 陷阱指令、中断和异常的区别?
    答:操作系统中陷阱,中断和异常的区别

    相关文章

      网友评论

          本文标题:《现代操作系统》——1引论

          本文链接:https://www.haomeiwen.com/subject/qifsbqtx.html