操作系统知识点整理

今天回顾之前本科时候期末考试整理的知识点,并整理在此:

一.概述

1.操作系统的定义:

管理系统资源、控制程序执行、改善人机界面、提供各种服务,并合理组织计算及工作流程的和为用户方便而有效地使用计算机提供良好运行环境的最基本的系统软件。(为应用程序的运行提供良好的环境)

2.操作系统两大角色,大致的作用:

(1).管理者,管理计算机各种资源;                    (2)服务者,为应用程序运行提供环境。

3.现代计算机系统软件组成结构:

系统软件(操作系统)、支撑软件(编译程序、汇编程序、数据库)、应用软件

4.怎么理解操作系统是一台“虚拟计算机” *:

用户输入的操作命令会都会涉及底层硬件操作,但用户用到的都是操作系统提供的接口,操作系统就是一台以这些命令作为机器语言的虚拟计算机。

5.操作系统的管理资源的三种方法(正确区分)

(1)资源复用:解决物理资源数量不足的问题。两种基本方法:空分复用共享(内存、磁盘)和时分复用共享(CPU)

(2)资源虚化:解决物理资源数量不足,提高操作系统用户服务的能力和水平。(虚拟打印机)

(3)资源抽象:处理系统的复杂性,重点解决资源的易用性。(CPU->进程,磁盘->文件,显示器->窗口,物理计算机->虚拟机 )

6.三种基础抽象方法:进程抽象——对CPU;虚存抽象——对内存;文件抽象——对磁盘     计算机系统的物理资源可分为计算类和存储及接口类。

7.操作系统几大主要功能:处理器管理,存储管理,设备管理,文件管理,网络与通信管理,用户接口

8.三种基本的操作系统类型,他们各自用于什么地方:

批处理操作系统,用于计算量很大,人为干预少的地方;

分时操作系统,以时间片形式公平把时间分配给每个用户;

实时操作系统,实时控制和实时信息处理

9.系统调用的概念:给编程使用的接口。作用,(1)系统调用是内核对外的唯一接口;(2)系统调用保证系统的安全性

10.为何要引入POSIX *:为了解决接口复杂、使用困难和应用程序可移植性受限的问题

11.API、库函数与系统调用:API、库函数封装0到若干个系统调用,是可供应用程序直接使用的接口

二. 处理器管理

1. 处理器管理的内容:负责管理、调度和分配计算机系统的处理器,处理器分配和运行是以进程为单位,所以处理器管理也可视为对进程的管理。

2.处理器管理在操作系统中的核心地位:处理区管理是操作系统最核心的部分,无论是应用程序,还是系统程序,最终都要在处理器上执行以实现起功能。(理解其定义)

3.特权指令与非特权指令:特权指令:仅供内核使用的指令;非特权指令:可以被应用程序和内核使用的指令;用户态只可以使用非特权指令,核心态可使用特权和非特权指令

4.处理器状态:核心态、用户态,*用户态通过中断和异常转为核心态。

5.PSW,里面装的什么:PSW用来指示处理器状态,控制指令的执行顺序,并且保留和指示与运行程序有关的各种信息,主要作用是实现程序状态的保护和恢复。

6.中断的概念:指程序在运行过程中,遇到继续处理的事件,暂时停止在cpu上的运行,转而执行相应事件的处理程序,处理完后再返回断点或调度其他程序执行。

  1. 中断的分类和产生:软中断:外中断:处理器外部产生的中断;内中断:处理器内部产生的中断;硬中断:信号:内核或进程产生的中断;软件中断:硬中断服务程序对内核的中断
  2. 为何外部中断有些可屏蔽,而异常都不可屏蔽 :中断与CPU是异步的,不是当前进程所需要的,中断具有不同的优先级,处理高级中断时,往往会屏蔽低级中断。而异常与cpu同步,是当前进程所需要的,必须处理。*
  3. 异常的几种处理方式(参照Linux中的四种分类):故障,陷阱,终止,编程异常

故障发生后,处理完毕后将原来引发故障的指令再执行一遍;陷阱与编程异常发生后,处理完毕之后,执行原指令的下一条指令;终止则不再返回原来的指令。

10.信号机制是模仿了外部中断的处理方式 *:信号源性质相同(1)都是处理器外部产生的中断;(2)都是两条指令中间产生异常。

11.中断处理的一般过程:程序正常运行,接收到中断信号,暂停运行的程序,保护好现场,转而执行相应的中断处理程序,完成后,恢复现场,继续执行原程序。

12.时钟中断及其作用(主要的两大作用):

时钟是内核进行进程调度的重要工具。作用:(1)确保操作系统在必要时获得控制权;(2)获取时间

13.进程的概念,进程包括哪些东西:进程:一个正在执行的程序,包括:代码,数据,管理结构

14.进程与程序的区别与联系,或者说,为什么要引入进程

程序:存放在磁盘上的文件 进程:正在执行的程序。

为什么引入进程:在多道程序设计之下,原来的“程序”概念已经不能用来描述这时候的情况了,程序只是一个静态的概念,而进程是一个动态的概念

15.进程的几种状态,它们之间的转换(尤其注意,不存在从阻塞态到运行态的转换)

运行态,就绪态,等待态(为便于管理,加入新建态和终止态,挂起态)

16.进程的三种上下文:用户级上下文:经常自己的代码数据等、系统级上下文:内核所使用的内存管理信息等、寄存器上下文:寄存器当时的信息,用于保护和恢复现场

17.进程控制块的概念,它的作用:进程存在的唯一标识,内核用来记录和刻画进程状态的数据结构,管理和调度进程的依据。

18.进程切换的过程 *:略

19.线程的概念:线程是进程中能够并发执行的实体,是进程的组成部分,也是处理器调度和分派的基本单位

20.为什么要引入线程:为了减少程序并发执行时所付出的时空开销,使得并发力度更细、并发性更好。

21.线程与进程的区别和联系:进程有自己的独立空间,线程没有自己完全独立的空间

22.为何线程没有挂起态:线程不是资源的拥有单位,挂起状态对于线程是没有意义的

23.什么叫处理器调度:进行涉及处理器调度和资源分配的工作

24.三种调度层次,哪种是必须的:

高级调度(作业调度)      中级调度(进程调度)      低级调度(线程调度) 必须的

25.衡量一个调度算法好坏的标准:资源利用率② 吞吐量③ 公平性④ 响应时间⑤ 周转时间

26.会计算调度的“平均周转时间”:例:进程p1、p2、p3运行时间为2、4、7,平均周转时间为:(2+6+13)/3=7

27.几种典型的调度算法:先来先服务、短作业优先(时间短的先运行)、时间片轮转(每个按序运行时间片上的时间见P155)、优先级调度、彩票调度算法(例:1秒钟随机抽取50次,每次分配20ms)

三.并发管理

1.并行情况下会出现的问题、原因 *:顺序程序设计效率不高

2.同步的目的:1 使得并行情况下,结果依然保持确定性 2 限制越少越好

3.Peterson算法:一种纯软件算法,通过两个变量来实现互斥访问临界区。是免锁编程的基本算法之一,这个算法设计得很巧妙,核心就是三个标志位是怎样控制两个方法对临界区的访问的。

4.信号量的定义,取值含义,PV操作:

信号量:表示物理资源的实体,是一个与队列有关的整型变量。

取值:用一个结构型数据结构表示,有两个分量(1)信号量的值 (2)信号量队列的指针 PV操作:p操作申请资源,v操作释放资源

5.PV操作实现生产者、消费者问题

伪代码:

int B;

semaphore empty;         //可用的空缓存区

semaphore full;          //缓冲区内可用的产品数

empty=1;                 //缓冲区内允许放入一件产品

full=0;                  //缓冲区内没用产品

cobegin                

process producer(){         process comsumer(){

while (true){                       while (true){

produce();                               P(full);

P(empty);                                take() from B;

append() to B;                        V(empty);

V(full);                                       consum();

}                                            }

}                                         }

coend

睡眠、唤醒机制实现生产者、消费者问题

如果生产者发现缓冲区满了,则唤醒消费者,自己睡眠;如果消费者发现缓冲区空了,则唤醒生产者,自己睡眠

几种进程间通信机制(1)信号通信机制(2)管道通信机制(3)共享主存通信机制(4)信息传递机制(5)信号量机制

死锁的概念: 如果一个进程集合中的每个进程都在等待只能由此集合中的其他进程才能引发的事件,而无限期陷入僵持的局面称为死锁。

死锁产生的四个必要条件,破坏死锁方法的原则

互斥条件 (2)占有和等待 (3)不剥夺条件 (4)循环等待

破坏死锁的原则:破坏四个必要条件中任一个

银行家算法的思想:系统将进程放入集合,安全状态下,系统进行试探性非配,系统将可用资源数和进程需求资源数进行比较,找出剩余资源能满足的最大需求量的进程。将进程从集合删除,归还其占有的所有资源。反复执行上述步骤,若最后进程集合为空,则可以执行分配;否则,不进行分配。

四.存储管理

  1. 编译、链接和加载都干了些什么 *:

编译:将源程序翻译为机器指令,生成目标文件,这些目标文件并不能直接执行。

链接:将多个目标文件模块装配成一个完整的程序,它解析符号表,把对符合的引用转换成具体的数值地址。

加载:执行程序之前,当获得了一块实际的内存之后,加载器根据该内存的首地址,再次修改和调整可执行文件中的地址,完成地址的最后绑定。

2.现代计算机系统的存储器层次:

现代的存储器,已经不仅仅指内存了,它包括了寄存器,缓存,内存,磁盘这样一种层次结构

特点:(从下往上)访问速度越来越快,容量越来越少,价格越来越贵

金字塔型(从下往上)磁带,磁盘,主存储器,高速缓存,寄存器

3.几种不太主流的内存管理方法:固定分区、可变分区、伙伴系统

(1)固定分区:主存空间被划分成固定数目、大小不等的分区,每个分区可执行一个作业,

各作业并发执行。

执行方法:根据当天的作业情况,进行分区;建立“主存分配表”;根据待运行作业的内存需求,选择合适的分区,载入运行。

(2)可变分区:根据作业的大小选择分区,但分区的划分是根据作业和空余内存来动态分配的。

执行方法:每当来一个新进程,从可用内存中划分出一块连续的区域,供进程使用,没有合

适的区域,则等待别的进程释放内存。

(3)伙伴系统:任何尺寸为2^i的空闲块,都可以分解成两个2^(i-1)的块,反过来也可以把他们合并起来,这两个块,成为伙伴。

执行方法:建立一个空闲数组free[i],i=0,…N,每个元素表示一个链表,该链表中的元素

是大小为2^i的分配单元。

4.伙伴系统算法 *

5.分页系统牵涉到哪些东西(实际操作)

  (1)页面 (2)页表 (3)页表基址寄存器 (4)MMU

6.一级页表、二级页表中虚拟地址到物理地址的映射(实际操作)

7.虚拟空间的大小(实际操作)

8.页表项里主要记录了什么

  记录了物理页面的内存起始地址,以及其他的关于该物理页面的信息

9.在Intel处理器下,虚拟地址的构成(一级页表、二级页表)(实际操作)

10.为何要引入二级甚至多级页表,它的原理是什么 *

11.段式管理的概念:段式管理:一个进程分成几个部分,每一个部分占据一个区(逻辑) 段式管理最大的一个特点:每个段都是一个独立的虚拟地址空间。(这里的“段”,指的是逻辑段,它们也要通过某种映射机制,把逻辑段,映射为物理内存的专门区域)

12.段式管理能解决页式管理哪两个问题 *(1)共享内存(2)进程所需内存超过虚拟内存

13.段式管理的虚拟空间大小(实际操作)

   长度:页式(固定) 段式(可变)

虚拟空间大小:页式(透明,相对固定) 段式(不透明,不定)

(每一个段长都根据需要,各有长短,但实际上,每一个段最长可以有最大虚拟空间地址 因此采用段式管理,每个进程的虚拟地址空间,可以远大于4G(以32位机器为例))

14.段式管理下,虚拟地址的组成(实际操作)

(段寄存器、段选择符

在实模式下,CS,DS,ES,SS用来存放一个段的基地址

在保护模式下,它们存放了新的东西—段选择符,里面存放了段表内偏移

因为怕不够,Intel又增加了两个段寄存器FS,GS

段表、段表项

它们的关系跟页表、页表项的关系一样,段表里面放了很多段表项,Intel里叫“段描述符”

段描述符里存放了,该逻辑段,会被映射到的物理段的基地址

段选择符里存放了应该访问第几个段描述符,即上面图中的“段号”

段选择符结构(段表内偏移)

段描述符结构(段表项)

段表基址寄存器

同CR3一样,每一个进程,都有一个段表,他保存的是该进程的段表的基地址)

15.根据给定的虚拟地址,算出物理地址(简单的方式)

16.虚拟存储

虚拟存储器:在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理主存容量大得多的、可寻址的“主存储器”。实际上,虚拟存储器对用户隐蔽可用物理存储器的容量和操作细节,虚拟存储器的容量与物理主存大小无关,而受限于计算机的地址结构和可用的磁盘容量,如Intel x86的地址线是32位,则程序可寻址范围是4GB,Windows 和Linux都为应用进程提供一个4GB的逻辑主存。

17.局部性的概念,有什么用 *

局部性:某存储单元被引用之后,程序倾向于过短时间再次引用该单元(时间局部性),或者倾向于过一段时间引用该单元附近的存储单元(空间局部性)

18.在现代存储器层次中,当处理器发出一个内存地址调用时,会如何来寻找 *

19.缺页中断率的计算公式   缺页率f=F/A       (F为不成功访问次数,S为运行中成功访问的次数,A=S+F)

五.文件管理

1.文件系统是对磁盘使用的抽象

(1)文件系统的功能:让人可以方便地存取数据(2)特点:①可以看做是对使用磁盘的抽象,使人们可以不用去管磁盘具体是如何来存储,读取数据②屏蔽了底层的磁盘使用上面的繁琐细节,而用一种简单的逻辑结构呈现给用户

  1. 文件系统的设计目标:让用户可以仅凭文件名来操作文件
  2. 文件系统包括两大基本要素:文件、目录

文件:保存的信息的组织形式

目录:保存文件的有关信息

文件系统就是对文件和目录的组织和操作

2.文件的概念,文件名、文件类型、文件属性等

文件:由文件名所标识的一组信息的集合

(1)文件名:文件主要的存取根据,文件系统的设计目标就是能够按照文件名来操作文件。各个系统对文件名有不一样的安排,比如有些系统有大小写要求,有些对文件名长度有要求,有些系统凭后缀名来识别文件类型,等等

(2)文件类型:以Linux为例,一般有以下几种文件类型:普通文件、目录文件、块设备文件,字符设备文件、管道文件、套接字文件等,他们分别有不同的作用

(3)文件属性:比如文件的拥有者、组拥有者、文件权限、文件的时间(创建时间、最后访问时间、最后修改时间等)、上锁标志、文件口令等

  1. 文件内容三种访问方式:顺序、随机、索引
  2. 目录、目录项的概念,它们里面各存放了什么

目录概念:目录就是存放了文件的信息,我们首先通过目录,然后才能找到文件 存放内容:目录中存放了文件,以及其他目录,从而组成了一个树形结构

  1. 从抽象观点看,磁盘的组成: 若从抽象观点看,整个磁盘可以看做一个连续的大的数组。  主引导记录(①主引导程序②分区表③魔数);分区
  2. 以使用inode的文件系统为例,了解一个这样的文件系统的磁盘组成(超级块、inode区,数据区)
  3. FAT文件系统如何来存文件的内容放在哪
  4. inode类型的文件系统,如何来存文件内容放在哪

FAT的主要缺陷是什么:整表放入内存,占用过大内存

  1. inode类型的文件系统,其目录项是什么构成(PS:文件对应i-node号,文件名)
  2. 如何通过给定的路径字符串,找到对应的文件(结合p415)

以/usr/bin/mbox为例,说明如何来找到这个文件

首先,根目录/的i-node位于分区开始后的固定位置(0号i-node),所以很容易找到/的i-node,从而得到/目录项里的文件有哪些然后得到/usr这个目录项的磁盘位置

查看/usr的目录项,找出其i-node号,然后在i-node表中根据i-node号,找到/usr

对应的i-node,查看其内容,找到/usr/bin目录项的磁盘地址

。。。依次这么寻找,就能找到mbox这个文件的每一部分具体的磁盘地址

你可能感兴趣的:(操作系统)