【系统架构设计师】二、操作系统知识(操作系统概述|进程管理)

举报
帅次 发表于 2024/11/20 14:35:18 2024/11/20
【摘要】 操作系统有三个重要的作用: 第一:管理计算机中运行的程序和分配各种软硬件资源; 第二:为用户提供友善的人机界面; 第三:为应用程序的开发和运行提供一个高效率的平台。 操作系统的4个特征是并发性、共享性、虚拟性和不确定性。

 一、操作系统概述

1.1 操作系统定义

  • 操作系统定义:能有效地组织和管理系统中的各种软/硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。

  • 操作系统有三个重要的作用:
    • 第一:管理计算机中运行的程序和分配各种软硬件资源;

    • 第二:为用户提供友善的人机界面;

    • 第三:为应用程序的开发和运行提供一个高效率的平台。

  • 操作系统的4个特征是并发性、共享性、虚拟性和不确定性

1.2 操作系统的功能

  • 1.进程管理。实质上是对处理机的执行“时间”进行管理,采用多道程序等技术将CPU的时间合理地分配给每个任务,主要包括进程控制、进程同步、进程通信和进程调度。

  • 2.文件管理。主要包括文件存储空间管理、目录管理、文件的读/写管理和存取控制。

  • 3.存储管理。存储管理是对主存储器“空间”进行管理,主要包括存储分配与回收、存储保护、地址映射(变换)和主存扩充。

  • 4.设备管理。实质是对硬件设备的管理,包括对输入/输出设备的分配、启(4)动、完成和回收

  • 5.作业管理。包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等。

1.3 操作系统的分类

  • 批处理操作系统:单道批处理和多道批处理(主机与外设可并行)

  • 分时操作系统:一个计算机系统与多个终端设备连接。将CPU 的工作时间划分为许多很短的时间片,轮流为各个终端的用户服务。

  • 实时操作系统:实时是指计算机对于外来信息能够以足够快的速度进行处理并在被控对象允许的时间范围内做出快速反应。实时系统对交互能力要求不高但要求可靠性有保障。

  • 网络操作系统:是使联网计算机能方便而有效地共享网络资源,为网络用户提供各种服务的软件和有关协议的集合。三种模式:集中模式、客户端/服务器模式、对等模式。

  • 分布式操作系统:分布式计算机系统是由多个分散的计算机经连接而成的计算机系统,系统中的计算机无主、次之分,任意两台计算机可以通过通信交换信息。

  • 微型计算机操作系统:简称微机操作系统,常用的有Windows、MacOS、Linux。

1.4 嵌入式操作系统主要特点

  • 1.微型化。从性能和成本角度考虑,希望占用的资源和系统代码量少,如内存少、字长短、运行速度有限、能源少(用微小型电池)。

  • 2.可定制。从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用需要。

  • 3.实时性。嵌入式操作系统主要应用于过程控制、数据采集、传输通信、多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求较高。

  • 4.可靠性。系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施。

  • 5.易移植性。为了提高系统的易移植性,通常采用硬件抽象层和板级支撑包的底层设计技术。

嵌入式系统初始化过程按照自底向上、从硬件到软件的次序依次为:片级初始化>板级初始化>系统初始化

二、进程管理

2.1 进程的组成与状态

  • 进程的组成:进程控制块PCB(唯一标志)、程序(描述进程要做什么)、数据(存放进程执行时所需数据)。

  • 进程基础的状态是三态图。需要熟练掌握左下图中的进程三态之间的转换。


2.2 前趋图

        用来表示哪些任务可以并行执行,哪些任务之间有顺序关系,具体如下图可知,ABC可以并行执行,但是必须ABC都执行完后,才能执行D,这就确定了两点:任务间的并行、任务间的先后顺序

        考试题型:



2.3 进程资源图

        用来表示进程和资源之间的分配和请求关系,如下图所示:


  • P代表进程,R代表资源,R方框中有几个圆球就表示有几个这种资源,在上图中,R1指向P1,表示R1有一个资源已经分配给了P1,P1指向R2,表示P1还需要请求一个R2资源才能执行。

  • 阻塞节点:某进程所请求的资源已经全部分配完毕,无法获取所需资源,该进程被阻塞了无法继续。如上图中P2。

  • 非阻塞节点:某进程所请求的资源还有剩余,可以分配给该进程继续运行。如上图中P1、P3。

  • 当一个进程资源图中所有进程都是阻塞节点时,即陷入死锁状态

进程资源图化简的方法是:先看系统还剩下多少资源没分配,再看有哪些进程是不阻塞的,接着把不阻塞的进程的所有边都去掉,形成一个孤立的点,再把系统分配给这个进程的资源回收回来。这样,系统剩余的空闲资源便多了起来,接着又去看看剩下的进程有哪些是不阻塞的,然后又把它们逐个变成孤立的点。最后,所有的资源和进程都变成孤立的点
进程的同步与互斥,基本不考,理解起来有点复杂就不描述了。

2.4 进程调度

  • 进程调度方式是指当有更高优先级的进程到来时如何分配CPU分为可剥夺和不可剥夺两种,可剥夺指当有更高优先级进程到来时,强行将正在运行进程的CPU分配给高优先级进程;不可剥夺是指高优先级进程必须等待当前进程自动释放CPU。

  • 在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度
    • 1.高级调度。高级调度又称“长调度”“作业调度”或“接纳调度”,它决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。在系统中一个作业只需经过一次高级调度。

    • 2.中级调度。中级调度又称“中程调度”或“对换调度”,它决定处于交换区中的哪个就绪进程可以调入内存,以便直接参与对CPU 的竞争。

    • 3.低级调度。低级调度又称“短程调度”或“进程调度”,它决定处于内存中的哪个就绪进程可以占用CPU。低级调度是操作系统中最活跃、最重要的调度程序,对系统的影响很大。

2.5进程调度算法

  • 先来先服务FCFS:先到达的进程优先分配CPU。用于宏观调度。

  • 时间片轮转:分配给每个进程CPU时间片,轮流使用CPU,每个进程时间片大小相同,很公平,用于微观调度。

  • 优先级调度:每个进程都拥有一个优先级,优先级大的先分配CPU。

  • 多级反馈调度:时间片轮转和优先级调度结合而成,设置多个就绪队列1,2,3..n,每个队列分别赋子不同的优先级,分配不同的时间片长度;新进程先进入队列1的末尾,按FCFS原则,执行队列1的时间片;若未能执行完进程,则转入队列2的末尾,如此重复。

2.6 死锁

        当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁

  • 死锁产生的四个必要条件:
    • 资源互斥

    • 每个进程占有资源并等待其他资源

    • 系统不能剥夺进程资源

    • 进程资源图是一个环路 死锁产生后,解决措施是打破死锁产生的四个必要条件,有下列方法:

  • 死锁预防:采用某种策略限制并发进程对于资源的请求,破坏死锁产生的四个条件之一,使系统任何时刻都不满足死锁的条件。

  • 死锁避免:一般采用银行家算法来避免,银行家算法,就是提前计算出一条不会死锁的资源分配方法,才分配资源,否则不分配资源,相当于借贷,考虑对方还得起才借钱,提前考虑好以后,就可以避免死锁。

  • 死锁检测:允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统中发生死锁,则设法加以解除。

  • 死锁解除:即死锁发生后的解除方法,如强制剥夺资源,撤销进程等。乡死锁资源计算:系统内有n个进程,每个进程都需要R个资源,那么其发生死锁的最大资源数为n*(R-1)。其不发生死锁的最小资源数为n*(R-1)+1。

2.7 进程与线程

2.7.1 进程

  • 程序运行的基本单元

  • 系统资源分配和调度的基本单位

  • 有自己独立的地址空间。

  • 多个进程可并发执行。

2.7.2 线程

  • 程序执行的最小单位

  • CPU调度和分派的基本单位

  • 没有独立的地址空间,多个线程共享地址空间。

  • 多个线程可并发执行,某一个线程可以创建和撤销另外的线程。

2.7.3 进程和线程的区别

  • 地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。

  • 资源拥有:同一进程内的线程共享本进程的资源如内存、I/O、CPU等,但是进程之间的资源是独立的。

  • 一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以使用多进程可以保证其他模块的正常运行。

  • 进程切换时,消耗的资源大,效率不高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程。

  • 执行过程:每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

  • 都可以并发执行。

  • 一个程序至少有一个进程,一个进程至少有一个线程。

系统可以看成手机。

进程可以看成手机应用(CSDN、闹钟、微信、QQ、音乐等)。

线程可以看成进程中的多种操作(如音乐应用,听音乐的同时,做一些页面查看编辑个人信息等操作)。

        线程是进程中的一个实体,是被系统独立分配和调度的基本单位。线程基本上不拥有资源,只拥有一点运行中必不可少的资源(如程序计数器、一组寄存器和栈),它可与同属一个进程的其他线程共享进程所拥有的全部资源,例如进程的公共数据、全局变量、代码、文件等资源,但不能共享线程独有的资源如线程的栈指针等标识数据。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。