概述
第一章 计算机系统概述
1. 什么是操作系统
操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理组织、调度计算机的工作和资源分配,进而为用户和其他软件提供方便接口与环境的程序集合。
操作系统是计算机系统中最基本的系统软件。主要功能有:进程的调度与分配,内存管理,文件管理,输入输出管理。操作系统即是计算机系统资源的管理者,也是用户与计算机硬件之间的接口。
2. 操作系统的特征
操作系统具有并发性,能处理和调度多个程序同时执行。
(并发和并行的区别:并发是指宏观上多个任务同时执行,微观上仅能有一道程序执行。而并行是指同一时刻能完成两种或者两种以上的工作。)
操作系统具有虚拟性,时分复用技术和空分复用技术。
操作系统具有共享性。系统中的资源可以供内存中多个并发执行的进程共同使用。
操作系统具有异步性。进程执行并不是一贯到底的,而是走走停停,以不可预知的速度向前推进。
3. 操作系统的发展过程
单道批处理系统-多道批处理系统-分时操作系统-实时操作系统
单道批处理系统到多道批处理系统主要是有中断的引入。分时操作系统引入之后解决了人机交互的问题。
4. 中断和异常的基本概念
异常分为三种:陷入、故障和终止。终止比如说有整数除以0,故障有缺页、缺段,陷入主要有访管指令(trap)。用户调用系统调用主动将CPU的使用权交给操作系统的内核程序。操作系统由用户态变为内核态。
中断是指来自CPU执行指令以外的事件的发生,这类事件通常是指与当前执行指令无关的事件,也就是说与当前处理机运行的程序无关。比如打印机缺纸等。
5. 中断处理的过程
关中断-保存断点(pc等)-引出中断服务程序-保存现场或者屏蔽字-开中断-执行中断服务程序-关中断-恢复现场和屏蔽字-开中断、中断返回。
第二章 进程管理
1. 进程、线程和程序的关系
进程主要是指程序的一次执行过程。可以理解为程序是静态的,而进程是动态的。没有引进线程之前,进程是系统进行资源和调度的基本单位。引进线程之后,进程是系统分配资源的基本单位,而线程是进行调度的基本单位。一个进程可以有多个线程,多个线程共享进程的资源,但是线程与线程之间的地址空间栈不共享。线程是一个基本的CPU执行单元。
2. 进程的状态
进程有运行态、就绪态、阻塞态、创建态、等待态。
就绪态有可以执行的一切资源,除了CPU。CPU选择进程调度后,进程变为运行态,如果该进程需要等待相应的事件(如I/O输入输出),进程会自动放弃CPU资源,变为阻塞态。事件发生之后,CPU又会变为就绪态,等待下一次调度。
3. 进程之间的通信
进程通信指的是进程之间的信息交换。PV操作是低级通信方式。高级通信方式主要有以下几种:共享存储(需要使用同步互斥工具)、消息传递和管道通信。
4. 用户级线程和内核级线程
在用户级线程中,有关线程的管理都是由应用程序完成,内核意识不到线程的存在。在内核级线程中,线程管理的所有工作由内核完成,应用程序没有进行线程管理的代码,只有一个到内核级线程的编程接口。
5. 多线程模型
有一对一线程、多对多线程和多对一线程。
6. 进程调度的方式
进程调度又称低级调度,其重要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。调度策略主要可以分为两大类:非剥夺调度方式和剥夺调度方式。进程调度策略主要有:FCFS(先来先服务调度性算法)、SJF(短作业优先调度算法,客源有剥夺也可以有非剥夺)、优先级调度算法、高响应比优先算法、时间片轮转调度算法。FCFS算法适合CPU型进程而不适合I/O型进程,即对长作业有利而对短作业不利。
进程的优先级:系统型进程大于用户型进程,I/O型进程大于计算型进程(可以用DMA来理解,防止数据丢失),交互型进程大于非交互型进程。
7. 进程同步
临界资源是指一次仅允许一个进程使用的资源。有许多设备都是临界资源,如打印机等,还有很多变量、数据等都可以被许多进程共享,他们也是临界资源。临界区是指进程中访问临界资源的那段代码。
同步是直接制约关系,互斥是间接制约关系。同步机制应该遵循以下四点原则:空闲让进、忙则等待、有限等待和让权等待。
实现临界区互斥的基本方法:软件实现方法和硬件实现方法。软件实现方法有单标志法、双标志先检查法、双标志后检查法和皮特森发。硬件实现方法由许多指令实现。
8. 死锁
死锁是指多个进程因为竞争资源而造成的一种僵局(互相等待),如果没有外力作用,这些进程都将无法向前推进。
死锁的产生有四个条件:请求和保持条件、不剥夺条件、互斥条件、循环等待条件。请求和保持条件是指进程已经拥有了一些资源,但是又提出了其他的资源请求。不剥夺条件是指进程已经拥有的资源不能被其他进程所剥夺。互斥条件是指资源一段时间内只能由一个进程所占有,如果其他进程需要使用该资源,只能等待使用该资源的进程放弃资源。循环等待条件是指存在一种进程资源的循环等待链。
如何预防死锁?(死锁的预防)
死锁的预防是不让死锁产生,死锁的预防可以从死锁产生的几个条件入手:互斥条件是最基本的条件,一般不会破坏,甚至要保护这种互斥条件。破坏不剥夺条件可以剥夺其他进程的资源,释放相关进程。破坏请求和保持条件可以一次性释放所有资源。破坏循环等待条件可以将资源顺序分配。
如何避免死锁?(死锁的避免)
判断系统是否是安全状态(银行家算法)。并非所有的不安全状态都是死锁状态,但当系统进入不安全状态,便可能进入死锁状态。反之,只要系统处于安全状态,系统便可以避免死锁状态。
如果检测死锁和解除?(死锁的检测和解除)
可以通过对资源分配图的化简来判断死锁。S为死锁的条件是当且仅当S的资源分配图是不可以完全简化的,该条件为死锁定理。如果对进程分配资源时候出现了死锁,可以通过撤销相关进程、进程回退和资源剥夺来解决。
第三章 内存管理
1. 程序是如何执行的?
程序员用高级语言写入相关程序后,编译器将会把用户源代码编译成若干模块,由链接程序将编译后形成的一组目标模块及所需的库函数链接到一起,形成一个完整的装入模块,由装入程序将装入模块装入内存运行。
2. 逻辑地址与物理地址
编译后,每个目标模块都从0号单元开始编址,这称为该目标模块的相对地址(逻辑地址)。用户程序和程序员只需要知道逻辑地址,而内存管理的具体机制是完全透明的。物理地址是最终转换的地址,进程在运行时执行指令和访问数据,最后都要通过物理地址从主存中存取。
3. 内存连续分配管理方式
连续分配方式是指给用户进程分配一个连续的内存空间。连续分配方式包括单一连续分配、固定分区分配和动态分区分配。
单一连续分配:适用于单道批程序,内存中永远只有一道程序。不会因为越界而干扰其他程序。
固定分区分配分为分区大小相等和分区大小不等两种,它将用户内存空间划分为若干固定大小的区域,每个分区只装入一道作业。
动态分区分配有:首次适应、最佳适应、邻近适应、最坏适应。首次适应效果较好,最佳适应会产生较多的外部碎片。
外部碎片和内部碎片:外部碎片是指在所有分区外的存储空间会变成越来越多的碎片,而内部碎片是指分区内没有使用过的空间碎片。
4. 内存非连续分配管理方式
非连续分配允许一个程序分散地装入不相邻的内存分区。非连续分配主要有基本分页存储管理方式、基本分段存储管理方式和段页式。
基本分页存储管理方式:将主存空间划分成大小相等且固定的块作为主存的基本单位,进程在执行时,以块为单位逐个申请主存中的块空间。分页管理不会产生外部碎片,但是如果最后一个页没有被分配满时,会产生内部碎片。进程中的块成为页,内存中的块称为页框。为了便于在内存中找到进程的每个页面所对应的物理块,系统会给每个进程建立一张页表,表示页面在内存中对应的物理快号,页表一般存放在内存中。页式管理中地址空间是一维的。
多级页表解决了当逻辑地址空间过大时,页表的长度会大大增加的问题。而采用多级页表时,一次访盘需要多次访问内存甚至磁盘,会增加一次访存的时间。
快表:具有并行查找能力的告诉缓冲存储器,是页表的副本,基于局部性原理。
有快表的分页管理地址映射查找方式:
基本分段存储方式:分页通过硬件机制实现,对用户完全透明,分段管理方式的提出则考虑到了用户和程序员,以满足方便编程,信息保护和共享等需要。段式管理方式按照用户进程中的自然段划分逻辑空间。每个进程都有一张逻辑空间与内存空间映射的段表,段号和段内偏移显式给出,分段管理的地址空间是二维的。
段页式管理方式:作业的地址空间首先被分为若干逻辑段,每段都有自己的段号,然后将每段分为若干个大小固定的页。对内存管理仍然和分页存储一样,将其分为若干和页面大小相同的存储块,对内存的分配以存储块为单位。
5. 虚拟内存管理
时间局部性:程序的某条指令一旦执行,不久之后该指令可能再次被执行。
空间局部性原理:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问。举例子:for循环。
虚拟存储器:虚拟存储器是指基于局部性原理,在程序装入时,将程序的一部分装入内存,而其余部分留在外存,就可以启动程序执行。虚拟内存的实现需要建立在离散分配的内存管理方式的基础上。虚拟内存的实现方式有三种:请求分页存储管理、请求分段存储管理和请求段页式存储管理。
缺页中断和页面置换方法:缺页中断是指在请求分页系统中,每当所要访问的页面不在内存中是,便会产生一个缺页中断,请求操作系统将所缺的页调入内存。此时将缺页的进程阻塞(调页完成唤醒),若内存中有空闲块,则分配一个快,将要调入的页装入该块,并修改页表中的相应页表项,若此时内存中没有空闲块,则淘汰某页。一条指令在执行期间,可能产生多次缺页中断。
页面置换算法:如果访问的页面不在内存中而需要将其调入,但是内存已经没有空闲的空间时,需要使用页面替换策略来替换页面。页面替换算法有:FIFO(先进先出页面置换算法)、OPT(最佳页面置换算法,立项情况不可能实现),最近最久未使用算法(LRU),时钟置换算法(CLOCK)。
第四章 文件管理
1. 文件的定义
文件是一计算机硬盘为载体的存储在计算机上的信息的集合,文件可以是文本文档、图片、程序等。在系统文件时,计算机以进程为基本单位。而在用户进行的输入输出中,以文件作为基本单位。
2. 文件的操作
创建文件:创建文件有两个必要的步骤:一是在文件系统中为文件找到空间;二是在目录中为新文件创建条目
写文件:写文件时需要执行一个系统调用,指明文件名称和要写入的文件内容。
读文件:读文件时,需要执行一个系统调用,指明文件名称和要读入文件块的内存位置。同样,需要搜索目录以找到相关目录项,系统维护一个读文件的指针。
打开文件:操作open会根据文件名搜索目录,并将目录条目复制到打开文件夹。open通常返回一个指向打开文件表中的一个条目的指针。
3. 文件的逻辑结构
文件可以分为无结构文件(流式文件)和有结构文件(记录式文件)。有结构文件有顺序文件、索引文件、索引顺序文件和直接文件或者散列文件。文件控制块(FCB)是用来存放控制文件需要的各种信息的数据结构。有的文件采用了文件名和文件描述信息分开的方法,文件描述信息单独形成一个称为索引结点的数据结构。
4. 文件共享
文件共享基于两种方式,硬链接和软链接。
基于索引结点的方式称为硬链接,在这种共享方式中,文件的物理地址和其他的文件属性的信息,不会放在目录项中,而会放在索引结点中。在索引结点中还有计数器count,用于表示链接到本索引结点(即文件)上的用户目录项的数目。如果一个用户不需要该文件时,不能直接删除文件,应该将该文件的count-1,如果count=0时,系统负责删除该文件。
用符号链实现文件共享,为了实现文件共享,可以将被链接文件的路径名写入用户的根目录中,操作系统根据新文件的路径名去读文件。利用符号链方式实现文件共享时,只有文件的拥有者才拥有指向其索引结点的指针,而共享该文件的其他用户只有该文件的路径名,并没有指向其他索引结点的指针。
5. 文件分配方式
(如何为文件分配磁盘块)。常用的磁盘分配方式有三种:连续分配、链接分配和索引分配。连续分配方法要求每个文件在磁盘上占有一组连续的块。连续分配支持顺序访问和直接访问。其优点是实现简单,存取速度快。链接分配又分为隐式链接和显式链接两种方式。
隐式链接是每个文件对应一个磁盘块的链表,磁盘块分布在磁盘的任何地方,除最后一个磁盘块之外,每个磁盘块都有指向下一个盘块的指针,这些指针对用户是透明的。隐式链接的缺点是无法直接访问盘块,只能通过指针顺序访问文件。显式链接是将指向盘块的指针显示地存放在内存的一张表中,整个磁盘中仅设置一张。这个表是FAT。FAT在系统启动的时候会被读入内存,所以查找FAT表的过程是在内存中进行的,不仅显著地提高了检索速度,并且明显减少了访问磁盘的次数。
索引分配是把每个文件的所有盘块号都集中放在一起构成索引块(索引表),能够支持直接访问。
6. 管理空闲盘块方式
空闲表法、空闲链表法、成组链接法和位示图法。
7. 磁盘调度算法
先来先服务算法(FCFS)、最短寻找时间优先算法(SSTF)、扫描算法(SCAN)、循环扫描算法(CSCAN)。
8. 磁盘初始化
在磁盘能够存储数据之前,必须分成扇区以便磁盘控制器能进行读和写操作,这个过程称为低级格式化(物理分区)。然后将磁盘分为由一个或者多个柱面组成的分区(如C盘、D盘等),最后对物理分区进行逻辑格式化(创建文件系统)。
第五章 输入输出(I/O)管理
1. I/O控制方式
程序直接控制方式:计算机从外部设备读取数据到存储器,每次读取一个字的数据。对读入的每个字,CPU都对外设状态进行循环检查,直到确定该字已经在I/O控制器的数据寄存器中。CPU和I/O串行工作,CPU利用率低。
中断驱动方式:允许I/O设备主动打断CPU的运行并请求服务,从而解放CPU。在每个指令周期的末尾,CPU检查中断。当有来自I/O控制器的中断时,CPU保存正在运行程序的上下文,转去执行中断处理程序以处理该中断。CPU从I/O控制器读入一个字的数据传送到寄存器,并存入主存。CPU和I/O可以并行工作,但是因为频繁的中断处理,会消耗CPU的大量时间。(上下文:进程切换后的寄存器和进程状态)
DMA方式:在中断驱动方式中,I.O设备与内存之间的数据交换必须要经过CPU中的寄存器,而DMA则是直接在I/O设备和内存之间开辟直接的数据交换通路,传送数据是从设备直接进入内存的。仅在传送一个或者多个数据块的开始或者结束时,才需要CPU的干预,整块数据的传送是在DMA控制器的控制下完成的。当I/O设备需要传送数据时,I/O设备会向DMA控制器发送DMA请求,请求DMA传送数据,而DMA控制器会向总线发出请求,请求接管总线的控制权。
通道控制方式:I/O通道进一步减少CPU的干预,DMA传输一组数据的时候需要CPU的预处理和结束处理,而通道会变成对一组数据块的读或写及有关控制和管理单位的干预。通道在数据传送完后向CPU发送中断请求。
最后
以上就是勤奋老鼠为你收集整理的操作系统知识概要(参考王道408)第一章 计算机系统概述第二章 进程管理第三章 内存管理第四章 文件管理第五章 输入输出(I/O)管理的全部内容,希望文章能够帮你解决操作系统知识概要(参考王道408)第一章 计算机系统概述第二章 进程管理第三章 内存管理第四章 文件管理第五章 输入输出(I/O)管理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复