赞
踩
Command-Line(CLI),GraphicsUserInterface(GUI),Batch命令行(CLI)、图形用户界面(GUI)、批处理
manipulation操纵
facilities设施
Accounting核算
parameter参数
Statusinformation状态信息
implementaregistryimplementaregistry
storeandretrieveconfigurationinformation存储和检索配置信息
overhead开销
Interprocesses进程间
insequentialfashion顺序
操作系统接口:系统调用(异步或同步,源于应用程序,持续对用户应用程序透明)、异常(同步,源于出错,杀死或重新执行程序命令)、中断(异步,源于外设,等待和持续)
*操作系统结构:
用户服务:
用户接口(UI):CLI,GUI,Batch(批处理)Programexecution:程序加载到存储并执行
I/O操作 File-systemmanipulation文件系统操作 通信:进程间交换信息差错检测
操作系统对自己提供的服务:资源收集、统计:计算用户使用的计算机资源、安全保护:保护设计系统资源的访问受控
用户操作系统接口:命令接口:CLI,GUI,程序接口:系统调用
fetches(获取)invokes(调用)
系统调用:系统为用户程序提供的接口(API),用户调用后通过访管指令进入核心态,使用特权指令完成调用的操作(中断),用户不了解实现细节。
系统调用一个相关的数字,接口根据这些数字维护一个列表索引。
将参数传递到操作系统的方法:寄存器、内存中的存储块或表、堆栈
系统调用类型:进程控制、文件管理、设备管理、信息维护(getpid,sleep)、通信、保护
系统程序(SystemPrograms):提供开发程序和执行程序的环境,可以被分为Filemanipulation、Statusinformation、Filemodification
Programminglanguagesupport、Programloadingandexecution、Communications
操作系统结构:简单结构、分层结构(0层时硬件,最高层时用户接口,每层都是一个模块,每一层使用更底层的功能)
、微内核结构(C/S模式,小内核,内核实现调度,虚存,进程间通信,通过消息传递提供通信支持多道程序和分布式系统,扩展性强、安全、通信开销大)
、模块(面向对象方法,核心组件独立,通过接口和其他交流,可加载内核模块)
虚拟机:采用分层方法,将操作系统内核和硬件都当做硬件对待,虚拟机提供提供和底层硬件相同的接口,操作系统产生进程具有自己的处理器和虚拟内存
的错觉,每个客户提供基础计算机的副本
虚拟机优点:提供对系统资源的全面保护;虚拟机之间相互独立;有利于系统开发,不会中断正常的操作系统
SystemBoot(系统启动):引导,通过架子内核启动计算机;(bootstrapprogram)引导程序,ROM中的一段代码,能够定位内核并将其加载到内存
引导程序可以执行诊断计算机状态、初始化系统各个方面(CPU寄存器到设备控制器、主存)、启动操作系统
*进程:
程序并发执行特点:1.间断性(竞争资源)2.失去封闭性(结果不仅依赖于初始条件,还依赖于程序执行的相对速度)3.不可再现性
进程:动态程序:静态一个程序可以对应多个进程
进程:栈、PC、数据(程序、数据、PCB)
分类:用户、系统进程
区别:1.资源使用,系统进程有独占资源,优先权高,用户进程通过系统服务的请求手段竞争资源2.IO操作;系统进程可以直接IO操作3.CPU状态:
系统进程在管态下活动,用户进程在用户态
executablefile可执行文件
五种状态:new、ready、waiting、running、terminated
进程调度队列:作业队列(系统众多有进程)、就绪队列(调入主存等待执行的进程)、设备队列(等待IO设备的进程)
调度程序:1.Long-termscheduler:哪些进程进入就绪队列,不频繁,控制程序的并发程度2.Short-termscheduler:选择下一部执行的进程并分配CPU,
频繁
长期调度程序控制I/O密集型进程和CPU绑定进程的进程组合
ContextSwitch(上下文切换):cpu寄存器、进程状态、内存管理信息
processor处理器
进程操作(控制):创建、删除、阻塞(blocked因为信号量或者IO)、唤醒(阻塞到就绪态)、挂起、活动
duplicate(重复)
进程间通信(IPC):共享内存(不受OS控制),信息传递
IndirectCommunication(间接沟通)parallel(并行)
线程:基本的cpu执行单元,CPU的分配单元,进程是分配资源的单元
共享资源:代码,数据,OS资源;独有资源:PC,寄存器、栈;
多线程:一个进程中包含有多个线程,线程的创建代价小,上下文切换代价小,共享进程内的所有资源
优点:该进程序结构、并行能力提高、资源共享容易、多线程利用率增加
分类:内核级线程:直接由OS支持,线程是cpu的调度单位,有数量限制,上下文切换开销大,消耗内核资源,使用简单
用户级线程:在内核之上,通过库调用在用户态,有关线程管理的工作全部由应用程序实现,内核感受不到线程,切换方便,无数量限制,使用复杂
多线程模型:多对一(并发度不高,一个用户级线程阻塞全都阻塞)、一对一(开销大、数量限制)、多对多、twolevelmodel(支持一对一和多对多,线
程在用户空间完成操作)
SignalHandling(信号处理)
线程池(ThreadPools):进程启动时创建多个线程,放入等待工作的池中;反应速度快,限制任意一点存在的线程数;
线程有时候需要独有的数据
Activethread-executing:onanKthread
Runnablethread-waitingforanKthread
lightweightprocess(LWP):twolevelmodels中内核级线程和用户级线程之间的数据结构(内核支持),每个内核线程对应一个lwp
SchedulerActivations(调度程序激活)是内核和用户级线程之间通信的方案,采用upcalls(回调)机制和运行在LWP(虚拟)处理器上
的upcallhandler(回调处理程序)进行通信
*CPU调度:
获得最大的CPU利用率、多道程序运行
CPU–I/OBurstCycle(突发周期):进程执行周期包括了cpu’执行和IO等待
Dispatcher(调度)模块:控制CPU进行短作业选择调度;关联到上下文切换、切换到用户态、在用户程序中跳到合适位置
Dispatchlatency(调度延迟):停止一个进程并开始另一个进程的消耗
Throughput(吞吐量):单位时间完成进程数;Turnaroundtime(周转时间):执行完进程的时间;
Waitingtime(等待时间):总等待时间;Responsetime(响应时间):从请求到开始执行的时间;
FCFS:先来先服务
SJF:短作业优先,分为抢占式和非抢占式,最短等待时间;饥饿、无法预计运行时间
Priorityscheduling:优先级,可能引起饥饿
RoundRobin(RR):时间片,需要考虑上下文切换的开销,选择合适的时间片
MultilevelQueue:多级队列,每个队列都有其自己的调度算法
MultilevelFeedbackQueue:进程在多个队列之间移动
响应比=(响应时间+服务时间)/(服务时间)
用户级和内核级线程之间的区别:
多对一和多对多模型,线程库将用户级线程安排在LWP上运行,称为进程争用范围(PCS),因为调度争用在进程内;
调度到可用CPU上的内核线程是系统争用范围(SCS)–系统中所有线程之间的竞争
API允许在线程创建期间指定PCS或SCS
多处理器调度:Homogeneousprocessors(同构处理器):多个处理器、Asymmetricmultiprocessing(非对称多处理器):只有一个处理器访问系统
数据结构,减轻了数据共享的需求
Symmetricmultiprocessing(SMP)(对称多处理):每个进程都在通用队列中,或者每个都有自己的私有队列;
Processoraffinity(处理器关联性):正在运行的进程和处理器之间存在关联;软关联性:不保证一定不走;硬关联性:进程一定不能迁移;
SMP需要保持负载平衡,平衡繁忙和空闲的处理器;
多核处理器:多个处理器内核放在同一(chip)芯片上,速度快功耗低;利用(memorystall)内存停滞在另一个线程上取得进展,同时进行内存检索(
利用存储器的延迟,当发生内存检索时另一个线程运行)
Real-timesystems(实时系统):正确性不仅包括逻辑正确性,还包括产生结果的时间;
两种类型:Heardreal-timesystems:延迟致命、Softreal-timesystems:延迟不致命
RTOSKernel(实时操作系统内核):RTOS内核提供了一个抽象层,该抽象层向应用软件隐藏了应用软件应在其上运行的处理器/处理器集的硬件详细信息
TaskManagement(任务管理):提供作业调度:控制软件执行、使程序及时响应;
非实时系统:非抢占式;RTOS使用抢占式作业调度;
作业切换:通过构成任务切换的以下步骤:
确定当前正在运行的任务是否应继续运行。
确定接下来应运行的任务。
保存已停止的任务的环境(以便以后可以继续)。
设置接下来将运行的任务的运行环境。
允许所选任务运行。
RealtimeScheduling(实时调度):进程具有优先级,抢占式调度;
NestedPreemption(嵌套抢断)
RTOSTaskModel(实时操作系统任务模型):每个任务一个三元组:(执行时间、周期、截止日期)
典型算法:EDF:EarliestDeadlineFirst:Priority=deadline、RMS:rate-monotonicscheduling(多周期性实时处理):Priority=1/rate
DispatchLatency(调度延迟):冲突由两部分组成:1.抢占正在内核中运行的进程2.释放低优先级进程中高优先级需要的资源
Priorityinversion(优先级反转):高优先级等待低优先完成;优先级反转的持续时间取决于其他不相关任务的不可预测行为;
解决方法:Priority-inheritanceprotocol(优先级继承协议),访问高优先级进程需要的资源的进程继承高优先级进程的优先级,访问完成后还原
*进程同步:
原因:对共享数据的并发访问可能会导致数据不一致,保持数据一致性需要确保流程有序执行
mutualexclusion(互斥访问)
软件实现方法:1.单标志法(不满足有空让进,需要交替访问)2.双标志法(不满足互斥)3.双标志后检查法(满足互斥,可能导致死锁)
4.peterson方法(p77)
要求:1.互斥2.有空让进3.有限等待(唯一性标识、能不能访问、想不想访问)
原子操作:TestAndSet:先赋值true,后返回Swap:设置key值代表是否想访问,与lock交换
原子操作优点:可处理任意数目进程;缺点:忙等,可能导致忙等,一些进程不能被选中,死锁;
禁用中断:进入临界区禁用中断,离开临界区开启中断;
缺点:中断禁用后线程无法被停止,可能导致其他线程饥饿,如果临界区可以任意长,无法限制响应中断所需时间;只能禁用该CPU自己的中断,无法控制其他CPU
spinlock:自旋锁
criticalsections(临界区)Starvation(饥饿)
Synchronization(同步)
生产者消费者问题:emptynfull0mutex1
omitted(省略)
信号量:同步(不同进程),互斥(一个进程)
同步信号量要放在互斥信号量之前,否则会deadlock
经典同步问题:
1.有界缓冲(mutex、full=0,empty=0)
2.读者写者(mutex保护count,rw是读写锁,可以再加一个信号量使读者写者平权)
3.哲学家就餐:数据结构描述哲学家状态、互斥访问临界资源;唤醒左邻右舍
mechanism(机制)
管程(monitors):过程、变量、数据结构的集合;把对共享资源的操作封装起来;一个时刻只有一个进程在管程中;
使用条件变量(阻塞原因),每个条件变量保存了一个等待队列
conditionvariables(条件变量)monitor=alock+theconditionvariablesassociatedwiththatlock
Implementation(实现)
*死锁:
产生必要条件:1.互斥2.请求且保持3.不可剥夺4.循环等待
asynchronous(异步)voluntarily(资源)Ostrichpolicy(鸵鸟策略)throughput(吞吐量)resuming(恢复)
dynamically(动态地)priori(先验)granted(批予)
资源分配图不形成循环时才进行分配
死锁预防:破坏四个必要条件1.互斥,将可共享变为不可共享2.不可剥夺;可以剥夺3.持有且等待:一次性申请完,不允许持有并申请4.循环等待:给
资源强制排序,按顺序进行申请
死锁避免:
safestate(安全状态):按照某种方法分配资源,最终可以使每个进程都成功完成;完成的序列叫安全序列;安全状态一定没有死锁;不安全状态不一定
会死锁;
避免算法1.资源分配图(不形成环时才能分配)2.银行家算法(available、need、allocation、max):(SafetyAlgorithm)安全性算法
死锁检测和解除:允许死锁、检测死锁算法(O(n2))、恢复方案:资源剥夺、撤销进程、进程回退
何时检测:1.进程要求但无法立即分配时2.时间频率3.CPU利用率低于阈值时(0.4)
恢复方法:终止所有死锁进程、一次终止一个进程直到消除死锁循环、优先次序:已经计算的时间、完成的时间、已使用资源;选择最小耗费的;
Rollback:返回某个安全状态;但是可能会导致饥饿,即某些进程总是被选择做重新开始(被剥夺资源)的进程
*内存管理:os对内存的划分和动态分配
BaseandLimitRegisters(基址、界地址寄存器)
地址的变化:源程序:符号地址、编译后:相对地址、链接或加载后:绝对地址
MMU:运行时将虚拟地址转换到物理地址,进程执行时重定位寄存器加地址后再送入内存
动态加载:调用之前不会加载,提高内存利用率;
动态链接:链接推迟到执行时间
Swapping(交换):内存和辅存之间进行换入换出
连续分配:用户进程和系统两部分;Baseregister和limitregister记录低址和高址
FixedPartitioning(固定分区):内碎片
DynamicPartitioning(动态分区):BF,WF,FF,NF(nextfit):从上次分配的地方开始搜索
ExternalFragmentation、InternalFragmentation(外部内部碎片)compaction(紧缩)
Paging(分页):进程的内存空间不连续分配;对内存进行分块,固定块大小,物理内存中叫frames逻辑内存叫pages;
页表:逻辑地址到物理地址的转换(页号到物理块号);存储在主存;Page-tablebaseregister(PTBR,页表位置)Page-tablelengthregister(PRLR
,页表长度);一次数据访问需要两次内存访问,一次页表,一次数据
TLB(快表):访问速度快,命中后只需一次内存访问
AssociativeMemory(相联存储):并行搜索,是否命中决定访问内存次数
内存保护:Valid-invalidbit在页表项中代表是否是合法页(本进程的页)
共享页:代码共享但是数据私有
页表的结构:HierarchicalPaging(分层分页)、HashedPageTables(哈希页表,链表存储物理块号)、InvertedPageTables(倒置页表,逻辑地址
和页表中存储进程信息)
段:按照用户进程中的自然段划分逻辑空间;段表项(段号、基址、段长度),逻辑地址(段号、段内偏移)
段保护:有效无效位、读写执行权
段页式存储:先分段后分页,逻辑地址(段号、页号、偏移)
relocationregister(重定位寄存器)Rollout,rollin(换出,换入)
虚拟存储:
Localityofreference(程序的局部性原理)Subroutine(子程序)
*虚存:内存和磁盘结合,增大了逻辑空间
Localityofreference程序的局部性原理时间、空间局部性
constrained(约束)Valid-InvalidBit(有效无效位):表示页面是否在内存中
缺页中断:在指令执行期间处理中断,其他一般在指令执行完成后,处理完中断后重新执行指令,并且一条指令可能多次中断
页错误:1.页面未调入内存2.违反权限(读写权限,内核/用户权限)3.错误的访问地址
Copy-on-Write(写时复制):发生修改时才进行页面复制,否则页面共享,新复制的页面对执行写操作的进程是私有的,对其他共享写时复制页面的进程
是不可见的。
pagereplacement(页面置换)modifyordirtybit(程序是否被修改)
页面置换:1.寻找需要帧的位置2.寻找空闲帧3.若无空闲帧则寻找被置换帧4.更新页表5.程序返回到发生缺页中断的指令重新执行
算法:1.FIFObelady异常,moreframesmorefaults2.OPT:最长时间不会再次使用3.LRU:最长时间未被使用(计数器.堆栈.近似)
4.二次机会(循环队列)(clock算法):初始使用位置为1,每使用一次也置为1,移除指针指向时1变0,指向0时换出;改进后有两个标志位一个代表最近是
否使用过,一个代表是否修改过,做法是尽量不移出最近使用过的;
5.LFU,MFU:最常用和最不常用(需要计数)
虚存特性:离散性、多次性、对换性、虚拟性
fixed(固定)
驻留集:每个进程分配的帧数
固定分配(平均、加权)、优先级分配(页面置换时可以置换中断少的进程的页面)
局部置换(local)、全局置换(global)抖动(Thrashing,颠簸):进程忙于页面置换调入调出
overlap(重叠)
Working-Set(工作集):一个进程当前正在使用的页框集合;
具体实现:1.检查R位,若为1,设置访问时间为当前时间,R位设为02.若R为0,检查上次时间是否在当前时间减T之前,若是则将该界面置换,如果不是,
记录当前所有被扫描过的页里访问时间的最小值,重复步骤1、2
Memory-MappedFiles:将文件调入内存处理,比readwrite’开销小,也可以被多个进程读写,类似于共享内存
内核内存:Buddysystem:2的幂次方大小、Slaballocation
Prepaging预调页:减少进程开始时的页面错误
最优页面大小:P=sqrt(2se)
s—平均进程规模e—页表项长度
I/Ointerlock(I/O联锁):将页面锁定,不允许换出
*文件系统:
是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用。
文件是指一组带标识(标识即文件名)的、在逻辑上有完整意义的信息项的序列
FileAttributes(文件属性)usagemonitoring(使用情况监控)extension(拓展名)Truncate(截断)
文件创建:1.检查文件名合法2.申请空闲目录项3.分配磁盘空间4.返回删除文件:1.目录查找2释放分配空间3.删除目录项
文件删除:1.在目录中搜索文件2.释放文件空间3.清除目录中的文件入口
文件读取:1.根据打开文件使得文件描述符,找到相应FCB2.将文件的逻辑块号转换为物理块号3.申请缓冲区4.启动磁盘IO操作将磁盘块读入缓冲区,再
将缓冲区中的信息传入内存5.循环2-4
文件写入:1.需要指定文件名和要写入文件的信息2.搜索目录以查找文件的位置3.根据指向文件中位置的写入指针写入文件4.更新编写器指针
文件Turncate截断:1.擦除文件的内容2.文件长度重置为03.释放文件空间
Repositioningwithinafile(文件中重新定位):1.目录中查找文件入口2.将当前文件位置更新为给定值
文件打开/关闭:将文件入口内容从磁盘/内存移动到内存/磁盘
文件打开:根据文件名在文件目录中检索,并将该文件的目录项读入内存,建立相应的数据结构(系统打开文件表、用户打开文件表),为后续的文件
操作做好准备。返回文件描述符/文件句柄
open-filetable(打开文件表):open()系统调用就是将文件入口移动到其中(系统级/进程级,指针、磁盘位置、打开计数器、访问权限)
Exclusivelock独占锁sharedlock(共享锁)是否允许多个进程同时访问文件
integrity完整性Mandatory强制Advisory建议
volume(卷):装有文件系统的部分此时文件系统被称为devicedirectory(设备目录)orvolumetableofcontents(卷目录表)
文件结构:物理结构()、逻辑结构(流式:文件时有逻辑的无结构的一串字符的集合、记录式文件:文件由若干记录组成,可以按照记录进行读写查找等
操作,每条记录都有其内部结构)
文件逻辑结构:顺序(所有记录按键值的约定次序组织;记录可以时定长的,变长的;常用语批量记录读取,单个访问请求性能不佳;可以用前面长度之
和访问某个文件),
索引(建立一张索引表,记录每个记录的长度和指针),
顺序索引//Indexed(索引)Sequential(顺序)File(将顺序文件中的所有记录分为若干组,建立一张索引表,先索引后顺序查找记录)
文件的访问方法:
SequentialAccess(顺序):信息按顺序处理,一个接一个读:读取问价洗一部分并自动前进文件指针写:追加到文件末尾斌能够心末尾位置:
simplest、DirectAccess(orrelativeaccess):可以直接访问某个序号的块;
Indexedaccess:建立在直接访问的基础上,建立索引项
restrictions(限制)Variable(可变的)
文件目录:检索组织管理文件目录项:FCB目录文件:将文件目录以文件形式存在外存
目录结构的组织关系到:文件的存取速度、文件的共享性和安全性
reside(驻留)backups(备份)
traverse(遍历)
Single-LevelDirectory(一级目录):给所有用户
Two-LevelDirectory(二级目录):主文件目录(所有用户名及其子目录位置)、用户文件目录(用户的所有文件的FCB)
路径名、不同用户可以有相同文件名、搜索效率提高、没有分组能力
Tree-StructuredDirectories(树结构目录):可以使用绝对路径或相对路径(当前工作目录)
优点:层次结构清晰、便于管理与保护、有利于文件分类、解决重名问题、提高文件检索速度
缺点:不支持文件共享、多及目录都在外存,影响访问速度(需要逐层查找)
Acyclic-GraphDirectories无环图目录:子目录和文件共享
danglingpointers(悬挂指针):共享文件删除后产生
解决方法:1.symboliclinks:删除链接不影响原来的文件,当文件被删除后访问失败,将链接删除
2.hardlink:增加链接计数,不为零则文件仍然存在,等于0时系统负责删除
文件别名:1.基于符号链接(symboliclink,shortcut):特殊类型的文件,其内容是到另一个目录或文件路径的链接。
建立符号链接文件,并不影响原文件,实际上它们各是一个文件
2.基于索引结点(i-node)硬链接:基于改进的多级目录结构,将目录内容分为两部分——文件名和索引结点。
前者包括文件名和索引结点编号,后者包括文件的其他内容(包括属主和访问权限),多个文件名链接到同一个索引节点,对索引结点链接计
数,为0时删除文件
GeneralGraphDirectory通用图目录:允许环出现
问题:难以统计文件数目、删除文件、递归备份文件、垃圾回收
解决方法:确保图中无环,新链接建立时使用环检测算法消除环
文件系统安装:给操作系统文件系统连接的位置,装入点是空目录,操作系统验证是否是有效的文件系统,最后操作系统标注在其目录结构中文件系统的位置
文件共享-多用户:系统需要维护更多的文件和目录属性:文件所有者、组用户、其他用户,用户id允许单用户访问,组groupid允许组用户访问
远程文件系统:1.FTP2.分布式文件系统:远程目录在本机可见3.www服务
recursive(递归的)backup(备份)mounted(安装)retrieval(检索)
SAN(存储区域网络)Append(附加)
文件共享:1.NFS:分布式文件共享2SAN:3.云存储.
文件保护:
access-control-list(ACL):访问权限RWX(read,write,excute)
secondarystorage(辅存)MasterBootRecord(MBR)(主引导记录)Implementation(实现)
*文件系统实现:
包括:文件(逻辑存储单元)、目录(FCB关于文件信息的集合)、软件
文件系统结构:存储:辅存、分层组织、设备驱动控制物理设备
文件系统分层实现:用户接口、逻辑文件系统、文件组织模块、基本文件系统、I/O控制层(设备驱动程序)、设备
MBR(主引导记录):扇区0用于启动计算机,末尾包含分区表提供每个分区的起始和结束位置,其中一个分区在表中标记为活动
在启动时,BIOS在MBR中读取,MBR找到活动分区(activepartition)并读取第一个块,即引导块并执行;引导块(bootblock)
依次加载分区中的操作系统
超级块:存放该文件系统的各种参数:文件系统类型,数据块尺寸,空闲块的数量和指针,空闲FCB的数量和指针等等
磁盘上:bootcontrolblock、Volumecontrolblock、目录结构、PCB
内存里:挂在文件系统表(mount-table)、近期访问目录缓存(directory-structurecache)、系统的打开文件表(放在内存:用于保存已打开文件的FCB
)、进程的打开文件表(记录了用户打开文件表的位置)
文件打开:访问内存中的文件目录,找到FCB返回指针
文件读取:(索引方式)先访问进程的打开文件表,在指向系统的打开文件表,访问磁盘
许多os使用面向对象技术来支持多种文件系统,调用VFS(virtualfilesystem)interface来实现多种文件系统切换
seamless(无缝衔接)object-oriented(面向对象)
目录实现:1.线性列表(费时,操作简单)2.哈希表(搜索速度快,会产生冲突,哈希表长度固定)
文件目录改进:将FCB分为符号目录项(文件名、文件号)、基本目录项(i-node,除文件名外所有字段)
UNIX目录结构:采用分离结构,每个文件有一个存放在磁盘索引结点区的索引节点,存放文件的详细信息
文件的物理结构:文件在存储介质上的存放方式
1.连续结构
只需要起始位置和长度,支持顺序访问和直接访问,浪费空间,文件不能增长,有外部碎片
Extent-BasedSystems:连续分配的拓展,初始连续分配,块不够时添加另一个连续空间作为拓展,
文件的位置将记录为位置和块计数,以及拓展的第一个块的链接
2.链接结构
目录包含文件的第一个和最后一个块
隐式链接:每个盘快都有指向下个盘块的指针(除最后)无法直接访问某个盘块,只支持顺序访问,有利于文件扩充,没有外碎片;
存取速度慢,指针出错,更多寻道次数、时间,链接占一定空间
FAT(文件分配表):目录记录初始块号,表项和磁盘块一一对应,在表内进行链接,表项指示下一块位置或是最后一块或者空闲块
3.索引结构
将所有的指针集合为indexblock,每个文件都有indexblock,是磁盘块地址的表
目录中存放indexblock的位置,再进行索引
缺点:较多的寻道次数、时间,索引带来的系统开销:内外存空间,存取时间
当文件很大时,采用多级索引的方式,定义多级索引表;或者对索引快进行链接
空闲空间管理:
bitvector(位示图)
为防止内存和磁盘中的bitmap不同:1.磁盘中写0(已分配)2.分配空间3.内存中汇总写0
linkedlist(freelist)空闲块链表:不能简单地得到连续空间、不浪费空间
Grouping成组链接法:在第一个空闲块中存储n个空闲块的地址;前n-1为空,第n个指向另外n个空闲块的地址
counting空闲块表:每个条目记录空闲块起始地址和数量
效率和性能:取决于磁盘分配和目录算法;保存在文件目录条目中的数据类型
performance(性能):diskcache(文件高速、磁盘高速缓存、块、缓冲区高速缓存)为频繁访问的块在主存中划分位置
缓存:
内存映射I/O:从文件系统中读取磁盘块并将其存储在缓冲区缓存中;将块复制到页面缓存中,称为双缓存,浪费内存
浪费CPU和IO周期,可能会导致两个缓存之间不一致
改进:统一缓冲区高速缓存使用相同的页面高速缓存来高速缓存内存映射页和普通文件系统I/O
文件系统的一致性(FileSystemConsistency):孤儿文件:文件在磁盘上,文件夹却没有出现;魅影文件:文件夹有文件名和inode,磁盘里没有文件
一致性检查:比较目录里的文件和磁盘上的文件,修改不一致;在重启的时候进行
使用系统程序将磁盘数据备份到另一个存储设备,从备份的数据中恢复丢失的文件或磁盘
LogStructuredFileSystems(日志结构化文件系统):把记录每个文件系统的更新作为事务,所有的事务被写进日志,一旦写入则视为已经提交,但是可
能尚未更新;日志中的事务以异步(asynchronouslywrittentothefilesystem)方式写入文件系统,修改完成文件系统时,将从日志中删除事务,如果
文件系统崩溃,仍必须执行日志中的剩余事务。
transaction(事务)
secondaryandtertiarystorage(二级和三级存储)
Magnetictape(磁带)相对永久(permanent)并且可以保存大量数据,速度慢,用于备份
Magneticdisks(磁盘)数据传输速率是驱动器和计算机传输的速率,seektime(寻道时间)、rotionallatency(旋转延迟),可能产生磁头碰撞
物理地址形式:盘面号、磁道号、扇区号扇区:标题10B数据512BECC纠错信息12-16B
cylinder(柱面)
两种方法访问磁盘:1.Host-attachedstorage主机附属存储(通过IO端口和总线)ATA/SATA/SCSI/FC
2.Network-attachedstorage网络附属存储(通过远程分布式系统)RPC/iSCSI/SAN
磁盘调度:组成:寻道时间、旋转延迟、传输时间之和,约等于寻道时间
FCFS(先来先服务)、SSTF(短距离优先):可能导致饥饿、SCAN(从一端移动到另一端)、C-SCAN(回程不提供服务)、LOOK(只走到有请求的最远处)、
C-LOOK(回程不提供服务)
磁盘管理:
Diskformatting(磁盘格式化):Low-levelformatting(低级格式化):为每个扇区提供填充,由头部、数据区域、尾部组成,
orphysicalformatting(物理格式化);OS将自己的数据结构记录在磁盘上,第一步是将磁盘按照柱面分区,第二步是逻辑格式化,或创建文件系统。
为了提高效率,大多数OS将块组合为更大的块,称为簇(clusters),磁盘访问按块,文件系统I/O按簇,确保了更多的顺序执行和更少的随机访问。
没有文件系统的磁盘(原始磁盘rawDisk)
BootfromDisk(磁盘引导:bootstrapprogram(自举程序处于ROM)初始化系统的所有部分,从磁盘上调入完整的引导程序,具有启动分区的磁盘是
启动磁盘(bootdisk)或系统磁盘(systemdisk),MBR:引导代码,列出了磁盘分区和从哪个分区引导系统。
Badblockrecovery(坏块):格式化时扫描发现坏块,标记为不可用;sectorsparing(扇区备用)低级格式化时会;留出操作系统不可见的备用扇区
高速控制器在逻辑上用其中一个备用扇区替换坏的扇区
交换的概念:将进程从内存移动到磁盘以释放内存空间
SwapspaceLocation(交换空间管理):位置:1.从普通文件系统中分离(carvedout)出来,是文件系统中的一个文件,由文件系统管理创建命名和分配;
2.在Rawpartition(原始分区:无文件系统和目录)中由交换空间管理分配和回收
大小:保存整个进程、保存换出的页面,建议高估空间大小防止系统死机
时间:4.3BSD在进程启动时分配交换空间
保存文本段(程序)和数据段
Solaris2仅在将页强制从物理内存中移出时才分配交换空间,而不在首次创建虚拟内存页时分配交换空间
LINUX允许多个交换空间,通常放在单独的磁盘上,保证负载平衡包含一系列页槽,swapmaps表示页的分配情况,数字表示正在被几个进程共享
RAID系统:磁盘冗余阵列
1.提高可靠性镜像
2.提高并行性:数据分条(data-striping);位级条带化、块级条带化Bit-levelstriping、Block-levelstriping
Blockinterleavedparity(RAID4,5,6):块交错奇偶校验
RAID0:条带RAID1:镜像
ZFSChecksums:采用校验和验证数据完整,校验和与块指针存放在一起,数据块的校验和位于inode内
ZFS系统将文件系统管理和卷管理组合到一起,磁盘或磁盘分区,通过RAID集组成存储池(pool),每个池可以容纳一个或多个ZFS文件系统,整个池的所有空间可用于该池
的所有文件系统。
*I/O系统:
I/O设备(按传输速率分类):低速、中速、高速设备
按信息交换的单位分类:块设备(用于存储信息,以数据块为单位)、字符设备(用于数据的输入和输出,基本单位字符)
按共享属性分类:独占设备、共享设备、虚拟设备(将独占设备虚拟为若干台逻辑设备)
I/O设备组成:机械部分(设备本身)、电子部分(设备控制器)
设备不直接与CPU进行通信,二十余设备控制器通信,每个I/O设备通过设备控制器与计算机的数据总线和地址总线相连接
某些设备(如磁盘设备)有内置的控制器
设备控制器是一个可编址设备:当它仅控制一个设备时,它只有一个唯一的设备地址,当控制器可连接多个设备时,则应具备多个设备地址
,使每个地址对应一个设备
设备控制器处于CPU与设备之间。由以下三部分组成:设备控制器与CPU的接口、设备控制器与设备的接口、I/O逻辑
控制器的接口寄存器:OS将命令写入,实现输入/输出,从接口寄存器读取状态或结果信息;当控制器接受命令后,可独立于CPU完成指定操作
I/O端口地址:接口电路中每个寄存器具有的、唯一的地址,所有I/O端口地址形成I/O端口空间(受到保护)
I/O指令形式与I/O地址是相互关联的,主要有两种形式:
内存映射编址
(内存映射I/O模式)对端口的操作等同于对内存的操作
I/O独立编址
(I/O专用指令)
I/O控制方式:主机与I/O设备之间的数据交换方式
ProgrammedI/O(可编程I/O)
AlsocalledPolling:CPU等待IO完成操作,不断询问控制器状态寄存器,处于忙等状态
Interrupt-drivenI/O:interrupthandler中断处理程序
工作过程:1.CPU给I/O模块发出指令,保存当前运行程序上下文,转去执行其他程序2.I/O接收到命令后,完成工作,向CPU发出中断请求信号
3.CPU在每个指令执行结束后检查中断,接收到I/O的中断后,保存当前程序上下文转去执行中断处理程序4.CPU恢复中断的操作
DMAI/O:
DMA控制器中设四类寄存器:
命令/状态寄存器CR
内存地址寄存器MAR
数据寄存器DR
数据计数器DC
工作过程:1.CPU收到I/O请求后,初始化DMA控制器,启动I/O指令,继续其他工作2.DMA控制器直接与存储器交互,每次传输一个字,传输结束
后向CPU发出中断信号,CPU响应并处理中断,继续执行
和中断的区别:1.中断在每个数据需要传输时中断CPU,DMA是在一批数据传送结束后才中断CPU2.中断的数据传输是由CPU控制完成的,而DMA是由DMA
控制器的控制下完成的
获取总线的方法:周期窃取
ChannelI/O:可以一次传输一组数据块;
工作原理:1.遇到I/O请求时,根据请求生成通道程序放入内存(通道与CPU共享内存),给该通道程序的首地址,执行启动I/O的指令,启动通道工
作2.接收到“启动I/O”指令后,取出通道程序的首地址,并根据首地址取出第一条指令,同时向CPU发回答信号,使CPU可继续执行其他程序,而通
道则开始执行通道程序,完成传输工作(通道程序完成实际I/O,启动I/O设备,执行完毕后,如果还有下一条指令,则继续执行,否则表示传输完成)。
当通道传输完成最后一条指令时,向CPU发I/O中断,并且通道停止工作。CPU接收中断信号,根据通道状态信息,决定下一步做什么。
通道可以控制多台设备与内存数据的交换,有字节多路通道(分时并行)、选择多路通道(每次传输一批数据,磁盘磁带)、数组多路通道(前两个结合)
设备驱动:使用标准化接口访问I/O设备,设备驱动层隐藏了I/O控制器之间的差异
设备驱动程序是处理或操作设备控制器的软件。
它们是内核中具有高特权的、驻留内存的底层硬件处理例程。
设备驱动程序的任务:
接受抽象读/写请求
从其上方独立于设备的软件
查看已执行的读/写请求
初始化设备,打开/关闭设备
设备的电源管理
I/O设备类型:块设备(磁盘)、字符设备(键盘、鼠标)、网络设备(套接字)、时钟和定时器
BlockingandNonblockingI/O(阻塞和非阻塞I/O):进程挂起直到I/O结束;并行执行
I/O软件层:IO软件被组织成层
每层都有一个:
要执行的明确定义的函数
与相邻层的良好定义的接口
确切的划分因系统而异
Device-IndependentI/OSoftware(设备独立性软件):执行所有设备通用的IO操作,为用户软件提供统一的界面
提供:设备驱动程序的统一接口、缓冲区、错误报告、分配和释放专用设备、提供与设备无关的块大小
缓冲(buffering):在设备之间传输时将数据存储在内存中;应对设备速度不匹配、传输大小不匹配、维护复制语义(copysemantics)
缓冲区分类
硬缓冲:由硬件寄存器实现(例如:设备中设置的缓冲区)
软缓冲:在内存中开辟一个空间,用作缓冲区
缓冲区管理:单缓冲、双缓冲、循环缓冲、缓冲池
缓冲池:可供多个进程共享组成:空缓冲区、输入、输出缓冲区(装满输入输出数据)
相同类型的缓冲区连成一个队列:空缓冲队列emq、输入队列inq、输出队列outq
四种工作缓冲区:收容输入:输入进程输入数据,从emp队首取空缓冲区,作为收容输入缓冲区hin,挂在inq队尾;
提取输入:计算进程需要输入数据时,从inq队首摘下缓冲区,作为提取输入缓冲区sin,提取数据,将缓冲区挂在emp;
收容输出:计算进程输出数据,从emp队首取空缓冲区,作为收容输出缓冲区hout,挂在outq队列上;
提取输出:输出进程,从outq对首摘下装满数据的缓冲区,作为提取输出缓冲区,数据提取完成后,挂在emp末尾;
缺点:速度慢,网络可能会产生多个副本
DeviceAllocation(设备分配):Devicereservation(设备预留)concurrentdeviceaccess(并发设备访问)
设备互斥访问;系统要求分配和释放设备;
设备分配步骤:ppt91
I/O保护:所有I/O指令定义为特权指令,必须通过系统调用执行;内存映射和I/O端口内存位置也必须受到保护;
privileged特权指令
ErrorReporting(错误报告):错误报告取决于错误类型
1.Programmingerrors:申请不能得到的东西、读取输出设备;只进行报错反馈
2.ActualI/Oerrors:访问磁盘的损坏部分;可能采取纠正策略、询问调用者如何处理、失败并返回错误代码
应用程序独立于具体使用的物理设备,可以提高OS的可适应性和可拓展性;
增加设备驱动层,引入逻辑设备和物理设备两个概念,应用程序使用逻辑设备来请求设备;LogicalUnittable逻辑设备表
virtualinterface|devicedrivers|physicalinterface|hardwaredevices
User-SpaceI/OSoftware:便于在用户空间进行I/O操作,功能包括:Format、Spooling(假脱机)
Spooling(假脱机):对IO操作进行批处理,以空间换时间(分页系统是以时间换空间)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。