操作系统 考研复试常考知识点总结

操作系统

什么是操作系统

这里引用两张知乎某作者的图片

对于计算机而言,操作系统是计算机(软件+硬件)资源的管理者。

img

对于用户而言,操作系统为用户提供了与计算机交互的界面,是用户与计算机硬件之间的接口。

img
功能:进程调度、存储(内存)管理、文件管理、设备管理

特征:并发性、共享性、虚拟性、异步性(并发时资源有限导致)

大内核和微内核区别?

大内核:简单来说,就是把很多功能模块都集成进内核,例如linux内核,除了最基本的进程、线程管理外,文件管理、设备管理、存储器管理等等都在内核里面。

优点:效率高,不用频繁在用户态和内核态切换 缺点:稳定性差、系统设计复杂、难以维护

微内核:内核中只有最基本的功能,比如调度、中断。

优点:复杂性低,结构清晰,方便维护 缺点:效率低

库函数和系统调用的区别

库函数是应用程序提供给用户接口,运行在用户空间,而系统调用是操作系统提供给应用程序的接口,介于操作系统和应用程序之间,运行在内核空间中。程序员可以通过使用库函数来调用系统调用。

在这里插入图片描述

各个阶段操作系统的主要特点

手工操作阶段:资源利用率极低

批处理系统:成批处理,资源利用率高、但人机交互差

分时操作系统:人机交互性好、系统响应及时、用户好像独立在操作

实时操作系统:及时性、可靠性

网络操作系统:资源共享

管态和目态是什么?

管态就是cpu的内核态,具有较高权限,可以执行特权指令

目态就是cpu的用户态,权限较低,不能使用特权指令,不能直接使用系统资源,也不能改变CPU的工作状态

用户态→内核态:trap指令(访管指令)

内核态→用户态:中断返回指令

**什么是中断?

中断:实际上是一种电信号,处理器检测到中断信号时,就会中断CPU当前正在处理的工作,转而去处理中断,处理完毕后再返回来继续执行原来的程序。

同步(内)中断和异步(外)中断的区别?

同步中断也就是内中断,由cpu当前执行的(trap)指令主动产生,这种指令就是陷入(trap)指令,trap指令是当系统产生故障时自动产生和执行的。

比如:访问地址越界、除0运算、算术溢出等

异步中断也就是外中断,是cpu外部产生的,与当前执行的指令无关,是完全是异步的,不确定什么时候会发生,比如I/O设备的I/O结束、时钟中断等,cpu对它的响应也是被动的。(通常由硬件产生)

比如:IP设备的I/O结束、时钟中断

注意:一般说的中断是指外部中断,是异步的;异常即是内部中断,分为陷入、终止、故障

中断怎么实现

中断源发出中断信号,CPU收到该中断信号后会立即停止当前工作,(关闭中断后)保护断点地址和处理机当前状态,然后去中断向量表 内查找该中断的处理程序,找到后跳转到中断处理程序的起始位置并执行,最后恢复状态。

总结:产生中断信号→停止工作→(关中断→)保护现场→找中断处理程序→执行中断处理程序恢复状态→中断返回

中断作用是什么

①中断是一种计算机与硬件设备的交流方式,(也是实现I/O控制的一种方式)通过中断可以对外部事件的发生进行及时地进行处理,减少cpu等待时间,提高cpu的利用率

维持系统正常工作。现代计算机中,程序员必须通过中断系统向操作系统发出请求,来操纵机器。

举例子:比如当我按下一个键时,只有当处理器知道我按下了这个键并且做出相应的处理时,按键这个操作才是有效的。

硬中断与软中断的区别?

  • 软中断是执行中断指令产生的,而硬中断是由外设引发的。

  • 硬中断是可屏蔽的,软中断不可屏蔽。

进程和程序的区别

首先,从他们的定义来说,程序是指令的集合,而进程只是程序的一次运行过程。

动态性:进程是动态的,有它的生命周期;而程序是静态的,没有生命周期

并发性:进程有并发性,而程序没有。

地位:进程是拥有/竞争计算机资源的基本单位,而程序不是。

进程和线程区别?

主要区别:进程是拥有资源(资源分配)的基本单位,而线程是CPU调度的基本单位,即线程不拥有自己的系统资源,而是共享使用其隶属于进程的系统资源。

  • 一个进程可以对应多个线程,同一进程内多个线程共享该进程的地址空间。

  • 线程不能单独存在,只能依赖于进程而存在,而进进程可以单独存在。

  • 线程的切换消耗比进程切换消耗要小

线程优点:提高并发性、减少切换时的开销、线程通信容易实现

联系:都具有并发性

什么是多线程?和多任务的区别?

多线程:指在一个程序中定义多个线程并同时运行,每个线程可以执行不同的任务

与多任务区别:多任务是对于操作系统而言的,表示可以同时执行多个任务。而多线程是对于一个程序而言的,表示可以执行多个线程。多线程是多任务的一种实现方式。

原语和机器指令的关系?

原语由多条机器指令组成,是操作系统最底层的部分,具有原子性,不可被中断。

三级调度有哪些?

作业调度:在外存的后备队列中取走一个作业,调入到内存中

中级/内存调度:把具备运行条件而且处于挂起状态的的进程,从外存重新调入内存

进程调度:从内存的就绪队列中选择一个进程,给它分配处理机

总结:从…的…上选取…调入…

如何理解程序的局部性?

程序的局部性:在一段时间内,整个程序的执行仅限于某一部分。

表现为时间局部性和空间局部性。

  • 时间局部性:从时间上看,某一数据(指令)被访问(执行)后,不久后很有可能被再次访问(因为程序中有大量循环)
  • 空间局部性:从空间上看,某一数据被访问后,其相邻地址的数据内容不久后也会被访问

应用:

①利用局部性原理可以对操作系统的内存调度进行优化,最经典的例子就是对由局部性原理设计的页面置换算法。
如LRU算法,就是利用时间局部性原理,将最近访问过的页面留在内存中,能有效提高内存调度的性能。另外,缓存技术也是基于局部性原理来实现的。(时间局部性)

②遍历二维数组时,一遍按照行优先的方式来遍历,因为二维数组的存储也是按照行优先来的设计的。

虚拟存储器的含义?虚拟体现在哪

虚拟存储器是指在计算机系统中,能自动实现部分装入和部分替换功能,从逻辑上为用户提供一个比物理贮存容量大得多的“主存储器

虚拟就体现在:扩充的内存在物理上并不存在,只是在逻辑上扩充了内存,使用户看到的容量大于实际容量。

性质:

  • 多次性——不用全部装入
  • 对换性——装入后空闲的程序不用一直在内存
  • 虚拟性——从逻辑上扩充内存

容量大小:只与计算机的地址结构和磁盘空间有关,与物理内存大小无关。

分页存储和段式存储的区别?

分页的基本单位是物理块,是大小固定的,而段式的基本单位是,长度不定,是由用户的逻辑需求决定的,有利于用户编程。

分页逻辑地址是一元的,可以计算得出,而分段的逻辑地址是二元的,因为每个段长不一样,必须显式给出。

页表里面存储的是该页对应的物理块号,而段表里面存储的是段首地址和段长度

分页会产生少量的内部碎片,而分段会产生外部碎片

请求分页过程

判断是否在内存中?

→如果在,则直接访问

→如果不在→产生缺页中断→请求操作系统将需要的页面调入内存→判断内存是否有空闲块→如果有则直接装入、如果没有,则用页面置换算法选出一个页面调出内存→再装入内存块中

如何理解引入线程能提高并发性?

由于引入线程之后,CPU调度的基本单位是线程,进行线程切换的时候,若两线程同属于一个进程,则不用进行进程切换,减少了进程切换的次数,这样平均而言每次切换的开销就减少了,切换开销减少了,线程并发数量就可以有所增加,从而提高并发性。

死锁相关定义

死锁定义:死锁是多个进程由于竞争资源而造成的一种相互等待的现象,若没有外力作用,则这些进程都无法正常推进,此时则称系统处于死锁状态,或者系统产生了死锁。

死锁进程:永远处于相互等待的进程

死锁的四个必要条件?避免和解决方法?

产生原因:资源竞争、进程推进顺序非法

四个必要条件:

  • 互斥:进程互斥地使用某种资源
  • 不可剥夺:所获得资源不能被强行夺走,只能主动释放
  • 请求并保持:尽管当前请求进程被阻塞,任然保持已有资源不释放
  • 循环等待:形成相互等待的循环等待链

死锁预防:破坏四个必要条件中的任意一个(限制强,对性能影响大)

死锁避免:使用银行家算法,避免系统进入不安全状态(限制弱,对性能影响小)

死锁检测和解除(至少要提供的):

  • 检测:用资源分配图和死锁定理来检测死锁进程
  • 解除:资源剥夺法、撤销进程法、进程回退

进程的三个状态?

三种基本状态:

1、就绪状态:进程已获得除CPU外的所有必要资源,只等待CPU时的状态。一个系统会将多个处于就绪状态的进程排成一个就绪队列。

2、 执行状态:进程已获CPU,正在执行。单处理机系统中,处于执行状态的进程只一个;多处理机系统中,有多个处于执行状态的进程。

3、阻塞状态:正在执行的进程由于某种原因而暂时无法继续执行,便放弃处理机而处于暂停状态,即进程执行受阻。(这种状态又称等待状态或封锁状态)

通常导致进程阻塞的典型事件有:请求I/O,申请缓冲空间等。

进程五状态图:

这里写图片描述

管程和管程的组成?

引入原因:信号量机制中,各个程序存在大量分散的pv操作,不易于管理

管程:管程就是由一系列**【共享资源】【访问共享资源的一组过程(方法)】组成的软件模块**。管程封装了同步操作,隐蔽了同步细节,使得程序员不需要自己实现同步,有利于用户编程。

组成部分:

1)局部于管程的**【共享变量】**(名称+说明);

2)对数据结构进行操作的**【一组过程】**;

3)对局部于管程的数据进行【初始化的语句】

管程有什么作用?

特点:每次仅允许一个进程进入管程;

作用:1、把临界区集中起来,便于管理;2、减少死锁发生;3、便于用户编程

总结:管程和面向对象类相似,将一些变量和操作变量的方法封装起来,只有通过这些方法才能访问共享变量

信号量S的含义?

S>0时,S表示可使用的资源数;或表示可使用资源的进程数;S=0时,表示无资源可供使用;或表示不允许进程再进入临界区;S<0时,S表示等待使用资源的进程个数;或表示等待进入临界区的进程个数;

当S>0时,调用P(S)的进程s不会等待;调用V(S)后使可用资源数加1或使可用资源的进程数加1;

当S<0时,调用P(S)的进程必须等待;调用V(S)后将释放一个等待使用资源者或释放一个等待进入临界区者。

文件目录怎么管理?

目的:实现按名存取(核心)、加快检索速度、实现文件共享、实现文件可重名

主要有两种方式,一种方式是直接将一个文件的文件名、物理地址和其它文件描述信息放到一个FCB中,一个FCB就对应一个目录项,当用户想要访问这个文件时只需要提供文件名,再找到对应FCB,查找到文件的物理地址就可以直接访问其对应的物理单元。

另外一种方式是将文件物理地址和其它描述信息都放到索引结点(inode)中,文件目录只存储文件名和索引结点的地址,这样做的目的是压缩索引表(也就是目录项)大小,使得一个物理块可以存放更多的索引项,但代价是要额外访问一次内存(去找inode),用户同样可以实现文件按名存取。

索引结点一方面使得目录项可以存放在更少的物理块中,减少了平均IO次数,一方面又需要额外访问一次内存,增加了IO次数,所以最终能不能减少IO次数、做到优化,取决于文件目录所占的物理块数和目录项的压缩效果,如果文件目录本来就很大,占用很多物理块,通过inode压缩后物理块变得很少,那就适合用inode,但如果原来目录项就只占一块物理块,那么用inode方法最后的效率也许会更低。

在这里插入图片描述

流式和记录式的文件区别

文件按照逻辑结构来分可以分为流式文件和记录式文件。

流式文件就是无结构文件,以字节为单位堆积在一起。

记录式文件就是有结构文件,按照文件记录的组织方式可以分为顺序文件、索引文件、索引顺序文件

硬链接和软链接的区别

软链接和硬链接是文件共享的两种方式。

硬链接相当于是给文件取了一个别名。硬链接通过多个指针指向同一个inode结点,共享文件的删除会受到指向文件索引的指针数目的影响,只要还有一个指针指向了共享文件索引结点,文件就不能删除。

而软链接就类似于电脑软件的快捷方式,会创建一个存储【共享文件路径】的文件,可以通过快捷方式间接找到文件,但共享文件删除不会受到这个快捷方式的影响,只是在下一次打开快捷方式的时候会提示无效,然后删除。

区别:删除文件的影响、是否新建文件

文件的物理结构和逻辑结构?

文件的逻辑结构指的是在用户看来,文件是按什么结构来组织的,由用户决定;而文件的物理结构是文件在操作系统上实际的存储结构,由操作系统决定,用户不需要关心。比如定义一个数组,我们会认为他在逻辑上是一种连续存放的线性结构,但它具体在操作系统中却不一定是顺序存放的,也有可能是链式存放的。

数据的物理地址和逻辑地址

逻辑地址:就是从某个进程的角度上看到的数据的相对地址,但是并不是真正的物理地址。每个进程都会有自己独立的逻辑地址空间,在某个进程内的逻辑地址不能重复,但在其它进程内可以有相同的逻辑地址。

物理地址:数据在真正在内存中的物理地址

注意:C语言里面取得的地址其实就是逻辑地址。

动态、静态重定位?

重定位:将逻辑地址转化为内存中的实际物理地址的过程

静态重定位:就是在程序装入内存的过程中一次性把实现逻辑地址转化成物理地址,以后不再改变

特点:实现简单、但内存空间不能移动,灵活性差

动态重定位:就是程序在运行时才将逻辑地址转化为物理地址,可以将逻辑地址和重定位寄存器存储的基地址通过相加(基地址+逻辑地址*页表项大小)得到物理地址,支持非连续分配,比如页式存储和段式存储

特点:灵活性好,内存空间可以移动、但需要硬件支持(重定位寄存器)

重定位寄存器就是段寄存器或页寄存器,里面存放的就是页表开始地址+长度

I/O控制方式有哪些,分别阐述过程?

轮询访问:给IO设备发出指令之后,对外围设备进行循环检查,直到确定数据已经存在寄存器里面

中断:CPU给IO设备发完指令之后,可以做别的事情,直到I/O设备读写完成时主动打断cpu,CPU完成读写之后再进行下一次操作,CPU和I/O可以并行工作了。但是每个字的读写都要经过CPU。

DMA(直接存储器存取):CPU只在开始的时候需要发出IO指令,启动DMA控制器,后面的工作就全部交给DMA控制器了,DMA可以直接负责把输入的数据写入内存,而且一次可以处理一批数据,只有当一批数据全部都处理完了,才通知cpu去取数据。相当于CPU的管家。

通道:是DMA的一种改进。通道是一种硬件,相当于一个很简陋的cpu,相比DMA控制器有更高的自主性,他可以自主决定数据存储位置,而且一次性可以控制多个设备,相当于高级管家。

什么是spooling技术?

将独占设备改造成共享设备的技术,目的是缓解cpu和io设备上速度的差异。原理大概是在磁盘中开辟两个空间,一个输入井和输出井,当cpu有数据交给设备时,直接把数据放到输出井当中,然后去做其它事情,到设备IO空闲的时候,再通过输出缓存区读取磁盘输出井上面的数据。cpu需要输入时也是类似。实际上是以空间换时间的技术。

输出:内存→输出井→输出缓冲区→输出设备输出

输入:输入设备→输入缓冲区→输入井→cpu读取

设备到独立性:用户编程时候使用的逻辑上的设备,和实际物理设备无关

  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 数据库考研复试常考知识点主要包括以下几个方面: 1. 数据库系统基础知识:包括数据库的概念、结构、组成部分、数据模型和数据库管理系统的基本功能。 2. 数据库设计与规范化:包括关系模型、ER模型、数据库设计的基本原则、数据规范化等。 3. SQL语言:包括SQL语言基础、数据查询语句、数据修改语句、数据控制语句等。 4. 数据库管理:包括数据库的备份与恢复、事务管理、数据库安全与权限控制等。 5. 数据库应用开发:包括基于数据库的应用程序开发、数据库编程语言、数据库连接、事务处理等。 需要注意的是,不同院校对数据库考研复试的考查内容可能会有所不同,以上仅是一些常见的考查内容,考生需要结合自己所报考的院校和专业进行有针对性的备考。 ### 回答2: 数据库考研复试常考知识点主要包括以下几个方面。 1. 数据库基础知识:包括数据库的概念、数据库管理系统(DBMS)的基本原理和功能,数据库的组成和分类等。 2. 数据库设计:包括关系数据库的概念和特点,关系模型的基本概念和代数运算,实体-关系模型(ER模型)的基本概念和表示方法,关系数据库的设计步骤和规范等。 3. 数据库查询:包括结构化查询语言(SQL)的基本语法和常用查询语句,如SELECT、INSERT、UPDATE和DELETE等,SQL查询的基本原理和优化技巧,常用的查询操作和函数等。 4. 数据库事务和并发控制:包括事务的概念、特性和属性,事务的隔离级别和并发控制的基本原理和方法,如锁机制、并发控制算法和恢复机制等。 5. 数据库存储和索引:包括数据库存储结构和文件组织,数据存储的方法和策略,索引的概念和分类,索引的创建、使用和优化等。 6. 数据库安全和完整性:包括数据库的安全性、权限控制和用户管理,数据库的完整性约束和触发器,数据库备份和恢复等。 以上是数据库考研复试常考知识点的一个概述,具体的考点和题型可能会因不同学校和考试而有所不同。备考时,应结合具体复试要求和题型特点进行有针对性的学习和准备。 ### 回答3: 数据库考研复试常考知识点主要包括以下几个方面。 首先是数据库基础知识。必须熟悉关系数据库的概念和基本术语,了解数据库的组成和体系结构,知道数据库的分类和特点。还需要了解关系模型、数据模型和数据独立性等基本概念。 其次是数据库设计与规范化。需要掌握实体-关系模型的基本原理和表示方法,了解关系数据库设计的一般步骤和方法。还需要理解数据规范化的理论和方法,了解各个范式的定义和应用。 第三是SQL语言。需要熟悉SQL语言的基本语法和常用命令,包括数据查询、数据更新、数据插入、数据删除等。还需要了解SQL语言的高级特性,如连接查询、嵌套查询、聚合查询等。 第四是数据库索引和优化。需要掌握数据库索引的概念和作用,了解索引的种类和建立方法。还需要了解数据库的优化策略和优化技术,如查询优化、物理存储优化等。 最后是数据库管理与安全。需要了解数据库管理的基本任务和工作内容,掌握数据库备份和恢复的方法。还需要了解数据库的安全性和权限管理,理解用户和角色的概念,掌握用户管理和权限控制的方法。 综上所述,数据库考研复试常考知识点涵盖了数据库基础知识、数据库设计与规范化、SQL语言、数据库索引和优化以及数据库管理与安全等方面。只有对这些知识点有全面的了解和掌握,才能在考试中取得好成绩。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值