程序笔记   发布时间:2022-07-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了操作系统 复习提纲 整理大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

操作系统 复习提纲 整理

核心态、用户态,它们之间的切换,尤其是用户态如何转为核心态

核心态(管态):运行在内核上,可以执行所有指令,可以访问所有内存与其他资源,可以改变处理器状态

用户态(目态):运行在一般应用程序上,只能执行非特权指令,只能访问属于该进程的内存和其他资源,不能改变处理器状态,除非采用特定的方式

它们之间的切换(从用户态到核心态):

(1)程序请求操作系统的服务,执行系统调用。

(2)程序运行时,产生中断或异常事件,运行程序被中断,转向中断处理程序或异常处理程序工作。

PS:通过中断机制发生,是用户态到核心态的仅有途径。

中断的概念

在程序执行过程中,遇到急需处理的事件时,暂停中止现行程序在CPU上的运行,转而执行相应的事件处理程序,待处理完成后再返回断点或调度其他执行程序。

中断的分类(按事件的来源和实现的手段)

硬中断:由硬件发给CPU的中断

(1)外中断(中断、异步中断),来自处理器之外的硬件产生的中断信号(键盘中断,设备中断)

①可屏蔽中断

②不可屏蔽中断:紧急情况,不可忽略,须立即处理

(2)内中断(异常、同步中断),来自处理器内部的硬件产生的中断。不可屏蔽,一旦出现须立即响应,进行处理

①访管中断:由执行系统调用而引起

②硬件故障中断:电源失效、协处理器错误、奇偶校验错误等

③程序性异常:非法操作、地址越界、页面故障、调试指令等

软中断:由软件发给软件的中断

(1)信号:用于内核或进程,对某个进程的中断

(2)软件中断:用于硬中断服务程序对内核的中断

为何外部中断有些可屏蔽,而异常都不可屏蔽

有一些中断,是比较紧急的情况,是不可以忽略的,CPU在收到这些中断信号后,必须马上进行处理,否则会引起系统的问题,这些就是不可屏蔽中断。

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

时钟是内核进行调度工作的重要工具,利用定时器能够确保内核可以获得控制权

(1)规定时间内,内核可以获得CPU控制权

(2)获取时间

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

(1)运行态(running):满足运行条件、占有CPU

(2)就绪态(ready):满足运行条件、不占有CPU(等待被调度)

(3)等待态(wait):不满足运行条件、不占有CPU,也叫睡眠,阻塞

为了便于管理,特意加了:

新建态(new)和终止态(exit),描述进程刚创建和结束时候的两种状态

挂起态(suspend),指暂时把进程换到磁盘缓冲区内

(1) 就绪→执行

处于就绪状态的进程,当进程调度分配了处理机后,该进程便由就绪状态转变成执行状态。

(2) 执行→就绪

处于执行状态的进程在其执行过程中,因分配给它的一个时间片而不得不让出处理机,于是进程从执行状态转变成就绪状态。

(3) 执行→阻塞

正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。

(4)阻塞→就绪

处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。

进程的三种上下文

(1) 用户级上下文(user level contex):进程自己的代码、数据、栈等

(2) 系统级上下文(system level contex):进程陷入内核后,内核所使用的内存管理信息表、核心栈,也包括进程控制块

(3) 寄存器上下文(register contex):各个寄存器当时的信息,用于保护和恢复现场

进程控制块的概念和作用

进程存在的唯一标识

内核用来记录和刻画进程状态的数据结构

管理和调度进程的依据

进程切换的过程

线程的概念

线程是进程中能够并发执行的实体,是进程的组成部分,也是处理器调度和分派的基本单位。传统的进程,都是运行在同一个处理器上,在同一个进程内,是串行的。

PS:线程只有三态(运行、就绪、等待)由于线程不是资源的拥有单位,挂起状态对于线程是没有意义的。

为什么要引入线程?

引入了线程,是为了减少程序并发执行时所付出的时空开销,使得并发力度更细、并发性更好。(实质是把CPU的分配权,进行进一步的细分)

对外:就可以把进程的不同部分放到不同的处理器上

对内:可以在一个功能暂时不执行时,转而去执行其他的功能

线程与进程的区别与联系

线程与进程的主要区别,就是进程有自己的独立空间,线程没有自己完全独立的空间。各个线程共享进程的代码区和全局数据区,各个线程执行的代码区的不同代码,访问全局数据的不同数据。

为什么线程没有挂起态?

由于线程不是资源的拥有单位,挂起状态对于线程是没有意义的。

(线程的挂起和激活,是随着宿主进程挂起和激活)

什么叫处理器调度

(原因:主存、处理器与作业、进程之间,永远是供不应求的关系)

按照何种原则挑选作业进入主存运行,如何把处理器进行分

衡量一个调度算法好坏的标准

①资源利用率

②吞吐量

③公平性

④响应时间

⑤周转时间

一言蔽之,先公平,后效率

同步、通信与死锁

Peterson算法(Dekker算法的演化)一种纯软件算法,通过两个变量来实现互斥访问临界区。

是免锁编程的基本算法之一,这个算法设计得很巧妙,核心就是三个标志位是怎样控制两个方法对临界区的访问的。

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

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

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

P(s):将信号量value值减1,若结果小于0,则执行P操作的进程被阻塞,排入与s信号量有关的list所指队列中;若结果大于等于0,则执行P操作的进程继续执行。

V(s):将信号量value值加1,若结果不大于0,则执行V操作的进程从信号量s有关的list所指队列中释放一个进程,使其转换为就绪态,自己则继续执行;若结果大于0,则执行V操作的进程继续执行。

另种说法:信号量:强大的同步原语,既可以用于进程同步,也可以用于进程通信信号量sem为一个整型变量,对它可以有两个操作:增加(V)、减少(P)

P操作(down):

sem - 1

if ( sem < 0 )

睡眠

V操作(up):

sem + 1

if ( sem <= 0 )

唤醒

几种进程间的通信机制

(1)信号通信机制

(2)管道通信机制

(3)共享主存通信机制

(4)信息传递机制

(5)信号量机制

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

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

这四个条件是死锁发生的必要条件,只要其中有一个不成立,则不会发生死锁

解决方法:

①死锁防止----分别破坏四个条件之一

②死锁避免----可以允许前三个条件发生,但不允许第四个条件发生

③死锁检测与恢复----定期检测,发生死锁后采取措施

④不采取任何措施

破坏条件(1):不大现实的做法,因为资源的独占性通常是不可改变的

破坏条件(2):进程运行前,只有资源全部申请到了,才能运行,运行过程中不能再申请新的资源

破坏条件(3):当进程去申请新的资源时,必须释放原来占用的资源,重新申请

破坏条件(4):建立一种策略,对资源进行分类,只能按照某种规则进行资源申请

⑤结束所有进程,重启操作系统

⑥撤销处于死锁状态的所有进程

⑦逐个撤销处于死锁状态的进程,回收其占用的资源,直到死锁解除

⑧逐个剥夺处于死锁状态进程占用的资源,直到死锁解除

⑨回滚到死锁发生前的状态

大佬总结

以上是大佬教程为你收集整理的操作系统 复习提纲 整理全部内容,希望文章能够帮你解决操作系统 复习提纲 整理所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: