操作系统基础知识
操作系统的演进
多道程序设计
多道程序设计:多道程序设计是指在计算机中同时存放多个程序;
多道程序在计算机的管理程序之下相互穿插运行。
对多道程序的管理也是操作系统的重要功能。操作系统有以下五大功能:
进程管理:
①进程管理之进程实体;
②进程管理之五状态模型;
③进程管理之进程同步;
④Linux的进程管理;
作业管理:
①作业管理之进程调度;
②作业管理之死锁;
存储管理
①存储管理之内存分配与回收;
②存储管理之段页式存储管理;
③存储管理之虚拟内存;
④Linux的存储管理;
文件管理
①Linux的文件系统;
②Linux文件的基本操作;
设备管理:
①操作系统的设备管理;
操作系统概览
What&Why
①操作系统是管理计算机硬件和软件资源的计算机程序;
②管理配置内存、决定资源供需顺序、控制输入输出设备等;
③操作系统提供让用户和系统交互的操作系统;
④操作系统的种类是多种多样的,不局限于计算机;
⑤从手机到超级计算机,操作系统可简单也可复杂;
⑥在不同的设备上,操作系统可向用户呈现多种操作手段;
⑦我们不可能直接操作计算机硬件;
⑧设备种类繁多复杂、,需要同一界面;
⑨操作系统的简易性使得更多人能够使用计算机。
操作系统的基本功能
操作系统统一管理着计算机资源;
操作系统实现了对计算机资源的抽象;
操作系统提供了用户与计算机之间的接口;
操作系统相关概念
并发性:
并发:是指两个或多个事件可以在同一时刻发生;
并行:是指两个或多个事件可以在同一时间间隔发生;
共享性:表现为操作系统的资源可供多个并发的程序共同使用;这种共同使用的形式称之为资源共享。 多个程序可以同时使用主存资源;资源共享根据属性可分为两种形式:互斥共享形式,同时访问形式; 互斥共享形式:当资源被A占用时,其他想使用的话只有等待;只有进程A使用完以后,其他进程才可以使用该资源。如:打印机。 同时访问形式:某种资源在一段时间内并发的被多个程序访问;这种"同时"是宏观的,从宏观去看该资源可以被同时访问。如:硬盘。
虚拟性 虚拟性-时分复用技术 ①资源在时间上进行复用,不同程序并发使用; ②多道程序分时使用计算机的硬件资源; ③提高资源的利用率; 虚拟性-时分复用技术-虚拟处理器技术 ①借助多道程序设计技术; ②为每个程序建立进程; ③多个程序分时复用处理器; 虚拟性-时分复用技术-虚拟设备技术 ①物理设备虚拟为多个逻辑设备; ②每个程序占用一个逻辑设备; ③多个程序通过逻辑设备并发访问; 虚拟性-空分复用技术 ①空分复用技术用来实现虚拟磁盘、虚拟内存等; ②提高资源的利用率,提升编程效率; 虚拟性-空分复用技术-虚拟磁盘技术 ①物理磁盘虚拟为逻辑磁盘; ②C、D、E等逻辑盘; ③使用起来更加安全、方便; 虚拟性-空分复用技术-虚拟内存技术 ①在逻辑上扩大程序的存储容量; ②使用比实际内存更大的容量; ③大大提升编程效率;
异步性
①在多道程序环境下,允许多个进程并发执行;
②进程在使用资源时可能需要等待或放弃;
③进程的执行并不是一气呵成的,而是以走走停停的形式推进;
进程管理之进程实体
由于多道程序设计的原因:
①进程是系统进行资源分配和调度的基本单位;
②进程作为程序独立运行的载体保障程序正常执行;
③进程的存在使得操作系统资源的利用率大幅提升;
标识符:标识符唯一标记一个进程,用于区别其他进程(进程ID就是唯一的标识符!);
状态:标记进程的进程状态,如运行状态、阻塞状态等;
程序计数器:程序即将被执行的下一条指令的地址;
内存指针:程序代码、进程数据相关指针;
上下文数据:进程执行时处理器存储的数据;
IO状态信息:被进程IO操作所占用的文件列表;
记账信息:使用处理器时间、时钟数总和等。
进程控制块(PCB)
PCB是操作系统进行调度经常会被读取的信息;PCB是常驻内存的,存放在系统专门开辟的PCB区域内。
进程的实体
①用于描述和控制进程运行的通用数据结构;
②记录进程当前状态和控制进程运行的全部信息;
③PCB的使得进程是能够独立运行的基本单位。
进程是系统进行资源分配和调度的最小单位;
线程包含在进程之中,是进程中实际运行工作的单位;
一个进程可以并发多个线程,每个线程执行不同的任务。
进程的线程共享进程资源。
进程管理之五状态模型
当进程被分配到除CPU以外所有必要的资源后,只要再获得CPU的使用权,就可以立即运行;
其他资源都准备好、只差CPU资源的状态为就绪状态;在一个系统中多个处于就绪状态的进程通常排成一个队列。
进程获得CPU,其程序正在执行称为执行状态;
在单处理机中,在某个时刻只能有一个进程是处于执行状态;
进程因某种原因如:其他设备未就绪而无法继续执行,从而放弃CPU的状态称为阻塞状态。
创建进程时拥有PCB但其他资源尚未就绪的状态称为创建状态;
进程结束由系统清理或者归还PCB的状态称为终止状态;
进程管理之进程同步
根源问题是:彼此相互之间没有通信!(因而需要进程之间的同步。)
进程同步:
①对竞争资源在多进程间进行使用次序的协调;
②使得并发执行的多个进程之间可以有效使用资源和相互合作;
进程同步原则:
①空闲让进:资源无占用,允许使用;
②忙则等待:资源有占用,请求进程等待;
③有限等待:保证有限等待时间能够使用资源;
④让权等待:等待时,进程需要让出CPU;
临界资源:是指一些虽作为共享资源却又无法同时被多个线程共同访问的共享资源。当有进程在使用临界资源时,其他进程必须依据操作系统的同步机制等待占用进程释放该共享资源才可重新竞争使用共享资源。
进程同步的方法:
①消息队列;②共享储存;③信号量;
线程同步的方法:
①互斥量;②读写锁;③自旋锁;④条件变量;
Linux的进程管理
前台进程就是具有终端,可以和用户交互的进程;
与前台进程相对,没有占用终端的就是后台进程;后台程序基本上不和用户交互,优先级比前台进程低;在Linux中将需要执行的命令以"&"符号结束即代表后台进程。
守护(daemon)进程是特殊的后台进程;很多守护进程在系统引导的时候启动,一直运行直到系统关闭;Linux有很多典型的守护进程,进程名字一般以"d"结尾的一般都是守护进程。
进程ID:进程ID是进程的唯一标记,每个进程拥有不同的ID,进程ID表现为一个非负整数,最大值由操作系统限定。
父子进程关系可以通过pstree命令查看。
ps命令:用于显示当前进程的状态;ps命令昌配合aux参数或ef参数和grep命令检索特定进程; kill命令:发送指定信号给进程;kill -l可以查看操作系统支持的信号; 只有(SIGKILL 9)信号可以无条件的终止进程,其他信号进程有权忽略。
作业管理之进程调度
进程调度是指计算机通过决策决定哪个就绪进程可以获得CPU使用权。
进程调度有以下机制:
①就绪队列的排队机制:将就绪队列按照一定的方式排成队列,以便调度程序可以最快找到就绪进程;
②选择运行进程的委派机制:调度程序以一定的策略选择就绪进程,将CPU资源分配给它;
③新老进程的上下文切换机制:保存当前进程的上下文信息,装入被委派执行进程的运行上下文;
当老进程还没有执行完的时候,这时的进程调度的分为两类:非抢占式调度和抢占式调度。
非抢占式调度:
①处理器一旦分配给某个进程,就让该进程一直使用下去;
②调度程序不以任何原因抢占正在被使用的处理器;
③直到进程完成工作或因为IO阻塞才会让出处理器。
抢占式调度:
①允许调度程序以一定的策略暂停当前运行的进程;
②保存好旧进程的上下文信息,分配处理器给新进程。
先来先服务调度算法:按照就绪队列中的顺序依次进行调度。
短进程优先调度算法:调度程序优先选择就绪队列中估计运行时间最短的进程;但是短进程优先调度算法不利于长作业进程的执行。 高优先权调度算法:进程附带优先权,调度程序优先选择权重高的进程;高优先权调度算法使得紧迫的任务可以优先处理。 时间片轮转调度算法:按先来先服务的原则排列就绪进程;每次从队列头部取出待执行进程,分配一个时间片执行;是相对公平的调度算法,但不能保证及时响应用户。
作业管理之死锁
死锁的产生:
①竞争资源:共享资源数量不满足各个进程需求,各进程之间发生资源争抢;
②进程调度顺序不当;
死锁的四个必要条件:
①互斥条件:进程对资源的使用是排他性的使用,即某资源只能由一个进程使用,其他进程需要使用只能等待;
②请求保持条件:进程至少保持一个资源,又提出新的资源请求,新资源被占用请求被阻塞,被阻塞的进程不释放自己保持的资源;
③不可剥夺条件:进程获得的资源在未完成使用前不能被剥夺,获得的资源只能由进程自身释放;
④环路等待条件:发生死锁时,必然存在进程-资源的环形链。
预防死锁的思路:破坏四个必要条件的任何一个即可。
摒弃请求保持条件:系统规定进程运行之前,一次性申请所有需要的资源,进程在运行期间不会提出资源请求,从而摒弃请求保持条件;
摒弃不可剥夺条件:当一个进程请求新的资源得不到满足时,必须释放占有的资源,进程运行时占有的资源可以被释放,意味着可以被剥夺;
摒弃环路等待条件:可用资源线性排序,申请必须按照需要递增申请,线性申请不再形成环路,从而摒弃了环路等待条件;
银行家算法是一个可操作的著名的避免死锁的算法,其是以银行的借贷系统分配策略为基础的算法。
存储管理之内存分配与回收
为什么需要内存管理??
确保计算机有足够的内存处理数据;
确保程序可以从可用内存中获取一部分内存使用;
确保程序可以归还使用后的内存以供其他程序使用;
单一连续分配:最简单的内存分配方式,只能在单用户、单进程的操作系统中使用;
固定分区分配:固定分区分配是支持多道程序的最简单存储分配方式,内存空间被划分为若干固定大小的区域,每个分区只提供给一个程序使用,互不干扰;
动态分区分配:根据实际需要,动态分配内存空间,会涉及相关数据结构以及分配算法。
动态分区分配算法
首次适应算法(FF算法):分配内存时从开始顺序查找适合内存区,若没有合适的空闲区,则该次分配失败,每次从头部开始,使得头部地址地址不断被划分;
最佳适应算法(BF算法):要求空闲区链表按照容量大小排序,遍历空闲区链表找到最佳合适空闲区;
快速适应算法(QF算法):快速适应算法要求有多个空闲区链表,每个空闲区链表存储一种容量空闲区。
第一种情况:
不需要新建空闲链表节点,只需要把空闲区1的容量增大为空闲区即可;
第二种情况:
将回收区与空闲区合并,新的空闲区使用回收区的地址;
第三种情况:
将空闲区1、空闲区2和回收区合并,新的空闲区使用空闲区1的地址;
第四种情况:
为回收区创建新的空闲节点,插入到相应的空闲区链表中去。
字块可以理解为相对于内存条的定义。
页面可以理解为相对于进程的定义。
所指的都是一块大小一样的内存!
页式存储管理:将进程逻辑空间等分成若干大小的页面,相应的把物理内存空间分成与页面大小的物理块,以页面为单位把进程空间装进物理内存中分散的物理块。
页式存储管理容易产生页内碎片!且如果有一段连续的逻辑分布在多个页面中,将大大降低执行效率。
段式存储管理:将进程逻辑空间划分为若干段(非等分),段的长度由连续逻辑的长度决定。
段式存储和页式存储都离散地管理了进程的逻辑空间。
①页时物理单位,段是逻辑单位;
②分页是为了合理利用空间,分段是满足用户要求;
③页大小由硬件固定的,段长度可动态变化;
④页表信息是一维的,段表信息是二维的。
分页可以有效提高内存利用率(虽说存在页内碎片),分段可以更好的满足用户需求,两者结合形成段页式存储管理。
段页式存储管理先将逻辑空间按段式管理分成若干段,再把段内空间按页式管理等分成若干页。
上述三种方法都是用于管理进程的内存空间的,即把进程的内存空间映射到物理的内存空间。
有些进程实际需要的内存很大,超过物理内存的容量,多道程序设计,使得每个进程可用物理内存
更加稀缺,不可能无限增加物理内存,物理内存总有不够用的时候。虚拟内存是操作系统内存管理
的关键技术,其使得多道程序云习惯和大程序运行成为现实,把程序使用内存划分,将部分暂时不
使用的内存放置在辅存。
局部性原理:局部性原理是指CPU在访问存储器时,无论是存取指令还是存取数据,所访问的存储单元
都趋于聚集在一个较小的连续区域中。程序运行时,无需全部装入内存,装在部分即可,如果访问页不
在内存,则发起缺页中断,发起页面置换,从用户层面看,程序拥有很大的空间,即是虚拟内存。简言
之,虚拟内存实际是对物理内存的补充,速度接近于内存,成本接近于辅存。
替换策略发生在Cache-主存层次、主存-辅存层次; Cache-主存层次的替换策略主要是为了解决速度问题; 主存-辅存层次主要是为了解决容量问题;
Buddy算法是经典的内存管理算法,Buddy算法基于计算机处理二进制的优势具有极高的效率,
其主要是为了解决内存外碎片的问题(将内存外碎片-->内存内碎片)。
其目的是努力让内存分配与相邻内存合并能快速进行。
内部碎片:内部碎片是已经被分配出去(能明确指出属于哪个进程)的内存空间大于请求所需的内存空间,
不能被利用的内存空间就是内部碎片。
页外碎片:外部碎片是指还没有分配出去(不属于任何进程),但是由于大小而无无法分配给申请内存空
间的新进程的内存空闲块。
Buddy内存管理算法的原则: ①向上取整为2的幂大小:如70k-->128k,129k-->256k; ②伙伴"指的是内存的"伙伴",一片连续内存的"伙伴"是相邻的另一片大小一样的连续内存; ③创建一系列的空闲块链表,每一种都是2的幂;
假设存储空间有1M大小如下,需分配100k内存,则流程如下:
1.100k向上取2的幂=128k; 2.查询是否有128k空闲内存块; 3.没有!查询是否有256k空闲内存块? 4.没有!查询是否有512k空闲内存块? 5.没有!查询是否有 1M空闲内存块? 6.有,摘下1M空闲内存块,分配出去; 7.拆下512k放在512k的空闲链表,区域的分配出去; 8.拆下256k放在256k的空闲链表,其余的分配出去; 9.拆下128k放在128k的空闲链表,其余的分配出去; 10.分配完毕!
回收刚才分配的内存: 1.判断刚才分配的内存伙伴在空闲链表上吗? 2.在!一处伙伴,合并为256k空闲内存,判断刚才分配的内存伙伴在空闲链表上吗? 3.在!一处伙伴,合并为512k空闲内存,判断刚才分配的内存伙伴在空闲链表上吗? 4.在!一处伙伴,合并为1M空闲内存,判断刚才分配的内存伙伴在空闲链表上吗? 5.插入1M空闲链表,回收完成
交换空间(Swap)是磁盘的一个分区,Linux物理内存满时,会把一些内存交换至Swap空间,
Swap空间是初始化系统时配置的。
交换空间主要用于以下三个方面:
冷启动依赖:对于一些大型的应用程序,在启动的过程中需要大量的内存,但是这些所需内存只是在启动的时候
才会使用到,后续在运行的过程中很少使用该内存,因此有了交换空间,系统就可以将这个不怎么使用的内存数
据保存到swap空间中,从而释放更多的物理内存给系统使用。
系统睡眠依赖:当Linux系统需要睡眠的时候,会把内存中的数据保存到swap空间中,等下次重新启动的时候,
再把数据重新加载到内存中去。(这样可以加快系统的启动速度)
大进程空间依赖:有些进程确实需要使用很多的内存空间,但是物理内存是不够的,因此需要把这些进程使用到
的内存暂时保存到交换空间,使得这个大进程可以运行起来。
逻辑结构的文件类型--有结构文件
文件内容由定长记录和可变长记录组成:定长记录存储文件格式、文件描述等结构化数据项,
可变长记录存储文件具体内容。
逻辑结构的文件类型--无结构文件
也成为流式文件,文件内容长度以字节为单位
顺序文件是指按顺序存放在介质中的文件;
磁盘的存储特性使得磁带文件只能存储顺序文件;
顺序文件是所有逻辑文件当中存储效率最高的。
可变长文件不适合使用顺序文件格式存储;
索引文件是为了解决可变长文件存储而发明的一种文件格式;
索引文件需要配合索引表完成存储的操作。
连续分配:把需要用到的几个扇区直接进行连续的分配。
顺序读取文件内容非常容易,速度很快,但对存储要求高,要求满足容量的连续存储空间。
链接分配:连接分配可以将文件存储在离散的盘块中,需要额外的存储空间存储文件的盘块链接顺序。
隐式链接:每个盘块记录都记录下一个链接的存储位置,隐式分配适合顺序访问,随机访问效率很低,
可靠性差,任何一个链接出问题都影响整个文件。
显示链接:提供一个表来记录每个盘块的位置,这个表被称为FAT(File Allocation Table),显
示链接不支持高效的直接存储,盘越大(FAT记录项多),检索时FAT表占用较大的存储空间
(需要将整个FAT加载到内存)。
索引分配(主流):提供一个索引块,用来记录此份数据记录在哪些盘块。该方式把文件的所有盘块集中存储(索引),
读取某个文件时,将文件索引读取进内存即可。
每个文件拥有一个索引块,记录所有盘块信息,索引分配方式支持直接访问盘块,文件较大时,索引分配方式具有
明显优势。
空闲表:空闲盘区的分配与内存分配类似,首次适应算法、循环适应算法等,回收 过程也与内存回收类似。
空闲链表:空闲链表法把所有空闲盘区组成一个空闲链表,每个链表节点存储空闲盘块和空闲的数目。
位示图:位示图成本很低,位示图可以非常容易找到空闲盘块,位示图使用0/1比特位,占用空间很小。
在实际中的辅存方式只要也是位示图。
FAT(File Allocation Table):使用一张表保存盘块的信息,如FAT16、FAT32等都是微软Dos/Windows使用
的文件系统。
NTFS(New Technology File System):WindowsNT环境的文件系统,NTFS对FAT进行了改进,取代了旧的文件
系统。
EXT2/3/4(Extended file system):扩展文件系统,linux的文件系统,2/3/4代表了第几代。
Boot sector:启动扇区,安装开机管理程序;
Block Group:块组,存储数据的实际位置。
Inode Table:
①存放文件Inode的地方
②每一个文件都有一个Inode
③是每一个文件(目录)的索引节点
Inode:
①文件名不是存放在Inode节点上的,而是存放在目录的Inode节点
②列出目录文件的时候无需加载文件的Inode
Inode bitmap:
①Inode的位示图
②记录已分配的Inode和未分配的Inode
Data block:
①Data block是存放文件内容的地方
②每个block都有唯一的编号
③文件的block记录在文件的Inode上
Block bitmap:
①功能与Inode bitmap类似
②记录Data block的使用情况
Superblock
①记录整个文件系统相关信息的地方
②Block和Inode的使用情况
③时间信息、控制信息等
专用缓冲区只适用于特定的IO进程;
当这样的IO进程比较多时,对内存的消耗也很大;
操作系统划出可供多个进程使用的公共缓冲区,称之为缓冲池。
SPOOLing是一种虚拟设备技术,SPOOLing技术关于慢字符设备如何与计算机交换信息的一种技术,其利用高速共享设备将低俗设备模拟为高速的共享设备,逻辑上,系统为每一个用户都分配了一台独立的高速独享设备。
SPOOLing在输入输出之间增加了排队转储环节(输入井、输出井),SPOOLing负责输入输出井与低俗设备的调度,逻辑上,进程直接与高速设备交互,减少进程的等待时间。
习题: 1.最早的计算机是没有操作系统的,操作系统的诞生解决了什么问题? 2.什么是批处理操作系统,它有什么特点? 3.什么是分时操作系统,它有什么特点? 4.操作系统主要功能是什么? 5.操作系统实现了对计算机资源的抽象,这里面的计算机资源主要包括什么? 6.操作系统提供了用户与计算机之间的接口,使得用户可以通过操作系统操作计算机,这个接口主要有几种形式? 7.什么是并行?什么是并发?并行和并发有什么区别和联系? 8.操作系统的共享性对用户来说表现为什么? 9.对于计算机资源的共享,有哪两种形式? 10.什么是操作系统的虚拟性? 11.什么是操作系统的异步性?它对我们的编程有什么实际意义? 12.什么是操作系统的进程,操作系统的进程解决了什么问题? 13.进程在计算机中是以什么形式存在的? 14.PCB的全称是什么?它有什么作用? 15.什么是线程,线程与进程的关系和区别? 16.进程的五状态主要是哪五状态?你了解进程的生命周期吗? 17.什么是生产者-消费者问题,你能够编程实现吗? 18.什么是哲学家进餐问题,你能够编程实现吗? 19.进程间同步一般有哪些方法,线程间同步呢? 20.对于Linux来说,什么是前台进程、什么是后台进程、什么是守护进程? 21.进程的调度算法可以分为两大类,抢占式调度和非抢占式调度,对于抢占式调度,主要有什么算法? 22.死锁的危害重大,什么是死锁,死锁是怎么产生的? 23.为了避免死锁,操作系统使用了什么算法?你了解这个算法的过程吗? 24.什么是段?什么是页?什么是段页式存储管理? 25.虚拟内存是什么?从根本上来说,虚拟内存解决了什么问题? 26.虚拟内存有哪些的置换算法? 27.请简述Buddy算法分配内存和回收内存的过程? 28.在Buddy算法里面,什么是Buddy(伙伴)? 29.在计算机里面,文件可以分为有结构文件和无结构文件,你可以列举常见的有结构文件和无结构文件吗? 30.当为文件分配辅存空间时,一般有什么分配方式? 31.FAT文件系统对应的是辅存的哪种空间分配方式? 32.ext文件系统对应的是辅存的哪种空间分配方式? 33.在辅存中,一般使用什么样的数据结构来管理存储空间? 34.文件目录树有什么作用? 35.文件描述信息包含哪些数据? 36.Linux文件有哪几种类型? 37.ext文件系统可以看做是由一个Boot Sector和若干个Block Group组成,你能简要的描述Block Group由什么组成吗? 38.什么是文件的Inode,Inode存储了文件的什么信息? 39.什么是SPOOLing技术?计算机中常说的“脱机”是什么意思?
答案: 1.操作系统的出现解决了计算机操作难度大、计算机资源利用效率低等问题。 2.批处理操作系统的特点是批量输入任务,有效提升计算机资源利用率。 3.分时操作系统是指分时复用计算机资源的操作系统,可以多个用户使用一台计算机,多个程序分时共享计算机资源。 4.操作系统统一的管理着计算机资源;操作系统实现了对计算机资源的抽象;操作系统提供了用户与计算机之间操作的接口。 5.存储资源 、网络资源、计算资源等。 6.系统调用、命令行、图形窗口、应用程序等。 7.并行是指两个或多个事件可以在同一个时刻发生;并发是指两个或多个事件可以在同一个时间间隔发生。 8.操作系统的共享性表现为计算机资源可以同时提供给多个用户、多道程序使用。 9.互斥共享、同时共享。 10.操作系统的虚拟性是指操作系统可以把计算机的物理实体转变为若干个逻辑实体以提供多个用户、多道程序使用。 11.操作系统的异步性是指是指进程以不可预知的速度向前推进。内存中的每个进程何时执行,何时暂停,以怎样的速度向前推进,每道程序总共需要多少时间才能完成等,都是不可预知的。 12.进程是操作系统进行计算机资源分配和调度的基本单位。有了进程,用户的逻辑程序才能够在操作系统中独立、正常的执行;并使得计算机资源可以高效利用。 13.进程在计算机中表现为一片存储空间,包含进程状态、进程优先级、程序计数器、内存指针、上下文数据、IO状态信息等一系列数据。 14.PCB的全称是进程控制快(Process Control Block),PCB是系统中存放进程的管理和控制信息的数据结构,有了PCB,操作系统才可以控制进程的运行。 15.线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 16.创建状态、就绪状态、阻塞状态、执行状态、终止状态。 17.略。 18.略。 19.进程间同步的方法有:信号量、共享内存、消息队列、Unix域套接字等,线程间同步的方法有:互斥量、自旋锁、读写锁、条件变量的等方法。 20.前台进程是指正在运行并且占用终端的进程;后台进程是指不占用终端的进程;守护进程是指一类特殊的后台进程,随系统引导而启动。 21.先来先服务调度算法、短进程优先调度算法、高优先权优先调度算法、时间片轮转调度算法。 22.死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。 23.银行家算法。 24.段是指连续不等长的一片内存,页是指连续等长的一片内存,段页式存储管理是将用户程序分成若干个段,再把每个段分成若干个页的内存管理方式。 25.虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。 26.FIFO算法、LRU算法、LFU算法 27.略。 28.Buddy指的是两片内存连续、大小一样的内存片段。 29.有结构文件比如:Excel文件、Word文件、PDF文件、JPG文件等;无结构文件比如:exe文件、so文件、dll文件等。 30.连续分配、链接分配、索引分配。 31.链接分配方式。 32.索引分配方式。 33.位示图。 34.文件目录树使得任何一个文件或文件夹都有唯一的路径。 35.文件标识符、文件类型、文件权限、文件长度、文件状态、索引节点等信息。 36.套接字文件、普通文件、目录文件、符号链接文件、设备文件、FIFO文件。 37.一个Block Group由Super Block、Inode Bitmap、Block Bitmap、Inode Table、Data Block组成。 38.每个文件或者文件夹都有一个Inode,Inode可以理解为是文件或文件夹的“身份证”,Inode存储着文件索引节点编号、文件类型、文件权限、文件物理地址的关键信息。 39.SPOOLing技术是关于慢速字符设备如何与计算机主机交换信息的一种技术,它利用高速共享设备将低速的独享设备模拟为高速的共享设备,使得逻辑上系统为每一个用户都分配了一台独立的高速独享设备。
做一枚奔跑的老少年!