操作系统-速记版(个人幕布导出)

  • 绪论
    • OS硬件模型:冯,诺伊曼模型5部分:内存(MDR和MAR),处理单元(ALU和TEMP),控制单元(PC程序计数器和IR指令寄存器), 输入,输出
    • OS的形成与发展
      • 手工操作阶段
      • 脱机输入输出(缓冲区或者spooling技术)
      • 批处理技术
      • 多道程序设计
    • OS基本类型
      • 技术:
        • 单道批处理技术
          • 解决人机矛盾中,CPU和I/O设备不匹配的矛盾中形成的
        • 多道批处理技术
          • 高效利用CPU的资源
          • 特点:多道,宏观上并行,微观上串行;
          • 优点:资源利用率高,系统吞吐量大;缺点:用户响应的时间比较长,不提供人机交互能力
      • 批处理OS:用户脱机使用计算机或者批处理
      • 分时OS:多路性,交互性,独占性
      • 实时OS:提供及时响应和高可靠性
      • 其他类型OS:嵌入式,集群,网路,分布式OS(统一,共享,透明,自治)
    • OS特征
      • 并发性
      • 共享性(互斥共享和同时访问)
      • 虚拟性
      • 异步性
    • OS分层
      • 内部层次结构
      • 软件分层
    • 操作系统的性能指标:
      • 资源利用率,吞吐量,周转时间,平均周转时间
    • 进程的处理机制
      • 持续透明,杀死或重新执行;等待或持续
    • 系统调用和函数调用的区别:
      • 系统调用比函数调用更加安全,但开销会增加
      • 系统启动时,堆栈切换和权限的切换,常用调用时无堆栈切换
      • X86中断处理:iret与ret,retf
        • iret弹出EFI,AGS和SS/ESP
        • ret弹出EIP
        • retf弹出CS(code Segement)与EIP
    • OS的体系结构
      • 模块组合结构
      • 层次结构
      • 微内核结构:适合分布式系统
  • 进程和线程管理(作业管理,处理器管理):控制,同步,通信,调度,死锁
    • 进程
      • 定义:执行中的文件,即程序和程序运行的状态
      • 特点:动态性,并发性,独立性,异步性和结构性
      • 组成:进程控制块(PCB),程序段和数据段
      • 进程转换图(省略)
      • 操作系统的内核功能:中断,时钟和原语相关
      • 进程间通信:
        • 共享存储器系统:内存
        • 消息传递系统
          • 定义:以消息为单位,直接利用一组通信命令(原语或者信号量)来实现通信
          • 直接通信:直接把消息发送给接收进程,接收进程从消息缓存队列中取得消息
          • 间接通信:发送给某个中间件实体,类似于程序中的MQ
        • 管道通信系统(pipe):
          • 类似于一个OS类
          • 特点:半双工通信,数据只能单向流动,只能存在于子父进程中,如linux的kill命令
          • 只有一个线程时可临时放弃,进程则不同放弃,原语也不可中断
          • 特征:
            • 管程类的数据只能被局限于管程内进行访问
            • 进程只有通过调用管程才能
            • 每次仅允许一个进程在管程内执行某个过程
        • 信号量(Semophore):
          • 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段;
          • OS是管理者,优先级高于进程
          • 信号量可表示系统资源二代数量,由Dijsktra提出
          • 主要由一个整型变量(sem)和两个原子(记录型信号量)操作
          • P, V->wait(S),signal(S);表示资源信号量,前者保证互斥,后者保证释放
          • P过程:
            • 检查s.value>=0是否成立
              • 成立:表示存在该类资源,则将该资源分配给进程,将s.value-1;
              • 不成立:表示该资源已经分配完毕,进程自我阻塞,放弃处理机;
          • V过程:
            • 释放一个资源,执行操作s.value+1
              • 执行后,若s.value>0,表示存在该资源;
              • s.value<=0表示信号量在等待队列中,仍然继续等待;
          • 实现进程同步:V(s)完成后进行释放,P(s)检查是否互斥;
          • 实现进程互斥:在一个进程中先P(s)进行加锁和进入临界区,结束和用V(s)进行释放相应的资源;
          • 实现前驱关系:用P(s)检测前者是否已经完成,用V(s)表示前者已经完成;
        • 信号(signal):与信号配合使用,用于通知接收进程某个事件已经发生
        • 套接字(socket):与其他通信机制不同的是,它可用于不同进程间的通信
      • 线程间通信(与同步互斥的方法有交叉):
        • 锁机制:
          • 互斥锁:提供了以排他方式防止数据结构被并发修改的方法
          • 条件变量:条件变量可以以原子的方式阻塞进程。对条件的测试是在互斥锁的保护下进行的,条件变量始终与互斥锁一起使用
          • 读写锁:允许多个线程同时读共享数据,而对写操作是互斥的
        • 信号量机制(Semaphone):包括无线线程信号量和命名线程信号量
        • 信号机制(Signal)类似进程间的信号处理,但是主要用于线程同步,所以线程没有数据通信机制
    • 作业:计算机完成某项任务而要求计算机所做的工作集合,可由多个进程组成,一般存在于批处理OS
    • 线程(多个组成进程):为了更好使多道程序并发,共享相同的地址空间。指令执行流量最小单位,CPU调度的基本单位。
    • 线程与进程的比较
      • 资源
        • 进程是资源分配单位,线程是CPU的调度单位;
        • 进程拥有完整资源平台,而线程只独立指令流执行的必要资源
      • 调度:三态状况几乎一致
      • 并发性:线程能减少并发的时空开销,共享内存和文件资源,可直接通信。
    • 线程的实现方式:
      • 多对多模型(轻量级进程)
        • 优点:开发者能够创建所用的用户级线程
        • 举例:SOLARIS2,IRIX,HP-UX
      • 多对一模型(用户-线程级)
        • 优点:线程在用户空间进行管理,效率相对较高
        • 缺点:只要一个用户阻塞则全部阻塞
        • 举例:POSIX,PTHREDS,Solaris Thread
      • 一对一模型(内核级线程)
        • 优点:相对独立,并发性好
        • 缺点:创建,终止和切换相对较大,创建用户线程,同时创建内核线程,以线程为单位耗费更多时间
        • 举例:Windows,Solaris,Linux
    • 不同os对线程的支持:
      • 单进程系统。MSDOS
      • 单进程多线程。PSOS,如路由器
      • 多进程系统。传统unix
      • 多进程系统。现代UNIX
    • 为什么PCB是进程存在的唯一标志?
      • PCB是一个能与其他进程并发执行的数据结构,因此,PCB是为了保证程序的并发执行能力。
    • 调度
      • 处理器的三级调度:高级调度(作业:一组进程)->中级调度(内存管理与扩充)->低级调度(运行频率很高)
      • 进程切换调度程序SWITCH主要任务:
        • 保存现运行进程的现场信息
        • 就绪队列中选择一个在内存且最优资格运行的进程,以免使其占用CPU
        • 为新选中的进程恢复现场
      • 调度的基本准则:CPU使用率,吞吐量,周转时间,等待时间,响应时间
      • 进程调度的方式:抢占式(剥夺),非抢占式(非剥夺)
      • 引起进程调度的原因:
        • 进程结束
        • 因某种原因:如I/O请求,P操作,阻塞原语
        • 执行完系统调用等系统程序后返回用户进程
        • 高优先级的进程进入
        • 分时系统中,分配给进程的时间片已用完
      • 带权周转时间 = 作业周转时间/作业实际运行时间
      • 典型调度算法:
        • 作业调度
          • 先来先服务FCFS
          • 短进程优先SPN
            • 优点:具有最优平均周转时间
            • 缺点:可以产生饥饿;预估未来
          • 最高相应比
            • 相应比 = 作业响应时间 /估计运行时间
            • 特点:不可抢占,关注进程的等待时间
          • 优先级调度算法
            • 静态优先级:按进程类确定,按作业的资源要求确定,按用户类型和要求确定
            • 动态优先级:根据进程占有CPU时间的长短来确定,根据就绪进程等待CPU时间的长短确定
        • 进程调度
          • 时间片轮RR
            • 时间片:分配处理机资源的时间基本单位
            • 时间片结束,按FCFS切换到下一个片
            • 缺点:时间片太长退化成FCFS,时间片太小产生大量切换影响系统的吞吐量,时间片长度合适
          • 多级反馈队列MFQ
            • 定义:就绪队列分成独立的队列,每一个队列一个策略,前台交互,后台批量处理
            • 固定优先级:无前台,无后台可能会导致饥饿
            • 时间片轮转:每个都得到一些队列分配
          • 公平共享调度 Fair Sharing Schedule
            • 一些用户组比其他更重要,保证不重要无法形成垄断
            • 未使用按比例,没有达到资源使用率目标优先级更高
        • 处理机调度:
          • 定义:每个处理器运行自己的程序,调度程序对共享资源的访问需要同步
          • 特点:多个处理机组成,处理机间可以共享
          • 动态进程分配:
            • 特点:可以任意分配,共享公共队列
            • 缺点:调度开销
            • 优点:负载均衡
    • 同步
      • 定义:不同进程之间存在着相互制约的关系,为了协调进程之间的相互制约关系,引入了进程同步的概念
      • 并发进程的正确性:共享性,不确定性,不可重现性,间歇性程序错误
      • 临界资源的访问过程
        • entry section //进入区
        • critical section //临界区
        • exit section //退出区
        • reminder section //剩余区
      • 临界资源:把一次仅允许一个进程使用的资源
      • 临界区:访问临界资源的那段程序
      • 同步互斥(互斥锁):OS在利用同步机制在并发的同时,保证一部分是原子操作;
      • 同步互斥应该遵循的原则:空闲让进,忙则等待,有限等待,让权等待;
      • 实现临界区域互斥的方法:
        • 1.硬件实现方法【中断屏蔽,硬件指令等方法】
          • 缺点:不满足让权等待;
            • 关闭中断,进程也无法停止,导致饥饿发生;
            • 临界区时间太长无法确定中断所需要的时间,要小心使用;
          • 优点:适用于任意数目的进程,不管是单处理机还是多处理机,简单容易验证其正确性,可以支持进程内有多个临界点,只需要给临界点设置一个布尔变量
        • 2.软件实现方法【单标算法->双标算法->双标后检查算法->Perterson算法】
          • 单标算法
            • 缺陷:空闲让进
            • 特点:设置一个标志位turn,每次执行前检测
            • 伪代码:一个
              • while(turn!=0){
                • critical section;
                • turn = 1;
                • }
              • remainder section
          • 双标算法
            • 缺陷:忙则等待,两个线程可以同时进入
            • 优点:不用交替进入,可持续使用
            • 特点:标志位:2个线程设置两个标志位,执行前检测其他线程标志位,执行前将自身设置为true,执行完成后将自身设置为false
            • 伪代码:Pi
              • while(flag[j]){
                • flag[i] = true;
                • critical section;
                • flag[i] = false;
                • }
              • remainder section;
          • 双标后检查
            • 缺陷:有限等待
            • 特点:将自身标志位设置为true的放在检测前
            • 伪代码:Pi
              • flag[i] = true;
              • while(flag[j]){
              • critical section;
              • flag[i] = false;
              • }
          • Peterson算法
            • 结合双标和单标
            • 单标用来控制进入turn,双标用来表示想进入flag[i]
            • 伪代码:Pi
            • flag[i] = TRUE; turn=j;
            • while(flag[j] && turn =j)
              • critical section
              • flag[i] = false;
              • }
            • remainder section
        • 3.高级抽象方法【信号量,锁】
          • 信号量(Semophone):
      • 经典同步问题:
        • 分析进程同步和进程互斥的方法与步骤:
          • 1.关系分析。找出进程数并分析关系,同步,互斥,前驱后进行改写
          • 2.整理思路。确定PV顺序
          • 3设置信号量。根据上面两步,设置需要的信号量,确定初值,完善整理。
        • 1.生产者-消费者问题
          • 关系分析:生产者与消费者对互斥访问是互斥关系;生产者生产后,消费者才能消费,是同步关系。
          • 两个进程:
          • 信号量设置:设置3个信号量。mutex作为互斥信号量,初始为1;full记录满缓冲数,初始0;empty记录对于当前的空缓冲区,记录为0,
          • 实现思路:
            • 生成者:produce->P(empty)->P(mutex)->add data to buffer->V(mutex)->V(full);
            • 消费者: P(full)->P(mutex)->get data from buffer ->V(mutex)->V(empty)->consume;
            • 注意:P(mutex)要紧挨着buffer不然会阻塞;
        • 2.读者-写者问题
          • 关系分析:读者和写者是互斥的,写者和读者也是互斥的,读者和读者无同步互斥问题
          • 整理思路: 写者和任何进程都是互斥的,读者则会占用一个文件
          • 信号量设置:设置3个信号量。count为计数器,初值为0;mutex为互斥信号量,rw用于保护读写互斥访问。##写者优先##将原来的rw分成两个信号量wmutex,cmutex,表示正在写或者等待写
          • 实现思路:
            • 读者优先:
              • writer:P(rw)->writting->V(rw)
              • reader:前半部分是为了检测并阻止写进程写,后半部分是读完后进行处理
              • P(mutex)->P(rw)->count+±>V(mutex)->Reading->P(mutex)->count-- ->V(rw)->V(mutex)
            • 写者优先(公平算法,更安全):
              • reader:P(wmutex)->P(mutex)->count+±>V(mutex)->V(wmutex)->reading->P(mutex)->count-- ->V(mutex)->V(cmutex);
              • writer:P(wmutex)->P(mutex)->writting->V(mutex)->V(wmutex);
        • 3.哲学家进餐问题
          • 关系分析:与贪心算法相反,在取筷时获得互斥信号量
          • 整理思路:如奇数号则先拿左筷子,偶数号则先拿右筷子
          • 信号量设置:设置一组信号量表示筷子chopsticks[i],和一个取筷子的信号量
          • 实现思路:P(mutex)-> P(chopsticks[i])(左筷子)->P(chopstick[(i+1)%5])(右筷子)->V(mutex)->V(chopsticks[i])->V(chopsticks[(i+1)%5])
        • 4.理发师问题
          • 关系分析:与生成者和消费者关系类似
          • 整理思路:顾客->若顾客人数大于n+1,则离开,否则等待,找凳子坐下->理发->离开,等待人数-1
          • 信号量设置:设置mutex为互斥信号量,bchair代表理发师信号量,wchair代表凳子的信号量,用于同步理发师与顾客的信号量,ready,finish同步理发师与顾客的信号量
    • 死锁
      • 原因:
        • 1.系统资源的竞争
        • 2.进程推进顺序非法
      • 必要条件:
        • 1.互斥条件
        • 2.不可剥夺条件
        • 3.请求和保持条件
        • 4.循环等待条件
      • 处理策略:破坏4个必要条件
        • 死锁预防:一次请求所有资源,资源剥夺,【突发式处理进程】
        • 死锁避免:寻找可能安全运行的顺序【不必剥夺】
          • 银行家算法:
            • 变量:
              • Avaliable可利用的最大资源,Max最大需求矩阵,Allocation分配矩阵,Need需求矩阵
            • 核心矩阵:Need[i][j]=Need[i][j]-Allocation[i][j]
            • 思路:Request<=Need -> Request <=Avaliable -> Avaliable -= Request ;Allocation += Request;Need -= Request -> (安全检查)->确认分配否则回滚
          • 安全检查算法:
            • 思路:Work= Avaliable, Finish = false->Need[i]<Work(确认重新分配)->Finish=true?->安全,不安全
        • 死锁检测及解除:定期检查死锁是否已经发生;
          • 死锁解除:
            • 1.资源剥夺法。挂起(suspend)某些进程,并抢占其资源
            • 2.撤销进程法。强制撤销部分,甚至全部进程并剥夺其资源
            • 3.进程回退法。让一个或多个回退志足以回避死锁的办法
  • 存储器管理(内存管理):内存分配,保护,和扩充
    • 内存管理
      • 内存管理方式:重定位(relocation),分段(segmention),分页(paging), 虚拟存储(virtual memory)
    • 交换和覆盖(Swapping & Overlay):
      • 定义:多道程序环境用来扩充内存的两种方法
      • 交换:
        • 主要介于外存和内存之间进行;
        • 把暂时不用的某个程序以及数据部分(或全部)从内存移到外存中去,以便于腾出不必要的内存空间;
        • 不要求程序员给出程序段之间的覆盖结构,而且交换主要在进程和作业之间;
        • 打破一个程序一旦进入主存运行直到结束的限制。
      • 覆盖:
        • 大的程序段进行的一系列覆盖,每个覆盖是相对独立的东西
    • 连续分配的管理方式:
      • 单一连续分配
        • 特点:适合单道程序,采用覆盖技术,不需要硬件支持,无法实现多道程序共享内存
        • 优点:简单,无外部碎片,可采用覆盖技术;【静态重定位装入】
        • 缺点:单用户,单任务的操作中,内部碎片,存储器的利用率极低。
      • 固定分区分配
        • 特点:通常采用静态重定位方式装入内存
        • 划分分区的方法:
          • 分区大小相等。缺乏灵活性,用一台计算机控制多个相同对象的场合。
          • 分区大小不等。
        • 内存分配:
          • 分区号:大小:地址(起始地址):状态 = 1:20KB :100KB:是否分配
      • 动态分区分配
        • 特点:用链接指针将内存中的空闲分区链接起来,形成空闲分区链块
        • 分区链头指针352KB -> 32KB ->520KB
        • 动态分区分配算法:
          • 首次适应算法(First Fit):每次都从最开始进行扫描
            • 优点:简单,保留了高地址部分大的空闲分区,无内部碎片
            • 缺点:外部碎片增加,分配大块变慢
          • 下次适应(Next Fit):也叫循环首次适应算法,下一次寻找分块自动从上一次结束时进行寻找
            • 优点:分块分区更加均匀,减少查找的开销;
            • 缺点:导致缺乏大的空闲分区
          • 最佳适应算法(Best Fit):先从小到大进行排序再分配
            • 优点:避免大的空闲分配被拆分
            • 缺点:五拆分难以利用
          • 最差适应算法(Worst Fit)
            • 优点:中等大小分配时效果最好
            • 缺点:释放过于缓慢
        • 分区的回收:在空闲分区表中检查是否有相邻的空闲分区,如有则合并成一个大的空闲分区
        • 四种情况:
          • 回收上下邻接的空闲分区
          • 回收下一个链接的空闲分区
          • 回收上下邻接一个空闲分区
          • 回收不与任何分区相邻的分区
        • 分区分配的动态管理:
          • 拼接技术:时机问题
            • 在某个分区回收时立即进行拼接,这样在主体中总是有一个连续的空闲区;
            • 当找不到足够大的空闲分区总是满足作业要求时进行拼接,这样可降低拼接的频率
          • 动态重定位分区分配技术
            • 紧凑(compaction): 所有的应用程序可动态重定位,等待状态以利用。
            • 分区兑换(swapping in/out):通过抢占并回收等待状态进程的分区,以增大可用内存空间
            • 优点:
              • 实现了多道程序共用主存;
              • 管理方案相对简单,不需要更多时间;
              • 实现存储保护的手段比较简单;
            • 缺点:
              • 主存利用不够充分,存在外部碎片;
              • 无法实现多进程共存存储器信息;
              • 无法实现主存的扩充,进程地址空间受实际存储空间的限制;
    • 非连续分配的设计:分页和分段
      • 分页
        • 分页表存储管理系统中的逻辑地址:页号:页内位移w = P:W
        • 物理地址:Pysical Address = 2^w x P + A(偏移地址)
        • 分页管理存在的2个问题:
          • 每次访存都要进行逻辑到物理地址的转换,过程必须足够快,否则会降低访存速度
          • 页表不能太大,否则内存利用率会降低;
        • 具有块表地址变换的机构:页表缓存(TLB,Translation Lookside Buffer)-> 直接页号和表号的映射
        • 地址变换的过程:
          • \1. LA(CPU)->Page(页表)->Cache, page与快表中的page进行比较;
          • 2.1 命中->直接形成物理地址PA,存取数据仅一次访存便可以实现;
          • 2.2 未命中 -> 进入将主存中的页表存入快表,访问2次
          • 顺序:TLB(LA只负责计算) -> 页表 ->cahce ->主存
        • 多级的目的在于建立索引,不用浪费主存储空间去存储无用的页表项,也不用盲目地顺序式查找页表。
        • 两级页表:为了查询方便,顶级页表最多只有一个页面
        • 分页为内存提供两种方式的保护:
          • 地址越界保护
          • 通过页表访问信息对内存提供保护
      • 分段
        • 目的:方便编程,信息共享和信息保护;通过指向相同的页表,可实现内存间的段共享;
        • 段式管理按照用户进程中的的自然划分逻辑空间
        • 定义:段号:段内偏移量=S:W;
        • PA=段起始地址+88(A),注意不是W
        • 分段保护和分页保护类似:
          • 一种是地址越界保护;
          • 另一种是存取控制保护;
          • 环保护机构(OS处于内核内,APP和S处于中间环)
        • 分段与分页的区别:
          • 分段是信息的物理单位,分页是信息的逻辑单位;
          • 分段的目的为了更好地满足用户的需要;分页的目的是系统管理所需,为了提高内存;
          • 段的长度不固定,不同的段有不同的段长;页的大小固定且系统确定;
          • 分段的作业地址空间是一维的,分页的地址空间是二维的;
          • 有内部碎片,无外部碎片;无内部碎片,有外部碎片
        • 分段和分页的优点:
          • 便于程序模块化处理和便于处理变换的DS;
          • 便于动态链接
          • 便于共享分段
          • 可实现虚拟存储,不受主存容量的控制
          • 无内部碎片
        • 分段和分页的缺点:
          • 处理机变换地址花费的时间,要为段提供附加存储空间
          • 减少碎片采用拼接技术;
          • 分段的最大尺寸受到主存可用限制
          • 有外部碎片
      • 段页式管理
        • 无外部碎片,访问一次需要经过三次(先获取段,再获取页,再获取块);
        • 段号S:页号P:页内偏移;
        • b(块号) = d(起始页)+P* 页表项大小(2^w),即分段和分页前两项的组合;
        • PA = b x 页表大小L + w;
        • 分页提高内存利用率,分段反映逻辑利于共享;
        • 优点:
          • 分散存储
          • 内存利用率较高
          • 便于代码和数据
          • 无外部碎片
        • 缺点 :
          • 访问效率下降
          • 一次访问转换成了三次访问,有内部碎片
    • 程序的局部性原理
      • 时间局部性原理
      • 空间局部性原理
      • 分支局部性原理:一条跳转指令的两项执行,很可能跳转到相同的内存位置
    • 虚拟内存
      • 原理:
        • 装载程序时,只将当前指令执行需要的页面或段载入内存;
        • 指令执行中时,处理器通知OS将相应页面或者段保存到虚拟存储;
      • 特征:多次性,对换性,虚拟性,离散性(程序离散性存储)
      • 常用技术:请求分页管理;请求分段管理,请求段页式管理
      • 需要的硬件支持:
        • 一定容量的内存和外存,页表机制。作为主要的数据结构;
        • 中断机构,当用户程序要访问的部分未调入内存,则产生中断;
        • 地址变换机构,逻辑地址到物理地址的变换
    • 请求分页式管理:
      • 定义;页号:物理块号:状态位P:访问位A:修改位A:外存地址
        • 页号:基本定义同基本分页存储管理
        • 访问位A:提供给置换算法
        • 修改位M:页面修改则不需写到外存
        • 外存地址:请求分页系统中的页表项
      • 缺页中断:当访问的页面不在内存时,便产生一个缺页中断
      • 与一般中断的两个明显区别:在指令执行期间产生和处理中断信号,属内部中断;一条指令在执行期间,可能产生多次缺页中断。
      • 地址变换机构:
        • 若找到要访问的页,便修改页表项中的访问位(写指令则还须重置修改位);然后利用页表项中给出的物理块号和页内地址形成物理地址;
        • 若未找到该页的页表项->内存中查找页表项-> 对比页表项中的状态位p,看该页是否已调入内存,未调入则产生缺页终端,请求外存调入内存中
        • 修改访问位和修改位进而产生物理地址【地址变换结束】
      • 在何处保存未被映射的页?
        • 交换空间(文件或磁盘)采用特殊格式存储未被映射的页面。
        • 寻址路径:TLB(Translation Lookaside Buffer,即页表缓存)->页表->cache->主存->外存
        • 1.考虑命中率和缺页率的有效访问时间的计算
          • 访问页在主存且存在块表中:E=e(查找快表时间)+t(形成物理地址并访问内存物理数据时间)
          • 访问页在主存中(不缺页)但是不存在于快表当中:EAT=e(快表)+t(页表)+e(修改)+t(快表
          • 访问页表不存在主存中,设缺页中断时间为t1:EAT=e(快表)+t(页表)+e(修改)+t(快表
        • 2.考虑缺页率和命中率的有效访问时间的计算
        • EAT=查找快表的时间+a x 形成物理地址并访问内存数据时间+(1-a)x [查找页表时间+f x (处理缺页中断时间+查找快表时间+形成物理地址并访问+(1-f)x(修改快表时间+形成物理地址并访问内存时间))]
        • 处理缺页中断时间;t1=p+ta+(1-p)t6;
        • e=0,a=0时,则有效访问时间为;EAT = t+ f(t1+t)+(1-f)t
        • EAT(有效访问时间)计算
          • 无快表,访问内存所需时间t,EAT= t+2t(对应物理地址访问);
          • 有快表,设表tlb的查找需要时间e,访问内存一次需要时间t,命中率为a,则有效访问时间分别为:查页表项的平均时间为ea+(t+e)(1-a);
          • EAT=ea+(t+e)(1-a)+t=2t+e-ta;
      • 请求调换页功能
      • 页面置换算法OPT, FIFO, LFU, LRU, CLOCK
        • 评价标准:
          • 尽可能减少页面的调入次数;
          • 把不再访问或短期页面调出;
        • OPT 所淘汰页面是以后永不使用的或者是长时间不再被访问的
        • FIFO 优先淘汰最早进入内存的页面,会产生bleady现象
        • LRU 选择最长时间未被引用的页面进行置换
        • CLOCK 原理:即最近未使用nru
          • 1.增加访问位,描述过去的访问时间;
          • 2.各页面形成环链表;
          • 3.指针指向最先调入;
          • 简单clock算法:
            • 入口->p所指页面访问位=0?
              • =0,选择淘汰掉该页面,后移;
              • !=0 ,将页面访问位置换位0,后移;
          • 改进clock算法:
            • 1.扫描过程中不改变访问位A,淘汰A=0,M=0;
            • 2.1不成立,则淘汰A=0,M=1,将所有a置为0
            • 3.2不成立,将所有a置为0重复
            • 4种类型页面:
              • a=0,m=0;未被访问,未被修改
              • a=0,m=1;未被访问,被修改
              • a=1,m=0;被访问,但未被修改
              • a=1,m=1;被访问也被修改
      • 页面分配策略
        • 物理块的分配策略:固定的分配局部置换,可变分配全局置换,可变分配局部置换;
        • 页面调入策略:
          • 请求调页策略:缺:每次调入一页,需花费较大的开销;
          • 预调页策略:缺:一次性调入多个相邻页面无法保证会被访问到;
        • 从何处调入:
          • 拥有足够的对换空间:全部从对换区调入所需页面
          • 缺少足够的对换空间:可能被修改的部分,换出时需调至对换区
          • unix方式:与进程有关的文件放在文件区,故未运行的应从文件区调入
    • Bleady现象:
      • 产生:缺页率随着分配的物理块数的增加而增加
      • 出现;被归类为堆栈算法的页面置换算法不可能出现, 如LRU,OPT
    • 抖动
      • 请求分页系统中的每个进程只能分配所需内存一部分
      • 预防抖动:
        • 局部置换原则
        • 引入工作集算法
          • 工作集原理:当局部随之稳定,工作集页随之稳定,位置改变,工作集则快速扩大或收缩过渡到另一稳定值
          • 调解常驻集
            • 若进程缺失率过高,常驻集增加;
            • 若缺失率过低,常驻集减少;
        • l=s准则(产生缺页平均时间与系统处理页时间相等),挂起若干进程
      • 缺页率=所需调入次数[OPT] / 共需要的次数[实际运行状况]
    • 虚拟地址如何转换为物理地址
      • 1.利用虚拟页号查找页表,在TLB中(从前向后取)
        • TLB+页内偏移->查找data cache
        • TLB形式:虚拟页号(TLB标记:TLB索引):页内
      • 2.利用虚拟页号查找TLB->页表
        • 页表+页内偏移->查找data cache表
      • 3.除以上两种产生缺页中断
  • 文件管理:文件管理,目录管理,逻辑结构,操作管理,文件保护
    • 文件系统:文件的基础
      • 有结构的文件:
        • 基本数据项:数据元素+字段
        • 组合数据项:若干基本数据项
      • 无结构的文件(由若干字符组成,可以看作是一个字符流,即流式文件)
      • 文件的分类:
        • 用途;系统文件,库文件,用户文件
        • 数据形式:源文件,目标文件,可执行文件
        • 文件存取控制:只读文件,读写文件,只执行文件
        • 组织形式和处理方式分类:普通文件,目录文件,特殊文件(系统中的各类I/O设备)
      • 文件的操作:
        • 创建文件,删除文件,读文件,写文件,截断文件,设置文件的读写位置
      • 其他文件操作:
        • 以提供有关文件操作的系统调用
        • 关于目录
      • 文件逻辑结构
        • 有结构的记录式文件
          • 顺序文件
            • 串结构;各记录的顺序与关键字无关
            • 顺序结构:所有记录按关键字排序,可递增排列,也可递减
          • 索引文件
          • 索引顺序文件
          • 直接文件和哈希文件
            • 优:提高存取速度;
            • 缺;可以出现冲突;
        • 无结构的流式文件
    • 目录结构
      • 主要功能;
        • 实现按名存取;
        • 提高对目录的检索速度;
        • 文件共享;
        • 允许文件重名;
        • FCB(文件控制块);
        • 基本信息类;
        • 存取控制信息类;
        • 通用信息类
      • 单级目录结构:
        • 目录结构:FCB1:FCB2:FCB3…:FCBn:数据文件;
        • 优点:简单且能实现目录管理的按名存取的基本功能;
        • 缺点:查找速度慢,不允许重名;不便于实现文件共享;
      • 两级目录结构:
        • 建立一个单独的用户目录UFD(User File Directory),在系统再建立一个文件目录MFD(Master File Directory);类似于 windows下的用户/文档
        • 优点:提高了检索目录的速度,可以解决重命名的问题,不同用户可使用不同的文件夹进行共享内存
        • 缺点:两级目录结构缺乏灵活性,不能对文件分类
      • 多级目录结构:
        • 结构:树形名+多级目录
        • 优点:就多级目录与两级目录相比而言,其查询速度更快,同时层次更加清晰,能够更加有效地进行文件的管理与保护
        • 缺点:在多级目录中查找一个文件,需按路径访问中间结点,这就增加了磁盘的访问速度,将影响查询速度
      • 图形目录结构:(无环图形目录结构)
        • 主目录分为:AB两个部分;A部分为头文件,另外一部分为偏移部分
        • 优点:方便文件共享,两个不同目录中的同一文件仅在磁盘上保存一份
        • 缺点:增加系统实现的难度
      • 目录查询技术:
        • 线性检索法:搜索目录,优点是编程简单,执行耗时
        • Hash法:hash数据结构,优点是减少搜索时间。缺点是:可能存在2个冲突文件的hash值相同
    • 文件共享:
      • 索引节点
        • 优点:能够实现文件的异名共享
        • 缺点;文件拥有者不能删除他人共享的文件;由于每一个共享文件具有文件名,遍历时可能多次遍历该共享文件
      • 符号链
        • 如果目录项标记为链,那么就获取真正文件(或目录的文件),再搜索目录。
        • 共享该文件的其他用户则只有该文件的路劲名,并不拥有其指向其索引节点的指针。
      • 语义:
        • 一致性语义,保证多进程能同时访问共享文件;
        • UNIX语义:用户可见和允许多人同时写入;
        • 会话语义:
          • AFS文件系统使用
            • 一旦用户打开文件的写不能同时被其他用户看见
            • 一旦文件关闭,对其修改只能从以后打开的会话所看见
        • 永久共享文件语义
          • 一旦创建者声明为共享,那么不能再被修改
    • 文件保护:
      • 作用;用来防止文件受到物理破坏和非法访问等
      • 访问类型:R,W,执行,ADD,Delete,列表清单,其他操作
      • 访问控制
      • 访问控制矩阵
      • 访问控制列表(ACL),用户权限表,密码
    • 文件系统与实现
      • 文件系统的层次结构图;
        • 应用程序->逻辑文件系统->文件组织模块->基本文件系统->I/o控制->设备
      • 文件实现
        • 外存分配方式
          • 连续分配
          • 链接分配
            • 隐式链接,必须含有指向链接文件第一个盘块号和最后一个盘块的指针。如jeep 9 25,表示9->16->1->10->25
            • 显式链接(类似于TlB表的Fat表)
          • 索引分配
            • 单索引分配
            • 两级索引分配
            • 混合索引分配
        • 文件记录的成组与分解
          • 优点:可以提高磁盘的空间利用率,减少磁盘的启动次数
          • 缺点;成组与分解操作必须使用主存中的缓冲区,从而增加系统开销
          • 空闲空表法:适于连续分配
          • 空闲快链法;当所有空闲盘区拉成一条空闲链,称为空闲盘块链,其中每个盘区上含有用于指示下一个空闲盘区的指针外,还应能指明本盘区大小的信息
          • 位示图法
            • 当其值为“0”时,表示对应的盘块空闲;
            • 当为"1时’,表示已分配
          • 成组链表法
            • 空闲盘块号栈的内容 N=100->S.free[99],前者指明区域和区域大小,后面是具体存储;
        • 文件需要被挂载才能被访问,未挂载的文件被挂载到挂载点上
      • 操作系统常见的文件系统类型
      • 磁盘文件系统: FAT->NTFS(>=64)
      • 数据库文件系统;可被寻址,如winFS
      • 日志文件系统;记录文件系统的修改
      • 网络分布式文件系统:NFS,SMB,AFS
      • 标准文件共享系统:NFS for unix
      • 特殊/虚拟文件系统;管道(pipe)
    • 磁盘的组织与管理:
      • 磁盘结构的信息:引导控制块,分区控制块,目录结构,文件控制块
      • 磁盘的访问时间计算Ta=Ts+Tr+Tt=m x n +s +1/2r+b/rN
        • Ts寻道时间
        • Tr旋转延迟时间
        • Tt传输时间
        • n磁道
        • s启动磁道时间
        • r转速
        • b读写字节数
        • N磁道上的字节数
      • 磁盘的管理:格式化,坏块
      • 提高磁盘io速度的方法:提前读,延迟写,优化物理盘分布,虚拟写
      • 磁盘调度算法:
        • FCFS:
        • SSTF最短寻道时间优先
        • SCAN电梯调度算法:单方向移动,沿着磁头去寻找离当前最近的
        • CSCAN:单方向移动,在移动到最末尾时,移动点从最开始进行开始
        • N-step-Scan N步扫描算法
          • 解决以上三个出现的磁头黏着现象
          • 主要步骤:
            • 将磁盘请求队列分成长度为n的子队列
            • 按fifo算法依次处理所有子队列
            • 扫描算法处理每个队列
        • F-Scan 简化N步扫描算法
          • 将队列数目减少到2个队列,交替使用算法
        • 磁盘缓存:磁盘扇区在内存中的缓存区,比虚拟存储复杂,且频率更低
        • 单缓存:io设备-输入-缓存区-传送-工作区
        • 双缓存:io设备-缓存1,工作区-缓存2
      • UFS多级索引分配
        • 文件头包含13个指针
        • 10th指向数据块
        • 11th指向索引块
        • 12th指向二级索引
        • 效果:提高了文件大小限制的阈值,动态分配数据块,方便文件扩展
      • 多磁盘
        • 通过并行提高吞吐量,通过冗余提高可靠性和可用性
        • RAID
          • 软件:OS内部的文件卷管理
          • 硬件:RAID硬件控制器(I/0)
        • RAID0:磁盘条带化,通过独立磁盘并行数据提高访问速度
        • RAID1:磁盘镜像:可靠成倍,读取线性增加
        • RAID3:基于位
        • RAID4/5:基于数据块,带校验的磁盘条带化
          • -4;带校验的磁盘条带化(允许从任意一个故障中恢复)
          • -5;带分布式校验的磁盘条带化(检验和分布式存储)
  • 设备管理(I/O管理):分配,传输控制,独立性
    • 分类
      • 使用特性:人机交互外部设备,存储设备,网络通信设备
      • 传输速率:低速设备,中速设备,高速设备
      • 信息交换单位:
        • 块设备:文件接口和访问定义
        • 字符设备:内存映射文件访问
    • IO控制方式
      • 程序直接方式
        • 设置标志位busy
        • busy=1表示输入尚未完成,busy=0表示将输入数据送入设备控制
        • 优:实现简单;缺:CPU的利用率相当低,因为CPU执行指令速度高出io几个数量级
      • 中断驱动方式
        • 提高了CPU的利用率
        • 在每台设备每输入输出一个数据都要求中断CPU,这样在一次数据传送的过程中,中断次数过多而耗费大量的CPU处理时间。
      • DMA方式
        • 主机与控制器之间成数据块的方式进行直接交换,必须在DMA控制器中设置。
        • 命令状态寄存器CR:用于接受IO有关控制信息或设备的状态
        • 内存地址寄存器MAR:输入时,它存放把数据从设备传送到内存的的起使目标地址
        • 数据寄存器DR:内存的启始目标地址,用于暂存从设备到内存,或内存到设备
        • 数据计数奇 DC:存放本次要传送的字节数
    • 通道控制方式:
      • 定义:专门用于负责输入输出工作的处理机制,它独立于CPU,有自己的指令系统。指令系统比较简单,一般至于数据传送指令,设备控制指令等
      • 字节多路通道
      • 数组选择通道:传输速率很高,只含有一个分配型的子通道
      • 数组多路通道:存放本次要传送的字节数
    • io通道与一般处理机的区别:无自己的内存,通道与CPU共享内存
    • Io通道与DMA控制方式的区别:DMA需要CPU来控制传输的数据大小,传输的内存位置,而通道控制方式中这些信息由通道控制,一个通道可以控制多个设备
    • IO软件层次结构
      • IO请求:用户层软件->设备独立性软件->设备驱动程序->中断处理程序
      • IO响应:当IO结束时唤醒驱动程序->建立设备寄存器,检查状态->命名,保护,阻塞,缓冲,分配->进行IO调用;格式化IO,Spooling等
      • 中断处理程序:唤醒被阻塞的驱动程序进程->保护被中断进程的CPU环境->分析中断原因->进行中断处理->恢复中断进程的现象
      • 设备处理程序:读抽象要求转换为具体要求->检查io请求的合法性->读出和检查设备的状态->传递必要参数->设置工作方式->启动IO设备
    • Io调度
    • 高速缓存与缓冲区
      • 缓冲的实现
        • 硬件缓冲器实现,但由于成本太高,除一些关键部位外,一般情况下不采用
        • 内存划出一块存储区,专门用来临时存放输入输出数据
      • 缓冲的分类
        • 单缓冲
        • 双缓冲
        • 循环缓冲:将双缓冲中特定区域进行循环
        • 缓冲池:缓冲池中缓冲区按使用状况可形成以下三个队列:空缓冲队列,装满输入数据的缓冲队列,装满输出数据的缓冲队列
        • 除以上外,有用于收容输入数据,提取输入数据,收容输出数据,提取输出数据的工作缓冲区
    • 设备分配
      • 设备管理中的数据结构
        • 设备控制表(DCT)
        • 设备控制器控制表(COCT):反映通道状态
        • 设备控制表(CHCT)
        • 系统设备表(SDT)
      • 设备分配策略
        • 使用性质:独享设备,共享设备,虚拟分配
        • 设备分享算法:先来先服务,优先级高者优先
        • 设备分享的安全性:
          • 安全分配方式
            • 一旦进程已经获得某种设备后便阻塞,使进程不可能请求任何资源
          • 不安全的分配方式
            • 仅当进程所请求设备被另一半进程占用才进入阻塞状态
      • 设备分配的独立性
        • 用户程序的设备独立性
          • 用户程序不直接使用物理设备名,而只能使用逻辑设备名。
          • 执行;逻辑设备名转换物理设备名
        • I/O软件的设备独立性
          • 除了直接与设备打交道外,其他部分的软件不依赖于硬件,I/0软件独立于设备,就可提高设备管道软件的设计效率
    • 设备分配程序
      • 单IO系统的设备分配:分配设备->分配设备控制器->分配通道;
      • 多IO系统的设备分配;
        • 1.根据设备类型,检索设备控制表,找到第一个空闲设备并检测分配设备的安全性,如安全,则分配,反之,插入该设备的等待队列。
        • 2.设备分配后,检索设备控制器控制表,找到第一个与已分配设备相连的空闲设备控制器,若无空闲,则返回步骤D查找下一个空闲设备。
        • 3.设备控制器分配后,同样查找与其相连的通道,找到第一个空闲通道,若无则返回2,查找下一个设备控制器,若有,则分配成功
    • 设备回收:设备使用完后对占有设备,设备控制器以及通道,系统进行回收,修改对应的数据结构,以便下次分配时进行使用
    • 假脱机技术(spooling)
      • 外部设备同时联机的操作
      • 特点:
        • 提高了IO的速度
        • 将独占设备改造为共享设备
        • 实现了虚拟设备的功能
        • 应用:打印机的多文件打印
    • CPU与设备之间的数据传输:
      • load/store传输指令
      • 直接访问内存(DMA):设备控制器可直接访问系统总线
    • 访问频率置换算法:短期用LRU,长期用LFU
    • 新区域(new session):引用计数不变,中间区域(middle section),旧区域(old section)(计数都+1)
  • 分布式系统:
    • 中间件(midware):标准接口和协议;一组驱动程序,应用编程接口或用于改善C/S之间的连接件
    • C/S分类:
      • 基于主机的处理(传统大型机环境)
      • 基于服务器的处理(易维护,提升效果不明显)
      • 基于客户的处理(抛开验证服务,其余都在本地进行)
      • 合作处理
        • 胖客户端 fat client
        • 瘦客户端 thin client
    • 中间件在C/S的结构
      • 表示服务
      • 应用服务
      • 应用逻辑
      • 中间件
      • 通信服务
      • os
      • 硬件平台
    • 集群:集群与对称多处理技术swap是相对的,这种方法提供了高性能和高可用性
    • 开发swap主要难点:故障管理,负载平衡,并行计算(并行编译,参数化计算)
  • 用户接口:命令接口,程序接口,图形接口
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值