计算机操作系统面试题总结(1)

操作系统面试题总结(1)

单道批处理系统:内存中只有一道程序运行,只有等该程序运行结束后才能调入下一道程序,CPU有大量的时间在空闲等待I/O完成。

多道批处理系统:每次向内存中输入多道程序,并发执行,共享计算机资源。资源利用率大幅度提升,CPU和其他资源保持忙碌状态,系统吞吐量大。

缺点:没有人机交互功能。只能等待计算机处理完成,中间不能控制作业执行,时分就可以解决。

分时操作系统:计算机以时间片为单位,轮流为各个用户/作业服务,各个用户可以通过终端与计算机进行交互。

主要优点:用户请求可以随时被响应,解决交互问题。

缺点:不能优先处理一些紧急的任务,完全公平,不区分任务的紧急性。

实时操作系统:主要优先响应一些紧急任务,其他紧急任务不需要时间片排队。
在实时操作系统的控制之下,计算机接受到外部信号后及时进行处理,并且在严格的时间限制内处理完事件,实时操作系统的主要特点:及时性和可靠性。

运行机制:两个指令+两种处理状态+两种程序
操作系统内核:时钟管理+中断处理+原语+对系统要进行的管理的功能
体系结构:大内核+微内核

指令:处理器cpu能识别执行的最基本命令
特权指令:不允许普通用户程序使用
非特权指令:允许

问:cpu如何判断是否可执行?
两种处理器状态:用户态(目态)&核心态(管态)
用程序状态字寄存器(PSW)中的某一个标志位来标识的,比如0为用户态1为核心态。

两种程序:内核程序——系统的管理者,运行在核心态
应用程序:普通应用程序只能执行非特权指令,运行在用户态

操作系统内核: 内核是计算机上配置的底层软件,是操作系统最基本最核心的部分。

大内核:文件管理,内存管理(存储器管理),进程管理,设备管理;时钟管理,中断处理,原语(设备驱动,cpu切换);——各种主要功能的模块作为系统内核,运行在核心态。

与硬件关联最紧密的模块:时钟管理+中断处理+原语(具有原子性——一旦运行只能一气呵成,不可以中断)

微内核——只把最基本的功能保留在内核,优点:内核功能少,结构清晰,方便维护;缺点:需要频繁的在核心态和用户态之间切换,性能低。

类似: 操作系统的体系结构的问题与企业的管理问题十分相似。内核就是企业的管理层,负责一些重要的工作,只有管理层才能执行特权指令。
大内核:初期创业,都是管理层,优点效率高,但是缺点是组织结构混乱,难以维护 微内核:企业越来越大,管理层只负责最核心工作,结构清晰,方便维护,但是缺点就是效率低。

中断和异常
引入中断机制后,实现了多道程序并发执行本质,发生中断就意味着需要操作系统介入,开展管理工作。

  • 中断发生时,cpu立即进入核心态
  • 中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
  • 对于不同中断信号,会进行不同的处理
  • 需要使用特权指令,因此需要cpu从用户态转化为核心态,中断可以使cpu从用户态切换为核心态,使得操作系统获得计算机的控制权
  • 所以中断是实现从用户态到核心态的唯一途径,
  • 核心态到用户态的切换则只需执行一个特权指令即可(如psw)

内中断

  • 陷阱:有意而为之的异常,比如系统调用
  • 故障:有错误条件而引起的,可能被故障处理程序修复,比如缺页
  • 终止:不可恢复的致命错误,终止程序不再将控制返回给引发终止的应用程序,比如整除0

外中断

  • I/O中断请求
  • 人工干预

处理过程

  • 每条指令执行结束之后,cpu检查是否外部中断信号
  • 若有外部中断信号,则需要保护被中断的进程的cpu环境
  • 根据中断信号类型转入相应的中断处理程序
  • 恢复进程的cpu环境,并推出中断,返回原程序继续往下执行
系统调用

操作系统,作为用户和计算机之间的接口,需要向上提供一些简单易用的服务,包括命令接口和程序接口,其中,程序接口由一组系统调用构成。

用户接口:分为命令接口(允许用户直接使用)与程序接口(允许用户通过程序间接使用——由一组系统调用构成)
一个是面向用户,另一个面向应用程序或者是说面向编程人员的

应用程序通过系统调用,请求操作系统的服务。(核心态下)系统中各种共享资源都有操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作,都必须通过系统调用的发过誓,操作系统提出请求,由操作系统代完成,这样可以保证系统的稳定性和安全性,防止非法操作。

系统调用按功能分类:设备管理、文件管理、进程控制、进程通信、内存管理。

**系统调用的背后过程:**传递系统调用的参数-执行陷入指令(用户态)-执行系统调用相应服务程序(核心态)-返回用户程序
注意:

  • 陷入指令实在用户态下执行的,执行后指令立即引发一个内中断,从而cpu进入核心态
  • 发出请求是在用户态下,而对系统调用必须在核心态下进行
  • 陷入指令是用户态转入核心态。

为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念。

PCB、程序段、数据段三部分组成了进程实体。(进程映像)

系统为每一个运行的程序配置一个数据结构,称之为进程控制块PCB。用来描输进程的各种信息(如程序代码存放在什么位置)

创建一个进程,就创建了一个进程实体中的pcb。

  • 进程是程序的一次执行过程
  • 进程是一个程序以及数据在处理机上顺序执行时,所发生的活动
  • 进程时具有独立功能的功能在数据集合上的运行过程,他是系统进行资源分配和调度的一个单位
  • 强调动态性!!!!
进程的定义:进程实体的运行过程,在系统调用时进行资源分配和调度的一个独立单位

进程实体是静态的,而进程强调的是动态性。

PCB:
进程描输信息,进程标识符pid+用户标识符uid
进程控制和管理信息:进程当前状态、进程优先级
资源分配清单:程序段指针、数据段指针、键盘、鼠标
处理机相关信息:各种寄存器的值(因为在进程切换过程中,可能有些数据算到一半,中间结果保存在寄存器当中的,为了下一次可以继续执行,就要保存在pcb中)

所以进程的管理者(操作系统)所需要的数据几乎都存放在pcb中的。
程序段和数据段,几乎存放程序本身运行所需要的数据

进程的组织方式:链式(队列)&&索引(索引表)

例如:队列
执行指针,指向当前处于运行状态的进程
就绪队列指针:指向当前处于就绪态的进程
阻塞队列指针::指向当前处于阻塞态的进程,很多操作系统还会根据阻塞原因不同,分为多个阻塞队列。

进程的特征

  • 动态性:进程最基本的特征
  • 并发性:内存中多个进程实体,各进程可以并发执行
  • 独立性:进程是资源分配,接受调度的基本单位
  • 异步性:会导致并发程序执行结果的不确定性
  • 结构性:每个进程都会配置一个pcb

进程的状态会变化的,为了方便管理,操作系统对他进行了合理的划分——运行、就绪、阻塞

(单核处理情况下,只有一个进程处于运行态)

就绪态说明,已经具备了运行的条件,但由于没有空闲的cpu,而暂时不能运行,即万事俱备只欠cpu了;

是阻塞态,因某一个事件而暂时不能进行。

其实还有另外两种状态:初始化pcb(为进程分配pid);由于运行结束(或者bug),无法继续下去,所以需要撤销或回收进程,需要后续工作,即处于终止态。

进程状态的转换注意事项:

  • 运行态到阻塞态其实是进程用系统调用的方式申请某种系统资源,或者请求等待某个事件发生,是一种进程自身做出的主动行为。
  • 阻塞态到就绪态,是一种被动行为。
  • 不能由阻塞态直接转换为运行态,也不能由就绪态直接转换为阻塞态。

进程控制:由原语进行控制,进程控制主要功能是对系统中所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现状态转换等功能。

简化:进程控制就是实现进程状态的转换

用原语实现进程控制,原语的特点是执行期间,不允许中断,只能一气呵成。
这种不可被中断的操作即原子操作。
原语采用“关中断指令”和“开中断指令”实现

关/开中断指令,必须在核心态下运行;原语,属于操作系统内核。

原语

创建原语:申请空白pcb;为新进程分配所需要的资源;初始化pcb;将pcb纳入就绪队列。它,实现了一个进程从无到有的过程。

引起进程创建的事件:用户登录;作业调度;提供服务;应用请求。

撤销原语:从pcb集合中找到终止进程的pcb;若进程正在运行,立即剥夺cpu,将cpu分配给其他进程;终止其所有子进程;将该进程所拥有的所有资源归还给父进程或者操作系统;删除pcb。

同时还有阻塞原语(运行态->阻塞态)和唤醒原语(阻塞态—>就绪态)。

最后还提供了 切换原语,可能由以下情况切换:

  • 当前进程时间片到
  • 有更高优先级的进程到达
  • 当前进程主动阻塞
  • 当前进程终止

ps:阻塞和唤醒原语必须成对出现。

进程间通信

——共享存储

  1. 基于数据结构的共享:速度慢、限制多、是一种低级的通信方式
  2. 基于存储区的共享:自由些、更快、更高级的通信方式

——管道通信

  1. 管道只能半双工的通信,在某个时间段只能实现单向传输,如果要实现双向同时,需要设置两个管道
  2. 各进程需互斥的访问管道
  3. 以字符流形式写入
  4. 如果没写满,不允许读;如果没读空,也不许写;
  5. 读进程最多只能有一个,否则会出现读错

——消息传递

  1. 数据交换以格式化的消息为单位,进程通过操作系统提供的“发生/接受消息”两个原语进行数据交换。
  2. 消息由消息头和消息体组成
  3. 消息传递:直接通信方式(直接挂到接受进程的消息缓存队列上)/间接通信方式(通过中间实体)
线程

进程是程序的一次执行,显然有些进程需要同时运行更多的程序;传统进程过程中,程序是执行流的最小单位。
进程中可能包含更多的线程,并发执行;
引入线程后,每个进程可以有多的线程,也是程序执行流的最小单位。也是基本的cpu的执行单元。
这样一个进程能也可以线程并发执行;进程只作为除cpu以外的系统资源的分配单元。
资源分配、调度:进程——资源分配基本单位 ;线程——调度的基本单位
并发性:各个线程内也可并发,提高了并发度
系统开销:传统的,开销会更大;而线程并发,并不需要切换进程环境,系统开销小;

线程属性:

  • 线程是处理机调度的最小单位
  • 多cpu的计算机中,各个线程可占用不同的cpu
  • 每个线程都有一个线程id,线程控制块TCB
  • 线程也有就绪运行阻塞三个基本状态
  • 线程几乎不拥有系统资源
  • 同一个进程的不同线程可以共享进程资源,共享空间

线程的实现方式:

  • 用户级线程:由应用程序负责,通过线程库中实现,用户态下即可完成;从用户的视角可以看到的线程
  • 内核级线程:管理由操作系统内核管理,核心态下完成,从操作系统内核角度可以看到的线程。

PS:内核级线程是处理机分配的单位,操作系统只看得见内核级线程。

多线程模型:

—— 多对一模型:多个用户及线程映射到一个内核级线程。每个用户进程只对应一个内核级线程。

优点:用户态下即可,开销小,效率高;缺点:当一个用户级线程被阻塞,整个进程会被阻塞,并发度不高,多个线程不可在多核处理机上并行运行。

—— 一对一模型:一个用户及线程映射到一个内核级线程。每个用户进程有进程与用户线程同数量的内核线程。

优点:并发性强,一个阻塞,还是可以运行。缺点:一个用户进程会占用多个内核级线程,线程切换有操作系统内核完成,需要切换到核心态,因此线程管理的成本高,开销大。

—— 多对多模型:克服了上面两个模型的缺陷;

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值