操作系统第一章 概论

看到英文ppt有点麻,所以提前过一下,顺便提高一下英语水平,不然到时候都不知道老师在说啥。

基本就是翻译ppt,让自己有个大概理解。

纯纯是闲的无聊,一个月就把想玩的游戏打完了。

前面跳了,就是讲国内现状。

1.1 操作系统功能

  • 充当用户和计算机硬件之间的中介( intermediary )程序

    • 控制应用程序的执行
    • 应用程序/用户和硬件之间的接口
  • 操作系统的目的( objectives )

    • 方便
    • 效率
    • 发展
  • 计算机系统组成

    • 从上到下
      • 用户
      • 应用程序
      • 系统程序
      • 操作系统
      • 硬件
    • 55.png

1.1.1 用户视角

  • 根据使用界面的不同而不同

  • 不同操作系统的设计目的不同

    • PC
    • Mainframe,minicomputer
    • Workstation
    • Handheld
    • Embedded

1.1.2 系统视角

  • 资源分配器

    • 调配所有资源
    • 在冲突中决定,让计算机得以高效公平运行
  • 控制程序

    • 控制用户程序和I/O设备的行为,以防对计算机的错误和不当使用
    • OS放弃对处理器的控制来执行其他程序。(?

1.1.3 定义OS

没有统一定义,ppt上倒是中文和英文各给了一遍。

  • Kernel 内核

    • 操作系统是一直在计算机上跑的程序
    • 操作系统的一部分( portion )在主存中
    • 包含最常用的功能
    • 也可以称为nucleus( 核 )
  • 操作系统是计算机系统中的一个系统软件, 是一些程序模块的集合, 它们能以尽量有效、合理的方式组织和管理计算机的软硬件资源, 合理地组织计算机的工作流程,控制程序的执行, 向用户提供各种服务功能, 使得 用户能够灵活、方便、有效的使用计算机, 使整个计算机系统能高效地运行。

1.2 计算机系统组成

  • 用户可见寄存器

    • 允许程序员通过优化寄存器使用来最小化主存占用
  • 控制和状态寄存器

    • 处理器用来控制处理器的操作
    • 操作系统进程用来控制程序的执行
  • 用户可见寄存器

    • 也许可以被机器语言引用
    • 对所有程序可用——应用程序和系统程序
    • 寄存器种类
      • 数据
      • 地址
  • 控制和状态寄存器

    • PC
    • IR
    • PSW
    • 条件码或标志
  • 指令类型

    • 处理器——存储器
    • 处理器——I/O
    • 数据处理
    • 控制
  • 计算机启动

    • 引导程序( bootstrap program )在开机和重启时加载
      • 通常存储在ROM或者EEPPROM,也就是一般认为的固件( firmware )
      • 初始化系统的所有方面
      • 定位操作系统内核并将其装载到内存中并且开始执行
    • OS开始执行首个进程,比如说“init”,然后等待其他事件发生
      • 硬件发生中断
      • 软件发生中断

1.2.1 计算机系统操作

  • I/O和CPU可以并发运行

  • 每个设备控制器控制特定的设备类型

  • 每个设备控制器都有一个本地缓存

  • CPU把数据从主存移到本地缓存或者从本地缓存移到主存

  • 设备控制器通过中断( interrupt )告诉CPU操作结束。

  • 中断

    • 是正常运行流程中的中断
    • 提升处理效率
    • 允许处理器在一个I/O操作在执行时去执行其他指令
    • 由进程之外的事件产生该中断,同时中断结束后进程可恢复
  • 中断种类( 程序引起的中断称为陷阱( trap ),其余的称为interrupt )

    • 程序
      • 算数( arithmetic )溢出
      • 除零
      • 执行非法指令
      • 访问了其他用户端的存储空间
    • 计时器
    • I/O
    • 硬件故障
  • trap是由错误或者用户请求引起的中断。

  • 中断的常见功能

    • 中断将控制转移给中断服务程序( interrupt service routine )。这个过程经由中断向量( interrupt vector )实现,其中包含了所有中断处理程序的起始地址。

      也就是中断处理程序的指针表。一般存储在低地址内存(前100左右)

    • 中断体系结构也必须保存中断指令的的地址。
    • 处理一个中断时,此时传入的中断会被禁用( disabled ),防止中断丢失。
    • 操作系统是由中断驱动的。
  • 中断处理

    • 操作系统通过保存CPU寄存器和PC来保护CPU状态
    • 确定已发生的中断类型
      • Polling 轮询
      • vectored interrupt system 向量中断系统
    • 单独的代码块决定了对于每种中断采取什么操作。
  • 中断周期

    • 55.png
    • 处理器检测有无中断
    • 如果没有中断,那么就获取现在运行程序的下一条指令。
    • 如果发生中断,则停止当前程序,执行中断处理程序

1.2.2 存储结构

  • 内存( Main memory )
    • 处理器可以直接访问的唯一一个大型存储区域。
    • 一般也称为随机访问内存( RAM ),一般采用动态随机访问内存实现。( DRAM )
    • 内存是易失性存储设备,掉电会失去所有内容。
  • 辅存( Secondary storage )
    • 内存的扩展,提供较大的非易失性存储空间。
  • 磁盘( Maganetic disks )
    • 覆盖有磁性记录材料的刚性金属或玻璃板。
      • 磁盘表面在逻辑上被划分为轨道,而轨道又被细分为扇区。
      • 磁盘控制器确定设备和计算机之间的逻辑交互。
  • 磁带
    • 用于备份( backup ),用于存储不常用的信息。
  • 存储器体系
    • 存储系统按层次结构分层组织。
      • 速度
      • 开销
      • 易失性( Volatility )
    • 易失性存储器在断电或者移动设备后丢失其存储内容
    • 设计计算机存储系统的原则
      • 只使用必要的昂贵内存。
      • 提供尽可能多的廉价、非易失性内存。
  • 存储设备体系
    • 寄存器
    • cache
    • 主存( main memory )
    • 固态磁盘( solid-state disk )
      • 一种是运行时将数据存储在一个大的DRAM数组上。其有一个隐藏磁盘和一个作为备份电源的电池。外部掉电后,启动备份电源,将RAM上的内容移动到磁盘中。外部有电时,将磁盘里的内容移动到RAM上。
      • 一种是FLASH闪存,比DRAM慢但是不需要电源来保存内容
      • 一种是NVRAM,即具有备用电池的DRAM。存储和DRAM一样快,且是非易失的(只要电源有电)。
    • 磁盘/硬盘( magnetic disk )
    • 光盘( optical disk )
    • 磁带( magnetic tapes )

1.2.3 I/O结构

  • 编程I/O
  • 中断驱动I/O
    • 同步
    • 异步
  • DMA

每个通用计算机一般由一个CPU和多个设备控制器组成。

  • I/O操作
    • 设备控制器
      • 局部缓存空间
      • 一组特定用途的寄存器
      • 在设备和其本地缓存空间中移动数据。
    • 设备驱动
      • 每个设备控制器都有一个。
      • 为设备提供一个统一的接口。
    • I/O操作
      • 设备驱动程序加载设备控制器的适当寄存器
      • 设备控制器检查这些寄存器的内容来决定采取什么操作
      • 设备控制器在缓存和设备间传输数据
      • 一旦完成,设备控制器设置状态或者通过中断通知驱动程序
      • 设备驱动程序返回控制到OS,如果是读操作,则也会返回相应数据。

编程I/O

  • I/O结构:编程I/O
    • I/O模块执行操作,而非处理器。
    • 在I/O状态寄存器中设置合适的比特。
    • 没有中断发生。
    • 处理器会检查状态,直到操作完成为止(轮询,一直问)。
    • 读取字符。

中断驱动I/O

  • I/O结构:中断驱动I/O
    • 通知I/O由读写事件。
    • 当I/O准备好交换数据的时候,处理器中断
    • 在I/O准备好之前,处理器可以去做其他工作
    • 等待是不必要的
    • 消耗了大量的处理器时间,因为每个字符读或写都要经过处理器。
  • 中断驱动I/O
    • 同步I/O
      • 在I/O启动之后,只有I/O操作完成之后,控制权才会返回给用户程序。
    • 异步I/O
      • I/O启动之后,不需要等待I/O操作完成,也可以将控制返回给用户程序。
    • 为了提高CPU和I/O的利用率,我们需要
      • System call —— 要求操作系统允许用户等待I/O操作完成。
      • Device-status table —— 包含每个I/O设备的条目,以指示其类型、地址和状态。
    • 操作系统索引到I/O设备表中,以确定设备状态以及修改包括中断在内的表条目

DMA

  • I/O结构:直接内存访问( DMA )
    • 直接以块为单位在本地缓存和内存中传输数据。
    • 用于能够以接近存储器的速度传输信息的高速I/O设备。
    • 在为这种I/O设备设置好缓冲、指针和计数器之后,设备控制器可在本地缓冲和内存之间传送整块的数据,
    • 每个块只产生一个中断
      • 在任务完成时发送一个中断
      • 处理器只在传输的开始和结束阶段有所参与
    • CPU在设备控制器执行DMA传输时完成其他工作。

通道

然后PPT里在这三个方式后面还用中文补了个通道方式。
不知道考不考反正放上来。

  • I/O结构:通道控制方式

    • 是DMA方式的发展,进一步减少了CPU的干预。
    • 完成一组数据块的读(或写)操作之后产生一次中断。
    • 实现了CPU、通道和I/O设备三者的并行操作。
    • CPU对通道的管理是通过I/O指令实现的。
      • I/O指令属于特权指令,仅能由操作系统使用。
      • 在I/O指令中需指定通道号、设备号、以及通道程序的内存地址。
    • 当CPU要完成一组相关的读(或写)操作及有关控制时,只需向I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首址和要访问的I/O设备,通道接到该指令后,通过执行通道程序便可完成CPU指定的I/O任务。
    • 通道指令也称为通道命令字(CCW, ChannelCommand Word)
      • 对设备进行初始化、读、写、查询、转移等。
      • 使用CCW可以编写对各种不同设备进行管理和控制的通道程序。
      • 一个通道可以以分时方式同时执行几个通道程序。
      • 通道指令在进程要求数据时自动生成。
    • 指令格式:OP P R 计数 内存地址
      • OP:读、写、或控制。
      • P:通道程序结束标志。P=’1’,本条指令为最后一条指令。
      • R:记录结束标志。
        • R=’0’,本指令与下一条指令所处理的数据属于同一条记录
        • R=’1’,本指令是处理某记录的最后一条指令。
      • 计数:本条指令所要处理数据的字节数
      • 内存地址:
        • 读操作:数据要写入的内存地址。
        • 写操作:要写出的数据在内存中的起始地址。
  • 现代计算机系统

    • 高端系统采用交换而不是总线结构。
    • 多个组件可以与其他组件同时对话,而不是竞争公共总线的周期,此时DMA更为有效。
    • 55.png

1.3 计算机系统的体系结构

单处理器系统

  • 单处理器系统( Single-processor system )
    • 一个主CPU执行一个通用指令集。
    • 专用处理器执行优先指令集,不执行用户进程。
      • 键盘和磁盘控制器。
      • I/O处理器(在大型机上)。

多处理器系统

  • 多处理器系统/并行系统( Multiprocessor system / parallel system )
    • 两个或多个紧密通信的CPU,共享计算机总线,有时共享始终,内存和外设等。
    • 多处理可使系统的内存访问模型,从均匀内存访问( UMA )到非均匀内存访问( NUMA )。对UMA,CPU访问RAM的所需时间是相同的;而对UNMA,有的内存访问的所需时间更多,会降低性能。
    • 优势
      • 增加吞吐量,经济效益。增加可靠性。
    • 非对称处理( Asymmetric multiprocessing )
      • 每个处理器都有特定的任务
      • 一个主处理器( Boss processor )控制系统
      • 其他的从属处理器( Slave processors )向主处理器要任务或者做预定的任务
      • 主处理器给从属处理器制定和分配任务。
    • 对称多处理( Symmetric multiprocessing – SMP )
      • 每个处理器都参与完成操作系统的所有任务。
      • 所有处理器对等。
      • 每个处理器都有自己的寄存器集。也有私有或本地缓存。
    • 多核处理器( Multi-core CPUs )
      • 多个计算核集成到单个芯片。
      • 多处理器芯片。
      • 比多个单核处理器效率更高。

        多核为多处理器系统,但并不是所有多处理器系统都是多核的。

    • 刀片服务器( blade servers )
      • 多处理器板,I/O板和网络板全部置于同一机箱。
      • 每个刀片处理器板可以独立启动并运行在各自的操作系统。
      • 一些刀片服务器板也是多处理器的。
      • 本质上,这些服务器是由多个独立的多处理器系统组成。

集群系统

  • 集群系统( Clustered system )
    • 集群计算机共享存储,并且采用LAN连接或者更快的内部连接。
    • 用来提供高可用性( high-availavility )服务。
    • 集群软件层在集群节点上运行。
    • 非对称集群
      • 一台机器处于热备份模式,而另一台运行应用程序。
      • 热备份模式的机器只监视活动服务器,而不做其他事。
    • 对称集群
      • 两个或多个主机都运行应用程序,并相互监视。
      • 由于充分利用了现有硬件,因此多个应用程序可供执行的时候,这种结构更为高效。
    • 并行集群
    • WAN集群

1.4 操作系统的结构

单道程序设计

书上没提到单道程序设计,ppt上有。

  • 单道程序设计( Uniprogramming )

    • 55.png
    • 问题:低执行力
      • I/O和CPU的运行时间不能重叠
      • I/O非常慢。处理器必须等待I/O指令完成后才能完成。
    • 解决方法:离线I/O操作
      • 从磁带将作业加载到内存中。
      • 读卡和印线离线进行。
      • 55.png
  • 假脱机( Spooling )

    • Simultaneous Peripheral Operation On Line
    • 将一个作业的I/O操作与另一个操作的计算重叠。
      • 在执行一个作业的时候,OS将下一个作业从读卡器读取到磁盘(作业队列),同时将上一个作业的打印输出从磁盘输出到打印机。
    • 作业池( Job pool )
      • 允许操作系统选择下一个运行的作业以增加CPU利用率的数据结构。

多道程序设计

  • 多道程序设计( Multiprogramming )
    • 单个程序不能保持CPU和I/O设备一直处于忙状态
    • 多道程序设计通过安排作业(编码和数据)使得CPU总有一个执行作业,从而提高CPU利用率。
    • 内存的作业集是作业池的一个子集。
    • 在内存的作业集中,OS可以选择执行作业。
    • 当该作业需要等待某个任务的时候,例如说I/O操作的完成,OS就会切换到另一个作业。
    • 当作业需要等待I/O操作,处理器可以切换到另一个作业。
    • 有两个程序的多道程序设计:
      55.png
    • 有三个程序的多道程序设计:
      55.png

分时系统

  • 分时系统( Time sharing systems )

    • 分时系统(或多任务)是多道程序设计的自然延伸。CPU还是通过切换作业来执行多个作业,但是由于切换频率很高,用户可以在程序运行时与其交互( interactive )。
      • 回复时间应当较短,通常小于1秒。
      • 每个用户至少有一个程序在内存中——进程( process )。
      • 如果多个作业可以加载到内存中,同时内存太小无法容纳所有这些作业,那么系统就做出选择——作业调度( job scheduling )
      • 多个任务同时等待执行,那么系统应当做出选择——CPU调度( CPU scheduling )
      • 如果进程不适合内存,那么就将其交换到磁盘中运行——swapper
      • 允许一个进程不必完全在内存中——虚拟内存( virtual memory )
    • 用多道程序设计去处理多个交互任务。
    • CPU在内存和磁盘上的几个作业中进行复用
      • 处理器的时间由多个用户共享。
      • CPU只分配给在内存中的作业。
    • 一个作业可能在内存和磁盘之间交换
    • 许多用户同时共享计算机
      • 提供了用户与系统之间的在线通信。
      • 多个用户通过终端同时访问系统。
      • 当操作系统完成一个命令的执行时,它会不是从读卡器,而是从用户的键盘
    • 在线系统的数据和代码对用户必须是可获取的。
  • 分时系统:特性

    • I/O进程由系统提供。
    • 内存管理。系统必须将内存分配给多个任务。
    • 虚拟内存。允许执行作业不必完全在内存中。
    • 磁盘管理。必须提供驻留在磁盘集合上的文件系统。
    • CPU调度。并发执行、作业同步和通信的机制,避免死锁。
    • 资源分配。

1.5 操作系统的执行

  • 现代操作系统都是中断驱动的。
  • 中断是由硬件驱动的。
  • 软件错误或者请求可能生成陷阱( trap )或者异常( exception )。
    • 除零,操作系统服务请求。
  • 其他进程问题包括无限循环、进程相互修改甚至修改操作系统本身。

1.5.1 双重模式和多重模式的执行

  • 双重模式可以让OS保护其本身以及其他系统组件。

    • 采用硬件支持,用于区分至少两种模式
      • 用户模式。进行用户操作。
      • 监视模式(也有内核模式,系统模式或者特权模式)。进行系统操作。
    • 硬件提供模式位( mode bit )
      • 内核模式(0),用户模式(1)
      • 用以区分操作系统执行的任务和用户执行的任务。
      • 一些指令被划分为特权指令( privileged instruction ),只能在内核模式下执行。
      • 请求操作系统服务时( system call ),从用户模式切换到内核模式。
    • 当中断或者错误( fault )发生时,硬件切换到内核模式。

      内核模式通过设置用户模式位来切换到用户模式

    55.png

  • 从用户模式转到内核模式

    • 使用定时器来防止死循环/进程占用资源,或不调用系统服务或不将控制权返还给操作系统。
      • 定时器在指定周期后中断计算机。
      • OS递减定时器。
      • 当定时器为0时产生一个中断。
      • 在调度进程(控制权交给用户)前进行设置,以便在时间到达后重新获得控制权,或终止超过了分配时间的程序。
      • 修改定时器内容的指令是特权指令。

1.6 进程管理

  • 进程是一个在执行中的程序,是系统上的工作,是可以分配给处理器并在处理器上执行的实体。
  • 进程需要一定资源来完成任务。
  • 进程需要归还所有可重用的资源。
  • 单线程进程有一个程序计数器,指定了下一个所要执行的指令。
  • 多线程的进程每一个线程有一个PC
  • 系统在一个或者多个CPU上有多个线程同时运行。
  • OS负责进程管理的以下活动
    • CPU上调度进程和线程
    • 创建和删除用户进程和系统进程
    • 挂起和重启进程
    • 提供进程同步机制
    • 提供进程通信机制

1.7 内存管理

  • 内存是现代计算机系统执行的中心。
    • 所有数据在处理前都在内存。
    • 所有指令为了处理都存储在内存中。
  • CPU所能直接寻址和访问的唯一的大容量存储器。
  • 内存管理决定哪些内容在内存中
    • 用来优化CPU利用率和计算机对用户的响应速度。
  • 内存管理活动
    • 记录内存中哪部分在使用以及被谁使用。
    • 决定哪些进程(或其部分)会调入或调出内存。
    • 根据需要分配和释放内存空间。

1.8 存储管理

1.8.1 文件系统管理

操作系统管理大容量存储介质,如磁盘和磁带,并控制它们,以实现文件这一抽象概念。再者,为了方便使用,文件可组织成目录。

  • OS活动
    • 创建和删除文件
    • 创建和删除目录
    • 提供文件和目录的操作原语
    • 映射文件到外存
    • 备份文件到稳定存储介质

1.8.2 大容量存储器管理

操作系统负责有关硬盘管理的以下活动∶

  • 空闲空间管理
  • 存储空间分配
  • 硬盘调度

计算机运行的最终速度与硬盘子系统的速度和管理该子系统的算法有很大关系。

虽然有的存储相比外存速度更慢、价格更低(或许容量更大),但是也有许多用处,如备份磁盘的数据、存储很少使用的数据、保存长期的档案等。典型的三级存储(tertiary storage)设备包括∶磁带驱动器及其磁带、CD/DVD驱动器及光盘等。这些介质(磁带和光盘)分为一次写多次读(Write-Once Read-Many-times,WORM)和读-写(Read-Write,RW)。

三级存储对系统性能并不关键,但也应管理好。有的操作系统直接管理,还有的留给应用程序来管理。
操作系统的功能可以包括∶

  • 安装和卸载设备媒介,
  • 为进程互斥使用而分配和释放设备,
  • 以及将数据从二级存储移动到三级存储。

1.8.3 高速缓存

高速缓存(caching)有时也简称为缓存,是计算机系统的一条重要原理。

它的工作原理如下∶信息通常保存在一个存储系统中(如内存),使用时,它会被临时复制到更快存储系统,即高速缓存;当需要特定信息时,首先检查它是否处于高速缓存,如果是,可以直接使用高速缓存的信息,如果否,就使用位于源地的信息,同时将其复制到高速缓存以便下次再用。

内存可以视为外存的最后一个cache。

在层次存储结构中,同一数据可能出现在存储系统的不同层次上。

例如,位于文件B的整数A需要加1,而文件B位于磁盘。加1操作这样进行∶先进行I/O操作以将A所在的块调入内存。之后,A被复制到高速缓存和内部寄存器。这样,A的副本出现在多个地方∶磁盘上、内存中、高速缓存中、内部寄存器中(见图1-12)。

5.png

对于不同的计算机环境,类似情况产生的问题导致**高速缓存一致性( cache coherence )**十分必要。

  • 单进程
  • 多任务
  • 多处理器
  • 分布式

1.8.4 I/O系统

操作系统的目的之一是为用户隐藏具体硬件设备的特性。

I/O子系统包括以下几个组件∶

  • 包括缓冲、高速缓存和假脱机的内存管理组件。
  • 设备驱动器的通用接口。
  • 特定硬件设备的驱动程序。

1.9 保护和安全

保护(protection)是一种机制,用于控制进程或用户访问计算机系统的资源。

防止系统不受外部或内部的攻击是安全(security)的工作。

保护和安全要求系统能够区分所有用户。
大多数的操作系统采用一个列表,以便维护用户名称及其关联用户标识(User ID,UID)。按照Windows的说法,这称为安全ID(Secure ID,SID)。这些数字ID对每个用户来说是唯一的,当一个用户登录到系统时,认证阶段确定用户的合适ID。该用户ID与所有该用户的进程和线程相关联。当该ID需要为用户可读时,它就会通过用户名称列表而转换成用户名称。
有些环境希望区分用户集合而非单个用户。例如,UNIX系统的某个文件的所有者可对文件进行所有操作,而有些选定的用户集合只能读取文件。为此,需要定义一个组名称以及属于该组的用户集。组功能的实现可以采用一个系统级的列表,以维护组名称和组标识(group identifier)。一个用户可以属于一个或多个组,这取决于操作系统的设计决策。用户的组ID也包含在每个相关的进程和线程中。
对于正常系统使用,用户ID和组ID就足够了。不过,用户有时需要升级特权(escalate privilege),来获得某个活动的额外许可。例如,在UNIX系统中,程序的setuid属性允许按程序文件所有者的用户ID而不是当前的用户ID来运行该程序,该进程会按有效UID (effective UID)运行,直至它关掉额外特权或终止。

后面的ppt和教材对不上,不写了。