当前位置: 首页 > Linux

SYS.BASE-操作系统笔记(理论篇)

时间:2023-04-06 03:33:51 Linux

操作系统:为应用程序提供资源集的基本抽象,并在竞争程序分配(资源管理)中有序地控制处理器、内存和其他I/O接口设备:时间复用,空间复用)。计算机硬件:CPU:在每个CPU基本周期中,从内存中取出指令-解码(以确定其类型和操作)-执行,等等。由于访问内存速度较慢,CPU中有寄存器:通用寄存器:用于保存关键变量和临时数据的专用寄存器:程序计数器:下一条指令的内存地址堆栈指针:程序状态字(PSW)在最顶端当前堆栈:条件码位(由比较指令设置)、CPU优先级、模式(用户模式或内核模式)和其他控制位。现代CP设计:流水线:有独立的取指单元、译码单元和执行单元,可以同时取多条指令。超标量:更高级,有多个执行单元(只要有一个执行单元空闲,检查缓冲区中是否还有指令可以处理,如果有,则从缓冲区中取出指令并执行。)模式:用户态:可以通过用户程序编码解决的内核态:如果不能编码,用户程序必须使用系统调用(中断)落入内核,调用操作系统。内部中断(exception)error(故障):保存触发异常的指令(例如:pagefaultexception)trap(陷阱):保存指向触发异常的指令的下一条指令(例如:debugging)external中断内存CPU寄存器1ns<1k:32位CPU为32\32,64位CPU为64\64缓存2ns4M主存10ns1-8GRAMROMFlashCMOS磁盘10ms1-4T低端硬盘速度50MB/s,高速硬盘160MB/sI/0设备I/0设备=设备控制器+设备本身设备控制器为操作系统提供了一个简单的接口。通常在控制器内是一个小型嵌入式计算机,它运行专门编程来执行这些任务的程序。大多数设备驱动程序(与控制器对话、发出命令和接收响应的软件)需要在内核模式下运行设备本身:设备本身有一个相对简单的接口,因为接口不能做太多并且已经被标准化使用.IO的实现方式:忙等待、中断、直接内存访问总线最重要的PCIe总线介绍:10+Gb/s是一种串行总线架构,取代了PCI传统的并行总线架构,通过一条叫做数据通路的链路将所有位一起传递的消息,很像网络数据包。PCIe2.0规范的16条数据通道提供64Gb/s的速度。升级到PCIe3.0后速度会翻倍,再升级到PCIe4.0再翻倍。CPU通过DDR3总线与内存通信通过PCIe总线与外围图形通信通过DMI总线与所有其他设备通信网络框架USB用于将所有慢速I/O设备(例如键盘和鼠标)连接到计算机USB1.012Mb/sUSB2.0480Mb/sUSB3.05Gb/sSCSI用于高速硬盘、扫描仪、服务器和工作站的高速总线640MB/s即插即用:系统自动收集I/O设备信息,集中分配中断级别和I/O地址,然后通知每张卡使用的值。引导计算机BIOS检查安装的RAM、键盘和其他基本设备的数量扫描PCIe和PCI总线并找到连接到它的所有设备尝试在CMOS内存中存储设备列表确定引导设备操作系统要求BIOS进行配置information检查就绪的设备驱动程序,操作系统将它们调用到内核中以创建任何需要的后台进程,启动登录程序或GUI操作系统基本特征并发:发生在同一时间段并行:发生在同一时刻(多程序处理宏并发,微观交替执行)共享互斥(如音响设备打印机)同时访问(磁盘文件)虚拟cpu:每个用户(进程)的“虚拟处理器”内存:每个进程占用的地址空间(指令+数据+栈)显示设备:多窗口或虚拟终端打印设备:将关键资源变成同时访问资源异步-准则:无论速度、寄存器和变量的当前值如何,结果相同。多道程序设计:(伪)并行运行的进程集合```CPUutilization=1-p^n一个进程等待I/0操作的时间与它在内存中停留的时间之比为pn称为多道程序设计。程序设计数```创建1)系统初始化。2)一个正在运行的程序执行一个系统调用来创建一个进程。3)用户请求创建一个新进程。4)批处理作业的初始化。终止1)正常退出(自愿)。2)错误退出(自愿)。3)严重错误(非自愿)。4)被其他进程杀死(非自愿)。阻塞块唤醒wakeupsuspendsuspendhierarchyUNIX进程及其所有子进程和后代一起组成一个进程组。用户发送信号后,每个进程都可以捕获信号,忽略信号,或者采取默认的动作,即被信号杀死。在整个系统中,所有的进程都属于一棵以init为根的树Windows所有进程都是同一个进程的状态和过渡状态:就绪(ready)执行(running)阻塞(blocked)withsuspension状态:Executing,ActiveReady,ProcessControlBlock中的ActiveBlocked,StandbyReady,StandstillBlocked信息ProcessControlBlockProcessorStateGeneralPurposeRegisterInstructionCounterpswSchedulingInformationProcessStatusPriority调度所需的信息(进程已经等待CPU时间,进程已经执行的总时间)控制信息程序、数据地址同步和通信(消息队列指针信号量)占用资源列表链接指针(进程PCB所在队列中下一个进程PCB的首地址)亲属关系子进程父进程标志线程概念轻量级实体:只有必需的资源,如:线程状态、寄存器上下文、栈独立调度调度的基本单元就绪阻塞执行三种基本状态创建和终止时间比进程短同进程线程切换时间比进程是short和系统开销可以并发执行共享进程资源(如内存文件)模型TCBPOSIX线程(IEEE1003.lc线程标准)线程包pthreadpthread_create创建新线程pthread_exit结束调用线程pthread_join等待特定线程退出pthread_yield释放CPU运行另一个线程pthread_attr_init创建并初始化一个线程的属性结构pthread_attr_destroy删除一个线程的属性结构实现用户态的优势和快速性(不需要落入内核,上下文切换,刷新内存缓存)它允许每个进程有自己定制的调度算法的缺点:如果核心阻塞了进程,那么进程中的所有线程都会被阻塞。同一进程中的两个线程不能同时在两个处理器上运行。在内核态,混合实现使用内核级线程,然后是用户级线程与部分或全部内核线程复用调度器激活机制目标:模拟内核线程的功能,通常只提供具有更好性能和更大灵活性的线程包可能在用户空间。弹出线程概念:消息的到来导致系统创建一个线程来处理消息。优点:快速创建。没有必须存储的寄存器。Stack进程间通信临界区:访问共享内存的程序片段。互斥:防止多个进程同时读写共享数据。一个好的并发方案需要满足:1)任意两个进程不能同时处于临界区。2)不应假设CPU的速度和地址。3)在临界区外运行的进程不得阻塞其他进程。4)进程不得无限期等待进入临界区。忙等待屏蔽中断的互斥方案:每个进程进入临界区后立即屏蔽所有中断,然后在离开之前打开中断,无法避免竞争锁变量:无法避免竞争严格轮换方式:自旋锁(spinlock)违反3)Peterson的解决方案:一种不需要严格旋转的软件互斥算法。TSL指令:需要硬件支持(testandsetlocktestandlock)XCHG:原子交换两个位置的内容缺点:优先级倒置问题睡眠(sleep)和唤醒(wakeup)进程间通信原语make时临界区不能进入后,生产者-消费者(producer-consumer)问题(boundedbuffer)信号量会被阻塞,以实现互斥或同步。down(P)和up(V)(分别是广义的sleep和wakeup)对一个数进行down操作,检查其值是否大于0,如果大于0则将其值减1(即用完保存的唤醒信号)并继续;如果该值为0,则进程会休眠,down操作还没有结束。检查值、修改批值以及可能的休眠都是作为单个不可分割的原子操作完成的。互斥信号量监视器的简化版本是一种高级同步原语。任何时候监视器中只有一个活动进程。编译器负责进入监视器的互斥量,通常是互斥量或信号量。引入条件变量和2个操作(waitsignal)保证进程不能运行时阻塞。局限性:级别太低,无法在少数编程语言之外使用。(分布式系统中的多个CPU各自拥有私有内存,这些原语是无效的)消息传输的原语有2个。send:调用向给定目标发送消息,receive:调用从给定源(或任何源,如果接收者不介意)接收消息。如果没有可用的消息,接收方可能会阻塞直到消息到达,或者立即返回一个错误代码。在进程组中使用屏障,以便除非所有进程都准备好进入下一阶段,否则任何进程都无法进入下一阶段。避免锁读-复制-更新(Read-Copy-Update,RCU),无锁地增删引用节点。调度调度时机:1、创建新进程后,需要决定是运行父进程还是子进程。2.当进程退出时。3.当一个进程阻塞在1/0和信号量上或其他原因阻塞时,必须选择另一个进程运行。4.调度算法当I/O中断发生时对所有系统进行分类和定位处理系统吞吐量-每小时最大作业数Turnaroundtime-从提交到终止的最短时间CPU利用率-保持CPU繁忙交互系统响应时间-快速响应请求平衡-满足用户期望实时系统满足最后期限-避免数据丢失可预测性-避免多媒体系统质量下降典型的调度算法批处理系统先到先得最短作业(进程、线程)优先级最短剩余时间优先级交互系统时间分片轮转调度算法优先级调度算法多级反馈队列调度算法最短过程保证调度抽签调度公平共享调度实时系统高响应比优先级调度算法策略与机制调度机制与调度策略分离,是调度算法参数化,可由用户设置更改。IPC问题哲学家用餐问题ReaderWriter问题内存管理地址空间地址空间:内存抽象,内存寻址的一个过程BaseAddressRegister:程序起始物理地址限制寄存器:ProgramLengthSwapTechnology:完成一个进程将其带入内存,让进程运行一段时间,然后将其保存回磁盘。空闲内存管理:在动态分配内存时,一般使用位图和空闲区链表来管理页表。虚拟地址=虚拟页号(高位)+偏移量(位置部分)加快分页过程需要考虑两个主要问题:1)虚拟地址到物理地址的映射必须非常快。2)如果虚拟地址空间很大,页表也会很大。解决方案:1)翻译检测缓冲区(associativememory/fasttable):为计算机设置一个小型硬件设备,将虚拟地址直接映射到物理地址,而不是访问页表。2)软件TLB管理:TLB足够大(比如64个条目),降低故障率。大内存的页表。多级页表Invertedpagetable:实际内存中的每个页框对应一个表项,而不是每个虚拟页对应一个表项。PageReplacementAlgorithmOptimalRecentlyNotUsedFirstInFirstOutSecondChanceClockLeastRecentlyUsed工作集模型:概念:分页系统会尝试跟踪一个进程的工作集,以确保其工作集在让其进入之前已在该进程中在内存中运行。算法:当页面错误发生时,淘汰一个不在工作集中的页面。工作集时钟不必扫描整个页表来确定要淘汰的页。所需的数据结构是以页框为元素的循环表。文件文件命名结构字节序;记录顺序;treedirectoryhierarchydirectorysystemfilesystem实现连续分配Linkedlistallocation利用内存中的表进行链表分配管理和优化磁盘空间管理。块大小从历史上看,文件系统已经将大小设置在1~4KB之间,但现在随着磁盘超过1TB,块大小仍然设置增加到64KB并接受浪费的磁盘空间更好地记录空闲块磁盘块列表每个块使用一个32位的位图每个块只使用一个二进制位来标识一个1TB的磁盘大约需要130,000个1KB的磁盘配额系统管理员分配每个用户拥有最大数量的文件和块,操作系统保证每个用户不超过他们分配的配额。备份1)从意外灾难中恢复。2)从错误操作中恢复。一致性块的一致性检查和文件的一致性检查性能缓存块预读减少磁盘臂移动碎片整理输入输出IO硬件原理IO设备分类:块设备:以固定大小的块存储信息,每个块都有自己的地址(磁盘)字符设备:以字符为单位发送或接收字符流。(PrinterNetworkInterfaceMouse)组成:机械部分(Device本身)电子部分(DeviceController/Adapter)任务:将串行比特流转换为字节块,并进行必要的纠错组成:几个寄存器用于与CPU,操作系统通信writeittosend|receive|open|close方法:内存映射I/O直接内存访问(DMA)可读写的数据缓冲区IO软件原理目标设备独立性:是访问任何I/O设备,无需指定设备预先统一命名:文件或设备的名称应该是简单的字符串或整数,与设备无关错误处理:尽可能接近硬件层面实现程序控制I/O:打印示例:1.软件首先在用户空间的一个缓冲区中组装一个字符串2.用户进程通过发出一个系统调用比如打开打印机来获得用于写入的打印机3.操作系统(通常)会将该字符串缓冲区复制到一个数组(比如asp)在内核空间4.操作系统检查打印机当前是否可用(轮询,忙等待)5.一旦打印机可用,操作系统将第一个字符复制到打印机的数据寄存器(内存)中映射1/0),激活打印机6.打印机的第二个寄存器指示其状态。当字符写入数据寄存器时,该操作将导致状态变为非就绪状态。处理当前字符时置位或置位。在状态寄存器中放置一个值,表示准备就绪7.重复5直到打印完成,然后返回给用户进程缺点:忙等待会效率低下中断驱动的I/O打印例子:当打印机打印完字符准备接收下一个A字符,就会产生中断。此中断将停止当前进程并保存其状态。缺点:中断发生在每个字符上DMA的I/O打印示例:让DMA控制器在不打扰CPU的情况下一次为打印机提供一个字符。DMA控制器是程序控制的I/O,DMA代替CPU完成所有工作以减少从每个字符打印一次到打印每个缓冲区一次的中断次数。IO软件层从上到下共4层:1.用户层IO软件2.设备无关操作系统软件3.设备驱动程序4.中断处理程序Disk磁盘臂调度算法1.先来先服务2.电梯算法Errorhandlingincontroller过程:检查每一个坏扇区,用备用扇区替换驱动程序中处理:发出recalibrate命令,将磁盘臂移到尽可能远的地方,并将控制器内部的当前柱面重置为0AdvancedDiskController相当强大具有足够资源的多核ARM处理器,可轻松运行Linux稳定内存稳定写入稳定读取崩溃恢复时钟时钟硬件2种类型:简单时钟:每个电压周期产生一个中断,频率为50Hz或60Hz3个组件:晶体振荡器、计数器和存储寄存器,1000MHz甚至更高频率的可编程时钟运行模式:完成模式:one-shotmode方波模式:方波模式时钟软件(时钟驱动程序)1)维护日时间。2)防止进程超时运行。3)计算CPU使用率。4)处理用户进程提出的报警系统调用。5)为系统本身的各个部分提供看门狗定时器。6)完成剖析、监控和统计收集。死锁资源可抢占资源:可以从拥有它的进程中抢占而没有任何副作用(例如内存)非抢占资源:它不能从拥有它的进程中抢占而不导致相关计算失败过去(例如如蓝光光盘刻录机)死锁与非抢占资源有关。定义:一个进程集中的每个进程都在等待一个只能由进程集中的其他进程引起的事件(资源)死锁。四个必要条件:1.互斥条件2.占有等待条件3.非抢占条件4.循环等待条件一种类型的多个资源的死锁检测:base-to-most比较(每个进程初始未标记。算法一开始会标记进程,进程被标记后,表示它们可以执行,不会进入死锁。当算法结束时,任何未标记的进程都是死锁进程。)死锁恢复利用抢占恢复利用回滚恢复避免死锁资源轨迹图单一资源银行家算法的安全和不安全状态多资源银行家算法死锁预防破坏四个必要条件之一其他问题两阶段锁定通信死锁活锁饥饿