热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

自考之路—操作系统阶段小结

【前言】操作系统概论是题型相对比较固定的一科,经过几套自考题的深入钻研,略微的总结了一下此科的考点以及要注意的事项!【知识小结】一、操作系统概论1、计算机系统:硬件由中央处理器、存储器、输入输出控制

【前言】

操作系统概论是题型相对比较固定的一科,经过几套自考题的深入钻研,略微的总结了一下此科的考点以及要注意的事项!

【知识小结】

一、 操作系统概论

1、计算机系统:硬件由中央处理器、存储器、输入输出控制系统、各种输入输出设备组成、软件由系统软件、支撑软件、应用软件组成;

2、操作系统:是管理计算机系统资源、控制程序执行、改善人机界面和为应用软件提供支持的一种系统软件;主要作用有:1、管理计算机系统资源;2、为用户提供方便的使用接口;3、扩充硬件;

 操作系统按功能分为:处理器管理、存储管理、文件管理、设备管理;

 操作系统的类型:批处理操作系统、分时操作系统、实时操作系统;

 微机操作系统、网络操作系统、分布式操作系统、嵌入式操作系统

3、处理器的工作状态:

特权指令:不允许用户程序中直接执行的指令称特权指令;

管态和目态:能执行特权指令时称管态,否则称目态

4、程序状态字:用来控制指令执行顺序并且保留和指示与程序有关的系统状态,分成程序基本状态、中断码、中断屏蔽位三个部分;

操作系统与用户程序的接口:系统调用 操作系统与用户的接口:操作控制命令;

 

二、 处理器管理

1、 多道程序设计:是指允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法。

 多道程序技术运行的特征:多道、宏观上并行、微观上串行。

 多道程序设计不仅提高了处理器的利用率,而且降低了完成计算所需的总时间、从而提高了单位时间内的算题能力,也提高了吞吐量。

2、 进程的概念:把一个程序在一个数据集上的一次执行称为一个进程。

 为什么要引入进程:1.提高资源的利用率;2.正确描述程序的执行情况

 进程的属性:1.进程是动态的,它包含了数据和运行在数据集上的程序

                2.多个进程可以含有相同的程序

                3.多个进程可以并发执行

                4.进程有三种基本状态:等待态、就绪态、运行态。

     每个进程在执行过程中的任一时刻当且仅当处于上述三种基本状态之一。(运行态-等待态、等待态-就绪态、运行态-就绪态、就绪态-运行态)

 进程的三个特性:动态性、并发性、异步性。

3、 进程控制块:是对进程进行管理和调度的信息集合。它包含四类信息:标识信息、说明信息、现场信息、管理信息。

 原语:操作系统中往往设计一些能完成特定功能且不可中断的过程,称为原语。

原语分为两类:1.机器指令级:其特点是执行期间不允许中断,是一个不可分割的单位。

2.功能级的:其特点是作为原语程序段不允许并发执行。

 用于进程控制的原语有:

1. 创建原语:为一个程序分配一个工作区和建立一个进程控制块,并置该进程为就绪态;

2. 撤销原语:一个进程完成工作后,收回它的工作区和进程控制块;

3. 阻塞原语:进程运行过程中发生等待事件时,把进程改为等待态;

4. 唤醒原语:当进程等待事件发生时,把进程的状态改为就绪态。

 

4、 进程队列:把处于相同状态的进程链接在一起,称进程队列,由于进程控制块能标示进程的存在和动态刻画进程的特性,因此,进程队列可以用进程控制块的链接来形成。(两种链接方式:单向和双向)

 进程的基本队列:1.就绪队列:由若干就绪进程按一定次序链接起来的队列;

                    2.等待队列:把等待资源或等待某些事件的进程排队的队列。

 出队:一个进程从所在的队列退出的操作称为出队;

 入队:一个进程排入到一个指定的队列称为入队;

 队列管理:系统中负责进程出队和入队的工作称为队列管理。

5、 中断与中断处理:由于某些事件的出现,中止现行进程的运行,而由操作系统去处理出现的事件,待适当的时候让被中止的进程继续运行,这个过程称为中断。而引起中断的事件称为中断源。对出现的事件进行处理的程序称为中断处理程序

 中断事件的类型:

一、强迫性中断事件:是由于外界的原因迫使正在运行的进程被打断,不是正在运行的进程所期待的,称为强迫性中断事件。断点可能发生在任何位置。包括以下事件:

 硬件故障中断:它是由机器故障造成的。

 程序中断:是由于程序执行到某条机器指令时可能出现的各种问题而引起的中断。

 外部中断:这是由各种外部事件引起的中断。

 输入/输出中断:输入输出控制系统发现外围设备完成了输入输出操作而引起的中断,或在执行输入输出操作时通道或外围设备产生错误而引起的中断。

二、自愿性中断事件:表示正在运行的进程对操作系统有某种需求,是正在运行的进程所期待的,称为自愿性中断事件。在小型和微型计算机中称系统调用。自愿中断的断电是确定的。包括:

 访管中断:它是正在运行的进程为了请求调用操作系统的某个功能而执行一条访管指令而引起的中断。

 中断响应:处理器没执行一条指令后,硬件的中断装置立即检查有无中断事件发生,若有,则暂停现行进程的执行,而让操作系统的中断处理程序占用处理器,这一过程称中断响应

中断响应过程中,中断装置的三项工作:

 判断是否有中断事件发生;

 判别自愿性中断,只要检查操作码是否为访管指令即可;

 判别强迫性中断,则要检查中断寄存器的内容。若为0则无中断,若非0则有中断发生,若有中断发生,保护断点信息。

 程序状态字(PSW):每一个程序都有一个程序状态字来反映本程序的执行状态,如基本状态、中断码和中断屏蔽位等内容。

 程序状态字寄存器:系统设置一个用来存放当前运行进程的PSW的寄存器。

 三种PSW:

 当前PSW:放在程序状态寄存器中断的PSW是当前正在占用处理器的进程的PSW。

 PSW:中断处理程序的PSW。

 PSW:把保护好的被中断进程的PSW称为旧PSW。

 当出现中断事件后,把被中断进程的PSW保存为旧PSW,即完成断点信息保护

 启动操作系统的中断处理程序工作:中断装置通过交换PSW”过程完成此项任务,即把出现的中断事件放到当前PSW中断码位置,然后当前PSW保存为旧PSW,再把操作系统中断处理程序的新PSW送到程序状态字寄存器中,称为当前的PSW。

 中断处理:中断处理程序对中断事件的处理分两步:第一步是保护好被中断进程的现场信息,即把中断进程的通用寄存器和控制寄存器内容以及被中断进程的旧PSW保存起来,这些信息可以保存在被中断进程的进程控制块。第二步是根据旧PSW中指示的中断事件进行具体处理。

 各类中断事件的处理原则:多数情况下,中断处理程序只需做一些现场保护、分析事件性质等原则性的处理,而具体的处理可由适当的例行程序来完成。

6、 处理器调度:处理器的两级调度:作业调度和进程调度。

 在操作系统中,把磁盘上用来存放作业信息的专业区域称为输入井,把在输入井中等待处理的作业称为后备作业

 作业调度:从输入井中选取后备作业装入主存储器的工作称为作业调用。(必须遵循一个必要条件:即系统现有的尚未分配的资源可以满足被选作业的资源要求)。

 进程调度的职责:按选定的进程调度算法从就绪队列中选择一个进程,让它占用处理器。

 选择进程调度算法的几个准则:1.提高处理器的利用率;2.增大吞吐量;3.减少等待时间;4.缩短响应时间。

 作业调度算法:设计算法是时考虑的原则:公平性、平衡资源使用、极大的流量。

先来先服务(FCFS)方法:按照作业进入输入井的先后次序来挑选作业,先进入的作业优先被挑选。优点(具有一点的公平性,容易实现。)缺点(可能使计算时间短的作业周转时间很长,从而也增加了平均周转时间,降低了系统的吞吐能力。)

短作业优先算法(SJF):对预计执行时间短的作业(进程)优先分派处理器。优点(改善平均周转时间和平均带权周转时间,缩短作业的等待时间;提高系统的吞吐量)。缺点(对长作业非常不利,可能长时间得不到执行;未能依据作业的紧迫程度来划分执行的优先级;难以准确估计作业(进程)的执行时间,从而影响调度的性能。)

l 最高响应比优化法:同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。

l 优先级调度算法:为每一个作业确定一个优先级,优先级高的作业优先被选取,当几个作业有相同优先级时,对这些具有相同优先级的作业再按照先来先服务原则进行调度。

l 均衡调度算法:这种算法是根据作业对资源的要求进行分类,作业调度轮流从不同的作业中去挑选作业,尽可能地使得不同资源的作业同时执行。

 进程切换:一个进程让出处理器由另一个进程占用处理器的过程称。以下情况会引起进程切换:

1.一个进程从运行状态变成等待状态;  2.一个进程从运行状态变成就绪状态;

3.一个进程从等待状态变成就绪状态;  4.一个进程完成工作后背撤销。

 常用的进程调度算法有以下几种:

1. 先来先服务调度算法:按进程先进入就绪队列的先后次序选择可以占用处理器的进程。

2. 最高优先级调度算法:进程调度总是让当时具有最高优先级的进程先使用处理器。(对于高优先级进程占用处理器的两种对待方式:非抢占式和可抢占式)

3. 时间片轮转调度算法:时间片是指允许进程一次占用处理器的最长时间。时间片轮转调度算法让就绪进程按就绪的先后次序排成队列,每次总选择该队列中第一个进程占用处理器,但规定只能使用一个时间片,如该进程尚未完成,则排入队尾,等待下一个供它使用的时间片。(该算法经常用于分时操作系统中)

7、 线程的概念:又称轻型进程,线程是程序执行流的最小单元。一个线程由线程ID,当前指令指针,寄存器集合和堆栈组成。线程有就绪、阻塞和运行三钟基本状态。

 引入线程的原因:进程可以提高CPU的利用率,进程之间的切换是非常耗费资源和时间的,为了能更进一步的提高操作系统的并发性,从而引进了线程。

 线程的属性:

1. 同一进程中的各线程驻留在分配给进程的主存地址空间中,且共享该进程的所有资源。

2. 一个线程被创建后便开始了他的生命周期,直到执行结束而终止。线程在生命周期内会经历等待态、就绪态和运行态。

3. 线程是处理器的独立调度单位,多个线程可以并发执行。

4. 不同线程可以执行相同的处理程序,即一个服务程序被不同的用户调用时,操作系统为他们创建不同的线程。

 进程与线程的根本区别是把进程作为资源分配单位,而线程是调度和执行单位。每一个进程都有自己的主存空间,但同一进程中的各线程共享该进程的主存空间,进程中所有线程对进程的整个主存空间都有存取权限。

三、 存储管理

1. 计算机系统中的存储器:存储器可分为:寄存器、主存储器和高速缓冲存储器、辅助存储器(包括磁带、软盘、硬盘、光盘等)三个层次。

 寄存器:计算机中价格最昂贵的存储器,它的存取速度快,但容量小。

常用的有:指令寄存器--用于存放当前从主存储器中读出的指令;

          通用寄存器--用于存放当前参加运算的操作数、操作结果等;

          控制寄存器--用于存放控制信息以保证程序的正确执行和系统的安全。

 主存储器:唯一能够由CPU直接访问的存储器。存储容量较大,存储速度也较快。主存用于存放用户当前需要执行的程序和数据,以及操作系统进行控制和管理的信息。

 高速缓冲存储器:速度快于主存,造价高于主存,存储容量不大。用于存放经常被访问的单元,以提高主存的速度。

 辅助存储器:存储容量大,可用来长期存储信息,但处理器不能直接读/写辅助存储器,故速度较慢。用于存放当前暂不参与运行的程序和数据以及一些需要永久性保存的信息。

2. 重定位:把逻辑地址转换称绝对地址的工作称为重定位或者地址转换。

 绝对地址:主存储器以字节为编址单位,容量为n的主存储器中,每个单元有唯一的编号,从0到n-1,这个唯一的编号就是主存储器的绝对地址,与绝对地址对应的主存空间称为物理地址空间

 逻辑地址:在多道程序设计的系统中,操作系统为了方便用户,就允许每个用户都认为自己的作业的程序和数据存放在地址是0开始的连续空间中。这样用户程序中使用的地址就是逻辑地址,与其对应的存储空间称为逻辑地址空间

 静态重定位:在装入一个作业时,把作业中的指令地址和数据地址全部转换成绝对地址,由于地址转换工作是在作业执行前集中一次完成的,所以在作业执行过程中就无需再进行地址转换工作,这种定位方式称为静态重定位。

 动态重定位:在装入一个作业时,不进行地址转换,而是直接把作业装到分配的主区域中。在作业执行过程中,每当执行一条指令时都由硬件的地址转换机构转换成绝对地址。这种方式的地址转换是在作业执行时动态完成的。

 动态重定位由软件(操作系统)和硬件(地址转换机构)相互配合来实现,动态重定位的系统支持“程序浮动”,而静态重定位则不能。

3. 单用户连续存储管理:是一种最简单的存储管理方式。在这种管理方式下,操作系统占了一部分主存空间,其余剩下的主存空间都分配给一个作用使用,即任何时刻主存储器中最多只有一个作业。

 地址转换方法如下:1.设置一个界限寄存器(BR),其内容是主存中用户区的首地址,只当操作系统功能扩充或修改时,改变了所占区域的长度,才更改界限寄存器的内容。

                  2.绝对地址=逻辑地址+BR的值(界限地址)

                  3.采用静态重定位。

 处理器在执行指令时要检查其绝对地址是否>=界限地址a,且<=最大地址c。若绝对地址在规定的范围内,则可执行,否则产生一个“地址越界”中断事件,由操作系统进行处理,以达到存储保护的目的。

4. 固定分区存储管理:把主存储器中可分配的用户区域预先划分成若干个连续区,每一个连续区称为一个分区,一旦划分好后,这些分区的大小和个数就固定不变。

 固定分区管理利用一张“主存分配表”说明各分区情况。表中指出各分区的起始地址和长度,并为每一个分区设置标志位。当标志位为0时表示空闲,非0时表示已被占用。

5. 可变分区存储管理

 

6. 页式虚拟存储管理


【小结】

知识的联系需要靠自我的联想,跟多的是与其他伙伴的交流,加深印象。记是记不住的!最好的学是教!


推荐阅读
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 性能测试中的关键监控指标与深入分析
    在软件性能测试中,关键监控指标的选取至关重要。主要目的包括:1. 评估系统的当前性能,确保其符合预期的性能标准;2. 发现软件性能瓶颈,定位潜在问题;3. 优化系统性能,提高用户体验。通过综合分析这些指标,可以全面了解系统的运行状态,为后续的性能改进提供科学依据。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • Java并发机制详解及其在数据安全性保障中的应用方案 ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • ZooKeeper 是一个高性能的分布式数据管理和协调框架,通过实现 Paxos 算法确保了分布式环境中的数据强一致性。本文深入探讨了 ZooKeeper 的数据模型及其在复杂分布式系统中的高级应用场景,包括配置管理、命名服务和分布式锁等关键功能。通过实际案例分析,展示了如何利用 ZooKeeper 提高系统的可靠性和可扩展性。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
author-avatar
郝泓帥_169
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有