为您推荐:
精华内容
最热下载
问答
  • 5星
    469KB weixin_46414659 2021-04-02 17:24:37
  • 5星
    94.18MB yn888888 2020-12-07 11:27:51
  • 5星
    1.95MB weixin_44573410 2021-02-06 22:12:45
  • 5星
    271KB weixin_44573410 2021-03-02 22:36:01
  • 5星
    4.4MB weixin_44573410 2021-04-04 23:35:03
  • 5星
    887KB weixin_44573410 2021-03-03 19:13:31
  • 5星
    837KB weixin_44573410 2021-02-06 22:13:20
  • 5星
    215KB weixin_43979304 2021-02-07 20:48:38
  • 5星
    1.83MB qq_41261490 2021-03-21 13:08:54
  • 5星
    685KB weixin_44797539 2021-06-19 15:03:10
  • 文章目录第一章 计算机系统概述1.1 操作系统的基本概念1.1 练习题1.2 操作系统的发展与分类1.2 练习题1.3 操作系统的运行环境1.3 练习题1.4 操作系统的体系结构1.4 练习题 第一章 计算机系统概述 1.1 操作系统的基本...

    第一章 计算机系统概述

    1.1 操作系统的基本概念

    1. 操作系统是计算机系统中最基本的系统软件,能控制和管理整个计算机系统的硬件与软件资源
    2. 操作系统的基本特征包括并发、共享、虚拟和异步。并发共享是操作系统两个最基本的特征。
    3. 操作系统的功能:
      处理机管理:进程控制,进程同步,进程通信,死锁处理,处理机调度等
      存储器管理:内存分配与回收,地址映射,内存保护与共享,内存扩充等
      文件管理:存储空间管理,目录管理,文件读写管理和保护等
      设备管理:缓冲管理,设备分配,设备处理和虚拟设备等
    4. 操作系统提供的接口:命令接口程序接口
    5. 命令接口分为联机命令接口脱机命令接口,程序接口由一组系统调用(也称广义指令)组成,用户通过在程序中使用这些系统调用来请求操作系统为其提供服务。
    6. 并发是指两个或多个事件在同一时间间隔内发生。
    7. 顺序性单道程序设计的基本特征。
    8. 系统调用是由操作系统提供给用户的,是操作系统为应用程序使用内核功能所提供的接口,只能通过用户程序间接使用,目的是请求系统服务。

    1.1 练习题

    1. 下面()资源不是操作系统应该管理的。
      A、CPU B、内存 C、外存 D、源程序
      D
      解析:源程序是一种计算机代码,不是操作系统的管理内容。
    2. 下列关于并发性的叙述中,正确的是()
      A、并发性是指若干事件在同一时刻发生
      B、并发性是指若干事件在不同时刻发生
      C、并发性是指若干事件在同一时间间隔内发生
      D、并发性是指若干事件在不同时间间隔内发生
      C
      解析:并发性是指若干事件在同一时间间隔内发生,而并行性是指若干事件在同一时刻发生。
    3. 【2009统考真题】单处理机系统中,可并行的是()
      I、进程与进程 II、处理机与设备 III、处理机与通道 IV、设备与设备
      A、I、II、III
      B、I、II、IV
      C、I、III、IV
      D、II、III、IV
      D
      解析:单处理机系统中,同一时刻只能有一个进程占用处理机,因此进程之间不能并行执行。
    4. 用户可以通过()两种方式来使用计算机。
      A、命令接口和函数
      B、命令接口和系统调用
      C、命令接口和文件管理
      D、设备管理方式和系统调用
      B
      解析:操作系统提供的接口:命令接口和程序接口(系统调用)。
    5. 【2010统考真题】下列选项中,操作系统提供给应用程序的接口是()
      A、系统调用
      B、中断
      C、库函数
      D、原语
      A
      解析:操作系统接口主要有命令接口和程序接口(也称系统调用)。
    6. 操作系统与用户通信接口通常不包括()
      A、shell
      B、命令解释器
      C、广义指令
      D、缓存管理指令
      D
      解析:命令解释器属于命令接口,shell是命令解析器,也属于命令接口。系统中的缓存全部由操作系统管理,对用户是透明的,操作系统不提供管理系统缓存的系统调用。
    7. 【2013统考真题】计算机开机后,操作系统最终被加载到()
      A、BIOS
      B、ROM
      C、EPROM
      D、RAM
      D
      解析:系统开机后,操作系统的程序会被自动加载到内存中的系统区,这段区域是RAM。

    1.2 操作系统的发展与分类

    1. 单道批处理系统
      特点:自动性、顺序性、单道性
      缺点:系统的资源得不到充分的利用
    2. 多道批处理系统
      特点:多道、宏观上并行、微观上串行
      优点:资源利用率高系统吞吐量大
      缺点:用户响应的时间较长、不提供人机交互能力
    3. 分时操作系统
      特点:同时性(多路性)、交互性、独立性、及时性
      优点:较好地解决了人机交互问题
    4. 实时操作系统
      硬实时操作系统:某个动作必须绝对地在规定的时刻发生,如飞行棋的飞行自动控制系统。
      软实时操作系统:能够接受偶尔违反时间规定且不会引起任何永久性的损害,如飞机订票系统。
      特点:及时性可靠性
    5. 此外还有网络操作系统、分布式操作系统、个人计算机操作系统(常见的有Windows、Linux、Macintosh等)、嵌入式操作系统、服务器操作系统、智能手机操作系统等。

    1.2 练习题

    1. 【2016统考真题】下列关于批处理系统的叙述中,正确的是()
      I、批处理系统允许多个用户与计算机直接交互
      II、批处理系统分为单道批处理系统和多道批处理系统
      III、中断技术使得多道批处理系统和I/O设备可与CPU并行工作
      A、仅II、III
      B、仅II
      C、仅I、II
      D、仅I、III
      A
      解析:批处理缺少交互能力,I错误
    2. 【2017统考真题】与单道程序系统相比,多道程序系统的优点是()
      I、CPU利用率高
      II、系统开销小
      III、系统吞吐量大
      IV、I/O设备利用率高
      A、仅I、III
      B、仅I、IV
      C、仅II、III
      D、仅I、III、IV
      D
    3. 实时系统的进程调度,通常采用()算法
      A、先来先服务
      B、时间片轮转
      C、抢占式的优先级高者优先
      D、高响应比优先
      C
      解析:实时系统必须能足够及时地处理某些紧急的外部事件,因此普遍用高优先级,并用“可抢占”来确保实时处理。
    4. 分时系统的一个重要性能是系统的响应时间,对操作系统的()因素进行改进有利于改善系统的响应时间。
      A、加大时间片
      B、采用静态页式管理
      C、优先级+非抢占式调度算法
      D、代码可重入
      C
      解析:采用优先级+非抢占式调度算法,既可让重要的作业/进程通过高优先级尽快获得系统响应,又可保证次要的作业/进程在非抢占式调度下不会迟迟得不到系统响应,二者兼顾,有利于改善系统的响应时间。
    5. 【2018统考真题】下列关于多任务操作系统的叙述中,正确的是()
      I、具有并发和并行的特点
      II、需要实现对共享资源的保护
      III、需要运行在多CPU的硬件平台上
      A、仅I
      B、仅II
      C、仅I、II
      D、I、II、III
      C
      解析:多任务操作系统可在同一时间内运行多个应用程序,I正确。多个任务必须互斥地访问共享资源,为达到这一目标必须对共享资源进行必要的保护,II正确。现代操作系统都是多任务的(主要特点是并发和并行),并不一定需要运行在多CPU的硬件上,单个CPU也可满足要求,III错误。

    1.3 操作系统的运行环境

    1. 可将CPU的状态划分为用户态(目态)和核心态(又称管态、内核态)。
    2. 大多数操作系统内核包括:时钟管理、中断机制、原语、系统控制的数据结构及处理。
    3. 发生中断或异常时,运行用户态的CPU会立即进入核心态,这是通过硬件实现的。
    4. 异常(Exception)也称内中断、例外或陷入(trap),指源自CPU执行指令内部的事件,如程序的非法操作码地址越界算术溢出、虚存系统的缺页专门的陷入指令等引起的事件。
    5. 异常不能被屏蔽,一旦出现应立即处理。
    6. 中断处理的过程
    关中断
    保存断点
    中断服务程序寻址
    保存现场和屏蔽字
    开中断
    执行中断服务程序
    关中断
    恢复现场和屏蔽字
    开中断
    中断返回
    1. 在用户程序中,凡是与资源有关的操作(如存储分配、进行I/O传输及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。
    2. 系统调用的处理需要由操作系统内核程序负责完成,要运行在核心态。用户程序可以执行陷入指令(又称访管指令trap指令)来发起系统调用,请求操作系统提供服务。
    3. 下面列举一些由用户态转向核心态的例子:
      (1)用户程序要求操作系统的服务,即系统调用
      (2)发生一次中断
      (3)用户程序中产生了一个错误状态。
      (4)用户程序中企图执行一条特权指令。
      (5)从核心态转向用户态由一条指令实现,这条指令也是特权命令,一般是中断返回指令。
    4. 若程序的运行由用户态转到核心态,则会用到访管指令,访管指令是在用户态使用的,所以它不可能是特权指令。
    5. 操作系统中,通道技术是一种硬件技术。
    6. 操作系统执行程序时,必须从起始地址开始执行。
    7. 输入/输出指令需要中断操作,中断必须在核心态下执行。
    8. 系统调用需要触发trap指令。
    9. 在中断发生后,进入操作系统的程序属于操作系统程序。

    1.3 练习题

    1. ()是操作系统必须提供的功能。
      A、图形用户界面(GUI)
      B、为进程提供系统调用命令
      C、中断处理
      D、编译源程序
      C
      解析:中断是操作系统必须提供的功能,因为计算机的各种错误都需要中断处理,核心态与用户态切换也需要中断处理。
    2. 用户程序在用户态下要使用特权指令引起的中断属于()
      A、硬件故障中断
      B、程序中断
      C、外部中断
      D、访管中断
      D
      解析:要使用特权指令,就先要转成核心态去运行,这个过程就是访管中断。
    3. 下列操作系统的各个功能组成部分中,()可不需要硬件的支持。
      A、进程调度
      B、时钟管理
      C、地址映射
      D、中断系统
      A
      解析:中断系统和地址映射显然都需要硬件支持,因为中断指令和地址映射中的重定位都是离不开硬件支持的。而时钟管理中,重置时钟等是由硬件直接完成的。进程调度由调度算法决定CPU使用权,由操作系统实现,无须硬件的支持。
    4. 计算机区分核心态和用户态指令后,从核心态到用户态的转换是由操作系统程序执行后完成的,而用户态到核心态的转换则是由()完成的。
      A、硬件
      B、核心态程序
      C、用户程序
      D、中断处理程序
      A
      解析:计算机通过硬件中断机制完成由用户态到核心态的转换。中断处理程序一般也在核心态执行,因此无法完成“转换成核心态”这一任务。若由用户程序将操作系统由用户态转换到核心态,则用户程序中就可使用核心态指令,这就会威胁到计算机的安全。
    5. 只能在核心态下运行的指令是()
      A、读时钟指令
      B、置时钟指令
      C、取数指令
      D、寄存器清零
      B
      解析:若在用户态下执行“置时钟指令”,则一个用户进程可在时间片还未到之前把时钟改回去,从而导致时间片永远不会用完,进而导致该用户进程一直占用CPU,这显然不合理。
    6. 在操作系统中,只能在核心态下执行的指令是()
      A、读时钟
      B、取数
      C、广义指令
      D、寄存器清零
      C
      解析:广义指令即系统调用命令,它必然工作在核心态。(注意区分“调用”和“执行”,广义指令的调用可能发生在用户态,调用广义指令的那条指令不一定是特权指令,但广义指令存在于核心态中,所以执行一定在核心态。)
    7. 下列选项中,必须在核心态下执行的指令是()
      A、从内存中取数
      B、将运算结果装入内存
      C、算术运算
      D、输入/输出
      D
      解析:输入/输出指令涉及中断操作,而中断处理工作在核心态。
    8. 【2011统考真题】下列选项中,在用户态执行的是()
      A、命令解释程序
      B、缺页处理程序
      C、进程调度程序
      D、时钟中断处理程序
      A
      解析:缺页处理和时钟中断都属于中断,在核心态执行;进程调度是操作系统内核进程,在核心态执行;命令解释程序属于命令接口,面对用户,在用户态执行。
    9. 【2012统考真题】下列选项中,不可能在用户态发生的事件是()
      A、系统调用
      B、外部中断
      C、进程切换
      D、缺页
      C
      解析:(注意本题是“在用户态发生”,与上题的“在用户态执行”区分),系统调用是操作系统提供给用户程序的接口,发生在用户态,被调用程序在核心态下执行;外部中断是用户态到核心态的“门”,也发生在用户态,在核心态完成中断过程;进程切换属于系统调用执行过程中的事件,只能发生在核心态;缺页产生后,在用户态发生缺页中断,然后进入核心态执行缺页中断服务程序。
    10. 【2013统考真题】下列选项中,会导致用户进程从用户态切换到内核态的操作是()。
      I、整数除以零
      II、sin()函数调用
      III、read系统调用
      A、仅I、II
      B、仅I、III
      C、仅II、III
      D、I、II和III
      B
      解析:整数除零需中断处理)和read系统调用函数需要在内核态执行。
    11. 【2012统考真题】中断处理和子程序调用都需要压栈以保护现场,中断处理一定会保存而子程序调用不需要保存其内容的是()
      A、程序计数器
      B、程序状态字寄存器
      C、通用数据寄存器
      D、通用地址寄存器
      B
      解析:子程序调用只需保存程序断点,即该指令的下一条指令的地址;中断调用子程序不仅要保存断点(PC的内容),还要保存程序状态字寄存器(PSW)的内容。在中断处理中,最重要的两个寄存器是PC和PSWR。
    12. 【2014统考真题】下列指令中,不能在用户态执行的是()
      A、trap指令
      B、跳转指令
      C、压栈指令
      D、关中断指令
      D
      解析:trap指令、跳转指令、压栈指令均可以在用户态执行,其中trap指令负责由用户态转换为内核态。关中断指令为特权指令,必须在核心态才能执行。(注意:关中断指令是权限非常大的指令,因为中断是现代操作系统正常运行的核心保障之一)
    13. 【2015统考真题】内部异常(内中断)可分为故障(fault)、陷阱(trap)和终止(abort)三类。下列有关内部异常的叙述中,错误的是()
      A、内部异常的产生与当前执行指令相关
      B、内部异常的检测由CPU内部逻辑实现
      C、内部异常的响应发生在指令执行过程中
      D、内部异常处理后返回到发生异常的指令继续执行
      D
      解析:内中断是指来自CPU和内存内部产生的中断,包括程序运算引起的各种错误,如地址非法、校验错、页面失效、非法指令、用户程序执行特权指令自行中断(INT)和除数为零等,以上都是在指令的执行过程中产生的;内中断不能被屏蔽,一旦出现应立即处理;考虑到特殊情况,如除数为零和自行中断(INT)都会自动跳过中断指令,所以不会返回到发生异常的指令继续执行。
    14. 【2016统考真题】异常是指令执行过程中在处理器内部发生的特殊事件,中断是来自处理器外部的请求事件。下列关于中断或异常情况的叙述中,错误的是()
      A、“访存时缺页”属于中断
      B、“整数除以0”属于异常
      C、“DMA传送结束”属于中断
      D、“存储保护错”属于异常
      A
      解析:中断是指来自CPU执行指令以外事件的发生,如设备发出的I/O结束中断,表示设备输入/输出处理已经完成,希望处理机能够向设备发出下一个输入输出请求,同时让完成输入/输出后的程序继续运行。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。异常也称内中断、例外或陷入(trap),指源自CPU执行指令内部的事件,如程序的非法操作码、地址越界、算术溢出、虚存系统的缺页及专门的陷入指令等引起的事件。因此“访存时缺页”属于异常。
    15. 【2015统考真题】处理外部中断时,应该由操作系统保存的是()
      A、程序计数器(PC)的内容
      B、通用寄存器的内容
      C、块表(TLB)的内容
      D、Cache中的内容
      B
      解析:外部中断处理过程,PC值由中断隐指令自动保存,而通用寄存器内容由操作系统保存。
    16. 【2015统考真题】假定下列指令已装入指令寄存器,则执行时不可能导致CPU从用户态变为内核态(系统态)的是()
      A、DIV R0,R1 ;(R0)/(R1)->R0
      B、INT n ;产生软中断
      C、NOT R0 ;寄存器R0的内容取非
      D、MOV R0,addr;把地址addr处的内存数据放入寄存器R0
      C
      解析:部分指令可能出现异常导致中断,从而转到核心态,指令A有除零异常的可能;指令B为中断指令;指令D有缺页异常的可能;指令C不会发生异常。
    17. 【2017统考真题】执行系统调用的过程包括如下主要操作:
      ①返回用户态
      ②执行陷入(trap)指令
      ③传递系统调用参数
      ④执行相应的服务程序
      正确的执行顺序是()。
      A、② --> ③ --> ① --> ④
      B、② --> ④ --> ③ --> ①
      C、③ --> ② --> ④ --> ①
      D、③ --> ④ --> ② --> ①
      C
      解析:执行系统调用的过程:正在运行的进程先传递系统调用参数,然后由陷入(trap)指令负责将用户态转换为内核态,并将返回地址压入堆栈以备后用,接下来CPU执行相应的内核态服务程序最后返回用户态,选项C正确。
    18. 【2018统考真题】定时器产生时钟中断后,由时钟中断服务程序更新的部分内容是()。
      I、内核中时钟变量的值
      II、当前进程占用CPU的时间
      III、当前进程在时间片内的剩余执行时间
      A、仅I、II
      B、仅II、III
      C、仅I、III
      D、I、II、III
      D
      解析:时钟中断的主要工作是处理和时间有关的信息以及决定是否执行调度程序。和时间有关的所有信息包括系统时间、进程的时间片、延时、使用CPU的时间、各种定时器,因此I、II、III均正确。
    19. 下列关于系统调用的叙述中,正确的是()
      I、在执行系统调用服务程序的过程中,CPU处于内核态
      II、操作系统通过提供系统调用避免用户程序直接访问外设
      III、不同的操作系统为应用程序提供了统一的系统调用接口
      IV、系统调用是操作系统内核为应用程序提供服务的接口
      A、仅I、IV
      B、仅II、III
      C、仅I、II、IV
      D、仅I、III、IV
      C
      解析:用户可以在用户态调用操作系统的服务,但执行具体的系统调用服务程序是处于内核态的,I正确;用户程序需要通过系统调用使用操作系统的设备管理服务,II正确;操作系统不同,底层逻辑、实现方式均不相同,为应用程序提供的系统调用接口也不同,III错误;系统调用是用户在程序中调用操作系统提供的子功能,IV正确。

    1.4 操作系统的体系结构

    1. 操作系统的两种主要的体系结构:大内核微内核
    2. 大内核系统将操作系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为应用提供高性能的系统服务。因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的性能优势。
    3. 微内核系统将内核中最基本的功能(如进程管理等)保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低了内核的设计复杂性。微内核结构有效地分离了内核与服务、服务与服务,使得它们之间的接口更加清晰,维护的代价大大降低,各部分可以独立地优化和演进,从而保证了操作系统的可靠性。因为需要频繁地在核心态和用户态之间进行切换,操作系统的执行开销偏大,影响了系统的效率。

    1.4 练习题

    1. 相对于传统操作系统结构,采用微内核结构设计和实现操作系统具有诸多好处,下列()是微内核结构的特点。
      I、使系统更加高效
      II、添加系统服务时,不必修改内核
      III、微内核结构没有单一内核稳定
      IV、使系统更可靠
      A、I、III、IV
      B、I、II、IV
      C、II、IV
      D、I、IV
      C
      解析:微内核结构的信息交换影响了系统的效率,I错误;由于内核的服务变少,且一般来说内核的服务越少内核越稳定,所以III错;而II、IV正是微内核的优点。
    展开全文
    qq_44826711 2021-01-09 20:53:18
  • 如果没有就绪进程,系统会安排一个系统空闲进程或idle进程;系统场景:N个进程就绪、等待上CPU运行;M个CPU,M>=1;需要决策:给哪个进程分配哪个CPUCPU调度要解决的3个问题:what:按什么原则原则下一个要执行的...

    CPU调度:控制、协调进程对CPU的竞争;按一定的调度算法,从就绪序列里选一个进程,把CPU的使用权交给被选中的进程;如果没有就绪进程,系统会安排一个系统空闲进程或idle进程;

    系统场景:N个进程就绪、等待上CPU运行;M个CPU,M>=1;需要决策:给哪个进程分配哪个CPU

    CPU调度要解决的3个问题:what:按什么原则原则下一个要执行的进程,调度算法;when:合适选择,调度时机;how:如何让被选中的进程上CPU运行,调度过程(进程的上下文切换)

    CPU调度时机:事件发生—-当前运行的进程暂停—-硬件机制响应后—-进入操作系统,处理相应的事件—-结束处理后:某些进程的状态会发生变化,也可能又创建了一些新的进程—-就绪队列改变了—-需要进程调度根据预设的调度算法从就绪队列选一个进程。包括下面4个情况:

    进程正常终止 或 由于某种错误终止

    新进程创建 或 一个等待进程变成就绪

    当一个进程从运行态进入等待态

    当一个进程从运行态变为就绪态

    调度过程——进程切换:一个进程让出CPU,另一个进程占用CPU的过程;包括了对原来运行进程各种状态的保存和对新的进程各种状态的恢复。切换时要做的两件事:

    1 切换全局页目录 以 加载一个新的地址空间

    2 切换内核栈和硬件上下文,其中硬件上下文包括了内核执行新进程需要的全部信息,如CPU相关寄存器

    上下文切换具体步骤:进程a下CPU,进程b上CPU

    保存进程a的上下文环境(程序计数器、程序状态字、其他寄存器)

    用新状态和其他相关信息更新进程a的PCB

    把进程a移至合适的队列(就绪、阻塞。。)

    将进程b的状态设置为运行态

    从进程b的PCB中恢复上下文(程序计数器、程序状态字、其他寄存器。。)

    上下文切换开销:直接开销:内核完成切换所用的CPU时间;间接开销:高速缓存cache、缓冲区缓存、TLB失效

    CPU调度算法衡量指标:

    吞吐量:每单位时间完成的进程数目

    周转时间:每个进程从提出请求到运行完成的时间

    响应时间:从提出请求到第一次回应的时间

    其他:CPU利用率,CPU做有效工作的时间比例;等待时间,每个进程在就绪队列中等待的时间

    进程优先级(数):

    优先级,反映紧迫程度;

    优先数,反映优先级,UNIX优先数小的优先级高;

    静态、动态优先级。等待久的动态优先级高

    抢占与非抢占:

    抢占:有高优先级进程就绪时,系统可以强行剥夺优先级低的进程的CPU给高优先级的进程先用

    不可抢占:除非自身放弃CPU,否则一直运行

    I/O密集型和CPU密集型:

    I/O密集型,I/O型,频繁进行I/O,通常会花很多时间等待I/O操作完成;一般的输入输出程序对i/o更友好

    CPU密集型,需要大量的CPU时间进行计算

    时间片

    一个时间段,分配给调度上CPU的进程,允许该进程运行的时间长度

    如何选择时间片:考虑进程切换开销、对响应时间的要求、就绪进程个数、CPU能力、进程的行为

    批处理系统中采用的调度算法:先来先服务、最短作业优先、最短剩余时间优先、最高响应比优先

    算法选择原则:吞吐量、周转时间、CPU利用率、公平服务

    先来先服务FCFS:先进先出,按照进程就绪的先后顺序使用CPU,非抢占

    公平,实现简单,长进程后的短进程需要等很长时间,不利于用户体验

    最短作业优先SJF:具有最短完成时间的进程优先执行,非抢占

    最短剩余时间优先SRTN:就是sjf的抢占式版本,当一个新就绪的进程比当前运行进程具有更短的完成时间时,系统抢占当前进程,选择新就绪的进程执行

    短作业优先调度算法:最短的平均周转时间(前提是所有进程同时可运行时);不公平(源源不断的短任务到来,可能使长的任务长时间得不到运行,产生饥饿现象

    最高响应比优先HRRN:折中权衡,先来先服务和短作业优先的取长补短

    调度时,先计算每个进程的响应比R;之后,总是选择R最高的进程执行

    响应比R=周转时间/处理时间=(处理时间+等待时间)/ 处理时间 = 1+(等待时间/处理时间)

    交互式系统中采用的调度算法:轮转调度、最高优先级调度、多级反馈队列,最短进程优先;追求指标:响应时间、公平平衡;

    时间片轮转调度算法:目标:为短任务改善平均响应时间,解决周期性切换,每个进程分配一个时间片,时钟中断–轮换。

    如何选择合适的时间片:太长–大于典型的交互时间–退化成先来先服务算法,延长短进程的响应时间;太短–小于典型的交互时间–进程切换浪费CPU时间;经验值50ms左右;

    时间片轮转算法优缺点:公平、有利于交互式计算、响应时间快、由于进程切换,时间片轮转算法要花费较高的开销、RR对不同大小的进程是有利的,但是对于大小相同的进程可能就不利了

    虚拟轮转算法:所有I/O型进程,从等待变成就绪时,进入辅助队列,调度算法在选择进程时,首先从辅助队列选择进程,直到辅助队列为空,再去执行就绪队列,改善了时间片轮转算法对I/O型进程的不公

    最高优先级调度算法:

    选择优先级最高的进程投入运行;

    系统进程一般高于用户进程;前台进程一般高于后台进程;操作系统更偏好i/o型进程;

    优先级可以是静态的,也可以是动态变化的:优先数可以决定优先级

    就绪队列可以安札优先级组织

    实现简单;不公平,容易导致优先级低的进程产生饥饿现象

    优先级反转问题:

    基于优先级的抢占式:一个低优先级进程占有一个高优先级进程所需要的资源,使得高优先级进程等待低优先级进程运行;

    影响:系统错误;高优先级进程停滞不前,导致系统性能降低

    解决方案:

    (1)设置优先级上限:凡是进入临界区的进程,给它个高的优先级,便于先执行完,把临界区的控制权还回去,不进临界区的,给个低优先级;

    (2)优先级继承:低的阻碍了高的,他可以继承这个高的优先级,先把任务执行完,把临界区还回去

    (3)使用中断禁止:凡是进入临界区的进程就不再响应中断了,直到他出了临界区才响应中断,就保护了这个进程,让他去执行,直到把临界区还回去

    多级反馈队列调度算法:

    设置多个就绪队列,第一级队列优先级最高

    给不同就绪队列中的进程分配长度不同的时间片,第一级队列时间片最小,级别降低,时间片变长

    第一级队列为空是,在第二级队列调度,以此类推

    每个队列都按照时间片轮转方式进行调度

    当一个新创建进程就绪后,都进入第一级队列

    当进程用完时间片,而放弃CPU,进入下一级就绪队列

    由于阻塞而放弃CPU的进程进入

    各种调度算法对比

    FCFS

    Round Robin

    SJF

    SRTN

    HRRN

    Feedback

    多处理器调度算法设计:

    不仅要决定选择哪个进程执行,还要决定在哪个CPU上执行;

    要考虑进程在多个CPU之间迁移时的开销,应该尽可能使进程总是在同一个CPU上执行,考虑负载均衡问题

    典型操作系统所采用的的调度算法:

    UNIX:动态优先数法

    5.3BSD:多级反馈队列法

    Linux:抢占式调度

    Windows:基于优先级的抢占式多任务调度

    Solaris:综合调度算法

    Linux调度算法的演化过程:

    Linux2.4简单的基于优先级调度

    Linux2.6 O(1)调度算法

    Linux2.6 SD调度器补丁

    Linux2.6 RSDL调度器补丁

    Linux2.6 CFS调度算法(完全公平调度算法)

    Windows的线程调度:

    调度单位是线程(因为Windows系统支持内核级线程)

    采用基于动态优先级的、抢占式调度,结合时间配额的调整

    基本思想:

    就绪线程按照优先级进入不同的就绪队列

    操作系统总是选择优先级最高的就绪线程运行

    同一优先级的各线程按时间片轮转进行调度

    多CPU系统中允许多个线程并行运行

    Windows线程调度:

    引发条线程调度的条件:一个线程的优先级改变了

    一个线程改变了他的亲和处理机集合

    线程正常终止 或 由于某种错误终止

    新线程创建 或 一个等待线程变成就绪

    当一个线程从运行态进入阻塞态

    当一个线程从运行态变成就绪态

    线程优先级:

    windows使用32个线程优先级,分成3类:

    16-31:实时优先级线程,一旦确定就不改变优先级了

    1-15:可变优先级:可以在一定范围内提升或降低,分为基本优先级、当前优先级

    0:零页线程:用于对系统中空闲物理页面清零

    时间配额:多给点时间配额,就像是给某个进程多点时间运行

    Windows线程调度策略:

    主动切换

    抢占:当线程被抢占时,它被放回相应优先级的就绪队列的队首;处于实时优先级的线程被抢占时,时间配额被重置为一个完整的时间配额,再次上CPU运行的时候运行的是一个完整的时间配额;处于可变优先级的线程在被抢占时,时间配额不变,重新得到CPU后将运行剩余的时间配额。区别出两种不同类型的线程

    时间配额用完:1

    2

    3线程a的优先级没有降低:如果队列中有其他就绪线程,选择下一个线程执行,a回到原来就绪队列末尾;如果队列中没有其他就绪线程,系统给线程a重新分配一个新的时间配额,让他继续运行;

    线程a的优先级降低了:Windows将选择一个更高优先级的线程去运行;

    线程优先级提升与时间配额调整:1

    2

    3提升线程的优先级

    给线程分配一个很大的时间配额

    提升线程的优先级:(只针对可变优先级线程)1

    2

    3

    4

    5

    6

    7

    8

    9I/O操作完成

    信号量或时间等待结束

    前台进程中的线程完成一个等待操作

    由于窗口活动而唤醒窗口线程

    线程处于就绪态超过了一定的时间还没有被调度运行(产生了饥饿现象)

    展开全文
    weixin_34286711 2020-12-23 12:42:57
  • 操作系统的概念、功能和目标 概念(定义) 首先来一张图来看看计算机系统的层次结构: 可以看到的是,操作系统扮演这一个连接硬件和软件、用户的角色。 由此可以得出操作系统的定义: 操作系统(Operating System,...

    操作系统的概念、功能和目标

    概念(定义)

    首先来一张图来看看计算机系统的层次结构:

    在这里插入图片描述

    可以看到的是,操作系统扮演这一个连接硬件和软件、用户的角色。

    由此可以得出操作系统的定义

    操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件

    • 从中间往上下看,它控制和管理整个计算机系统的硬件和软件资源
    • 从上往下看,它提供给用户和其他软件方便的接口和环境
    • 从下往上看,它是计算机系统中最基本的系统软件,是最接近硬件的软件

    如果想要更直观的解释,我们可以打开任务管理器的界面:
    在这里插入图片描述

    这张图可以很直观的展示操作系统所干的事情。

    功能和目标

    首先结合上面操作系统的层次结构图,思考操作系统在以下三个方面的功能实现:

    • ①操作系统作为系统资源的管理者(这些资源包括软件、硬件、文件等),需要提供什么功能?
    • ②操作系统作为用户与计算机硬件之间的接口,要为其上层的用户、应用程序提供简单易用的服务,需要实现什么功能?
    • ③操作系统作为最接近硬件的层次,需要在纯硬件的基础上实现什么功能?

    这三个问题对应的层次如何所示:

    在这里插入图片描述

    补充知识

    • 进程:表示一个程序的执行过程。执行前需要将该程序放到内存中,才能被CPU处理

    首先解决第一个问题:操作系统作为资源的管理者,需要提供/实现哪些功能。

    我们拿QQ进行视频聊天的工作过程来讲解:

    使用QQ的第一步,是在各个文件夹中找到QQ安装的位置,操作系统将逐层打开文件夹,这一步涉及文件管理;第二步,就是运行QQ.exe,在这一步,操作系统会把该程序的相关数据放入到内存中,并决定放在内存中的位置,这一步涉及存储器管理(内存管理);第三步就是将QQ程序放入等待队列中,之后对应的进程将被放进处理机(CPU)中处理,这一步涉及处理机管理;最后一步,当我们需要打开摄像头跟朋友聊天的时候,操作系统会将摄像头设备分配给该进程,在摄像头使用完成后还要进行资源回收,这一步涉及设备管理。对于整个流程,操作系统必须保证这些行为都是安全高效

    总结如下图所示:
    在这里插入图片描述

    其次是第二个问题:操作系统作为用户与计算机硬件之间的接口,要为其上层的用户、应用程序提供简单易用的服务,需要实现什么功能。

    想要解决这一个问题,操作系统需要提供以下三个功能:

    • 命令接口:允许用户直接使用
    • 程序接口:允许用户通过程序间接使用
    • GUI:现代操作系统中最流行的图形用户接口

    命令接口和程序接口可以统称为用户接口,在考研当中,这两种功能经常考察

    以下是图示:

    在这里插入图片描述

    命令接口是允许用户直接使用的,其分为联机命令接口脱机命令接口

    其中,联机命令接口的特点是:用户说一句,系统做一句。而脱机命令接口的特点是:用户说一堆,系统做一堆

    下面拿两个例子来解释联机命令接口和脱机命令接口:

    例1:在Windows操作系统中,我们可以打开cmd窗口,输入time指令,窗口会返回当前系统时间,并且将操作权限返还给用户,用户随后可以设置一个新的时间。这就是一个典型的联机命令接口,或者叫交互式命令接口。

    例2:还是以Windows为例,使用Windows的搜索功能,在C盘中搜索并随便打开一个*.bat文件,可以看到里面编写着一系列的指令,文件本身就相当于一个指令清单,双击该文件,操作系统就会根据用户给出的这些一系列的指令,一条一条往下执行。这种就是典型的脱机命令接口实例,脱机命令接口也可以叫批处理命令接口

    聊完了命令接口,接下来我们聊聊程序接口。

    再拿Windows为例,我们在操作系统中能经常看见*.dll文件,例如C:\Windows\System32目录下的user32.dll,允许程序员在程序中调用该文件,实现创建窗口等功能。该功能不是由程序员实现的,而是通过程序员编写的程序进行调用,实现间接使用。详细的调用过程就是调用系统调用的过程(关于系统调用的相关概念将会在后面学习到)。

    程序接口就是由一组系统调用组成的,大部分情况可以认为程序接口=系统调用

    注意,系统调用也可以称为广义指令系统调用命令

    在这里插入图片描述

    图形用户界面这里不多赘述,其目标就是为了用户能够更加方便地操作计算机。

    最后我们聊聊第三个问题:操作系统作为最接近硬件的层次,需要在纯硬件的基础上实现什么功能。

    在这一层面上看,操作系统需要实现的最主要功能就是实现对硬件及其的拓展。在没有任何软件支持的计算机(裸机)上安装的操作系统,要能够提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器。

    如果把计算机比喻成锤子、钉子、木头,那么操作系统就应该是优秀的工匠,操作系统将这些简单的原料组织成房子、帆船、匹诺曹等等,普通用户就可以直接使用工匠提供的房子、帆船、匹诺曹,而无需关心这些东西在底层是怎么组织起来的。

    小结

    下面对知识进行总结:

    在这里插入图片描述

    其中需要以后重点掌握的是关于资源管理的四个小方面,以及系统调用的相关知识。

    操作系统的特征

    操作系统主要由四个特征:并发共享虚拟异步。其中并发和共享是操作系统两个最基本的特征,二者也互为存在条件

    并发

    并发是指两个或多个时间在同一时间间隔内发生,这些事件宏观上是同时发生的,但微观上是交替发生的。

    注意把并发跟并行区分,后者指两个或多个事件在同一时刻同时发生

    通常,一个单核处理机(CPU)同一时刻只能执行一个程序,操作系统在这里的职责就是负责协调多个程序交替执行。事实上,操作系统就是伴随着“多道程序技术”而出现的,可以说,操作系统和程序并发是一起诞生的。当然,现在的CPU一般都是多核CPU。

    共享

    共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

    共享有两种方式:互斥共享和同时共享。

    • 互斥共享是指系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源
    • 同时共享是指系统中的某些资源,允许一个时间段内有多个进程”同时“对它们进行访问

    其实,同时共享中的”同时“,往往只能表示宏观层面,微观层面上这些进程可能是交替地进行对资源的访问(分时共享)

    下面拿两个案例来理解共享的两种方式:

    例1:使用QQ和微信进行视频聊天,同一时间段内摄像头只能分配给其中一个进程,这就是互斥共享;

    例2:使用QQ发送文件A,同时使用微信发送文件B。宏观上看,两边都在同时读取并发送文件,说明两个进程都在访问硬盘资源,从中读取数据。微观上看,两个进程是交替着访问硬盘的。这就是同时共享。

    关于并发和共享

    并发性指计算机系统中同时存在着多个运行着的程序。共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。

    通过下面这个例子来看并发与共享的关系:

    使用QQ发送文件A,同时使用微信发送文件B。

    1.两个进程正在并发执行(并发性)

    2.需要共享地访问硬盘资源(共享性)

    如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义;如果失去共享性,则QQ和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发。

    虚拟

    虚拟是指把一个物理上的实体变为若干个逻辑上的对应物,前者(物理实体)是实际存在的,后者(逻辑对应物)是用户感受到的。

    下面用一个例子来理解虚拟:

    通过之前的学习我们知道,一个程序需要放入内存并给他分配CPU才能执行。假如说GTA5需要4GB的运行内存,QQ需要256MB的运行内存,网易云也需要256MB的运行内存,而我的电脑只有4GB的内存,但是却可以同时运行以上程序。问题来了:以上程序同时运行所需内存已经大于4GB了,为什么它们还可以同时运行在电脑上呢?原因就是操作系统采用了虚拟存储器技术。

    虚拟存储器技术其实就是虚拟技术中的”空分复用技术“,对于这个概念,这里只需了解,会在后续学习过程进行学习。

    再来一个例子:

    在一台单核CPU中,用户可以打开QQ、Chrome、QQ音乐等程序。一个程序需要被分配CPU才能运行,而单核CPU却能在电脑中同时运行多个程序,背后其实就是运用了虚拟处理器技术。

    虚拟处理器技术就是虚拟技术中典型的”时分复用技术“,在微观层面上处理机会在各个微小的时间段内交替着为各个进程服务。

    当然,虚拟往往也伴随着并发。

    异步

    异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。

    这里拿一个老渣与两个女孩约会的例子来解释异步:

    在这里插入图片描述

    加入两个女孩都给老渣下达了两道命令,同时要求老渣陪其吃饭和把心给她,而老渣的心和老渣的人都只有一个,假如一开始跟一号吃饭,之后一号和二号同时要求老渣把心给她,那么老渣将有两种选择,所以会有不同的约会过程。

    老渣与与一号、二号的约会相当于对两个进程的处理,每个进程都有各自需要执行的指令。老渣的心相当于有限的系统资源。由于可分配的资源有限,进程的执行不是一贯到底的,而是走走停停的,以不可预知的速度向前推进。

    显然,如果失去了并发性,那么系统只能串行的处理每个进程,每个进程的执行会一贯到底,所以,只有系统拥有并发性,才可能导致异步性。

    小结

    下面对知识进行总结:

    在这里插入图片描述

    重要考点:

    • 理解并发和并行的区别
    • 并发和共享互为存在条件
    • 没有并发和共享,就谈不,上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征

    操作系统的发展和分类

    手工操作阶段

    计算机刚被发明的时代的操作方式,那时并没有操作系统,程序员编写程序需要通过打孔机对纸带进行打孔,通过打孔与否区别二进制的1和0。机器读取纸带中的信息,并将其输入到计算机当中,计算机进行运算过后,CPU会将内存中的结果,操控机器对纸带打孔,进行结果输出。

    在这里插入图片描述

    主要缺点:用户独占主机、人机速度矛盾导致资源利用率极低

    批处理阶段

    单道批处理系统

    为了解决手工操作阶段暴露出的问题,人们引入了脱机输入/输出技术(用磁带完成),并使用**监督程序(操作系统雏形)**负责控制作业的输入、输出。

    程序员会事先将程序编写到纸带上,然后通过专门的外围控制机,把纸带机上的纸带的数据读到一个速度更快的磁带上,之后计算机直接从磁带上读取程序并处理,处理的结果将重新输送到磁带上,再通过外围控制机将结果输出到纸带上。

    在这里插入图片描述

    主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。

    主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一-道程序。CPU有大量的时间是在空闲等待I/0完成。资源利用率依然很低。

    多道批处理系统

    为了解决单道批处理系统所暴露的问题,人们发明了多道批处理系统。

    用户还是利用磁带将程序输入到计算机中,但是每次的传输将往内存传入多道程序,这些程序将在计算机中并发地执行。这个时候,操作系统正式诞生,并且引入了中断技术,由操作系统负责管理这些程序的运行。
    在这里插入图片描述

    主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源保持“忙碌”状态,系统吞吐量增大。

    主要缺点:用户响应时间长,没有人机交互功能,用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行。

    可以看到,并发和共享两大特性自操作系统诞生时就已存在

    两者的比较

    拿个例子来说明多道批处理系统相对于单道批处理系统,资源利用率为什么会大幅度提升。

    假设计算机需要处理三个作业:

    作业一:输入1秒,计算1秒,输出1秒
    作业二:输入1秒,计算1秒,输出1秒
    作业三:输入1秒,计算1秒,输出1秒

    若采用单道批处理技术:

    在这里插入图片描述

    采用多道批处理技术:

    在这里插入图片描述

    上诉两种比较很好的说明了单道批处理和多道批处理的区别,同时也要记住,操作系统的出现是在多道批处理阶段

    分时操作系统

    为了提供人机交互能力,人们发明了分时操作系统。计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。

    比如时间片为50ms,那么计算机为一个用户服务50ms之后就会处理为下一个用户服务。在这50ms当中,用户都可以通过终端跟计算机进行交互。

    在这里插入图片描述

    主要优点:用户请求可以在对应的时间片内被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
    主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。

    实时操作系统

    由于分时操作系统无法即使处理紧急任务的局限性,导致它无法被用于一些特别的场景,比如武器控制系统。所以人们发明了实时操作系统。在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。该系统的特点时及时性可靠性

    实时操作系统主要分为硬实时系统软实时系统

    • 硬实时系统要求必须在绝对严格的规定时间内完成处理,如导弹控制系统、自动驾驶系统。
    • 软实时系统规定能接收偶尔违反时间规定,如12306火车订票系统

    主要优点:能够优先响应一些紧急任务,某些紧急任务不需要时间片排队。

    其他操作系统

    网络操作系统

    伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。(如Windows NT就是一种典型的网络操作系统,网站服务器就可以使用)

    分布式操作系统

    主要特点时分布性和并行性。系统中的和泰计算机地位相同,任何工作都可以分布在这些计算机上,由他们并行、协同完成这个任务。

    个人计算机操作系统

    如Windows XP、MacOS,方便个人使用

    小结

    在这里插入图片描述

    绿框部分是考研重点内容,整体重点理解各阶段的优点和缺点,各阶段的主要优点其实都是解决了上一阶段的主要缺点。

    操作系统的运行机制与体系结构

    运行机制

    两种指令

    在将指令的类别之前,我们先来认识什么叫指令:

    简单点来说,指令就是处理器(CPU)能识别、执行的最基本命令。

    一条高级语言的代码翻译过来可能会对应多条指令:

    在这里插入图片描述

    有的指令”人畜无害“,比如加减乘除这些普通的指令;有的指令拥有很高的权限,比如内存清零指令。如果操作系统允许任意的用户程序都可以无差别地使用系统指令,那么就意味着一个用户可以将其他用户地内存数据随意清零,这样做显然是不符合安全规范地。

    为了解决上述问题,我们需要将指令划分为两种类别,并对权限加以区分:

    • 特权指令:如内存清零指令,这类指令拥有很高的权限,不允许用户程序使用
    • 非特权指令:如普通的运算指令,允许用户程序使用
    两种处理器状态

    上面我们说到指令分为两种,随之而来的有一个新问题,CPU如何判断当前是否可以执行特权指令?

    为此,我们将处理器状态划分为两种:

    • 用户态(目态):如果CPU处于用户态,那么此时CPU只能执行非特权指令
    • 核心态(管态):如果CPU处于核心态,那么CPU特权指令和非特权指令都可以执行

    在系统中使用程序状态寄存器(PSW)中的某标志位来表示当前处理器处于什么状态。

    两种程序

    对于程序而言,有些程序可以同时使用非特权指令和特权指令,而有的程序只能只用非特权指令。根据程序所能使用指令级别的不同,我们把程序分为两种:

    • 内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令,又可以执行非特权指令,运行在核心态
    • 应用程序:只能执行非特权指令,运行在用户态
    小结

    在这里插入图片描述

    操作系统内核

    内核功能细分

    在我们安装完计算机的时候,可以发现操作系统给我们提供了多种多样的功能,比如“记事本”、”任务管理器“等等。然而,有些功能看起来并不是必不可少的,就像没有“任务管理器”,我们仍然可以使用计算机。可见,计算机内部的功能结构,也由核心与非核心之称。

    再来看之前的操作系统层次结构,这次我们把它再细分:

    在这里插入图片描述

    操作系统的功能分为内核功能非内核功能。其中内核是我们比较关注的,它是计算机上配置的底层软件,是操作系统最基本、最核心的部分。

    实现操作系统内核功能的那些程序就是内核程序

    内核主要分为两部分,一部分是对系统资源进行管理的功能,主要包括进程管理、存储器管理、设备管理等功能;另一部分主要包括时钟管理(实现计时功能)、中断处理、原语(一种特殊程序,是最接近硬件的部分,这种程序的运行具有原子性,涵括设备驱动、CPU切换等)

    原子性是指一但操作就必须执行完成,不可中断,否则回到执行之前的状态。

    小结

    在这里插入图片描述

    操作系统的体系结构

    上面我们说到操作系统有内核与非内核之分。

    需要注意的是:有些操作系统并没有把对系统资源进行管理的功能归为“内核功能”,也就是说,不同的操作系统对内核的划分并不严格一致。通常可以把内核包含了上述功能体系结构的称为大内核,内核没有把上述功能划分在内的体系结构称为微内核

    它们俩的区别:
    在这里插入图片描述

    操作系统的体系结构问题与企业的管理问题很相似:

    内核就是企业的管理层,负责一些重要的工作。只有管理层才能执行特权指令,普通员工只能执行非特权指令用户态核心态之间的切换相当于普通员工和管理层之间的工作交接大内核就相当于企业初创时体量不大,管理层的人会负责大部分的事情。优点是效率高;缺点是组织结构混乱,难以维护。微内核就相当于随着企业体量越来越大,管理层只负责最核心的一-些工作。优点是组织结构清晰,方便维护;缺点是效率低。

    小结

    在这里插入图片描述

    需要注意的是,操作系统体系结构之间的差别可能做作为选择题进行考察。

    中断和异常

    中断机制的诞生

    早期的计算机是采用串行机制处理程序的,一个程序进入计算机运行结束之后,只有等待I/O程序将结果输出,才能读取运行下一个程序:

    在这里插入图片描述

    这种方式的缺点显而易见:各程序只能穿行执行、资源利用率极低。

    为了解决上述问题,人们发明了操作系统(作为计算机的管理者),同时引入了中断机制,实现了多道程序并发执行(多道批处理阶段)。
    在这里插入图片描述

    中断的本质:发生中断就意味着需要操作系统介入开展管理工作

    中断的概念和作用

    中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。

    下面说说中断机制运行的例子:

    假如计算机中有三个进程,进程一运行过程中,CPU可能受到计时部件发出的中断信号(例如过了一个时间片),此时就意味着需要操作系统的介入,因此CPU的状态将切换到核心态,对中断进行处理;此时CPU的权限会移交给操作系统,操作系统的内核负责对中断信号进行处理。此时操作系统发现刚才的中断是表明进程一的时间片已用完,所以切换到进程2执行;之后操作系统会将CPU的使用权交还给用户进程,之后进程二就会在用户态下开始执行。

    假如进程二发出系统调用(内中断信号),请求输出数据,此时CPU的状态将切换到核心态,同时移交权限给操作系统,操作系统内核再次负责对中断信号的处理,并要求打印机要是工作,此时进程二暂停运行等待I/O完成,换进程三运行,此时CPU状态返回用户态。等到I/O完成,设备向CPU发出中断信号,CPU接收到I/O设备发来的而中断信号,切换到核心态对中断进程处理。操作系统内核再次对中断信号进程处理,此时因为进程2的I/O已经完成,所以操作系统会让进程二恢复运行,以完成后续工作。

    从上面的例子我们不难发现中断有三个特点:

    • 当中断发生时,CPU立即进入核心态
    • 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
    • 对于不同的中断信号,会进行不同的处理

    发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配I/O设备等)需要使用特权指令,因此CPU要从用户态转为核心态中断可以使CPU从用户态切换为核心态使操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行

    需要注意的是,中断是CPU从用户态切换到核心态的唯一途径,核心态切换用户态只需要通过执行一个特权指令,将PSW的标志位设置为表示“用户态”的标志位

    中断的分类

    中断主要分为内中断外中断,内中断也称为异常、例外、陷入,外中断可以简称为中断(狭义上的中断就是指外中断)。

    这两种中断的区分主要根据信号的来源是CPU的内部还是外部,内中断与当前执行的指令有关,外中断与当前执行的指令无关。

    内外中断还有下面的细分:

    在这里插入图片描述

    指令中断如:系统调用时使用的访管指令。硬件故障如:缺页。软件中断如:整数除0。

    外设请求如:I/O操作完成发出的中断信号。人工干预如:用户强行终止有个进程。

    当然,有些书上也把中断做如下的细分:

    在这里插入图片描述

    但其实上面两种分类都是一样的,陷入值得就是有意为之的异常,比如系统调用;故障就是指由错误条件引起的,可能被故障处理程序修复,如缺页;终止就是无可恢复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如整数除0。

    外中断的处理过程

    下面拿一个案例来讲解外中断的处理过程:

    假如CPU正在执行某一个程序,这个程序有n条指令。CPU会按照顺序依次执行这些指令。并且它会遵循下面的步骤:

    1、在执行完每个指令之后,CPU都要检查当前是否有外部中断信号

    在这里插入图片描述

    2、如果没有检测到中断信号,则继续执行下一条指令;如果检测到外部中断信号,则需要保护被中断进程的CPU环境(如程序状态字PSW、程序计数器PC、各种通用寄存器)

    在这里插入图片描述

    3、根据中断信号类型转入相应的中断处理程序

    在这里插入图片描述

    4、恢复原进程的CPU环境并退出中断,返回原进程继续往下执行

    小结

    在这里插入图片描述

    其中,中断的概念和作用、中断的分类是考研的考点

    系统调用

    概念

    之前在介绍操作系统的概念时说到过操作系统在三个层次上应该实现的功能和目标,其中提到过在向用户提供一些简单易用的服务时,主要实现包括命令接口和程序接口,而程序接口就是由一组系统调用组成的。

    在这里插入图片描述

    系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务

    系统调用所解决的问题就是禁止多个进程随机调用计算机资源,转而由进程本身运行时只能通过系统调用的方式向操作系统发出请求,最后再由操作系统对哥哥请求进行协调管理。

    如果要来个官方一点的解释,那么应该这么说:应用程序通过系统调用请求操作系统的服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作( 如存储分配、I/0操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

    下面是系统调用的具体分类:

    在这里插入图片描述

    主要注意到的是:系统调用一般涉及对系统资源的管理、对进程的控制,而这些功能一般都是需要执行一些特权指令才能完成的,因此系统调用的相关处理需要在核心态下进行。

    系统调用与库函数的区别

    上面说过系统调用可以理解为是一种可供应用程序调用的特殊函数,但是它并不等同于我们开发过程中使用到的库函数。

    实际上,编写程序时可以通过汇编语言直接调用系统调用,也可以通过高级变成语言来实现相同的结果i,而平常我们所接触到的库函数,像C库这种其实也是在内部实现对系统调用的请求:

    在这里插入图片描述

    当然,不是所有的库函数都会使用到系统调用,比如“取绝对值”;判断库函数是否使用系统调用,可以通过是否涉及对计算机共享资源的操作进行简单判断

    系统调用背后的过程

    对于系统调用的过程,可以看下面这张图进行简单的理解:

    在这里插入图片描述

    这里的int指令的参数x指明了系统调用号(操作系统根据这个来进行系统调用),此处的int不是整形的意思,而是interrupt(中断)的缩写

    当执行了陷入指令之后(用户态,进行系统调用请求,引发内中断),CPU的控制权就被转交给操作系统(核心态),操作系统通过相应的系统调用对程序传入的参数进行处理,系统调用完成后又会返回之前的用户程序,继续执行下一条指令。可以概括成下面的过程:

    传递系统调用参数->执行陷入指令(用户态)->执行系统调用相应服务程序(核心态)->返回用户程序

    需要注意的是:陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令

    小结

    在这里插入图片描述

    展开全文
    shiyansama 2021-09-20 20:14:26
  • 操作系统 我看的第一本操作系统书是《现代操作系统》,这本书也是大家力推的入门操作系统的教材,有很多常见的面试题都基本是出自这里的,比如哲学家就餐、读者写者等问题。如果单纯看书觉得比较枯燥,可以搭配 B ...

    大家好,我是小林哥。

    平日里,大家都喊程序员加班多很辛苦,动不动就掉头发,但干的还是很香的,毕竟大多数公司钱还是给的很到位的,今年毕业应届生的我见到好多动不动就月薪 20K~30K 的,真让人两眼泪酸酸,当然这离不开他们大学期间的努力。

    讲真,没什么家庭背景的人,选择当程序员确实是比较好的选择了,原因有二:

    • 首先,当今互联网、AI 人工智能、大数据等都是高速发展的行业,自然人才需求很多,薪资也相对其他传统行业高;
    • 第二,纯粹看你技术能力,只要自己愿意付出努力,技术能力肯定会慢慢提高上来,而且现在比起几十年前,学习资料也越来越多,且越来越优质;

    虽然我们身处时代的红利,但是它是高速发展的,技术也是在一直迭代更新的,停止学习,只会被时代 game over,相当很残酷,所以日常学习是我们程序员,不可缺少的一个习惯。学到秃,你不想变强,都会变强。

    那说到学习,那必然离不开书呀,小林也在豆瓣逛一圈,把高分的书推荐给大家

    其实这些计算机基础完全是可以自学的,不管你是不是计算机专业的同学,只要你认认真真跟着网课和自己看书学习,绝对超过大多数所谓的科班毕业的同学!

    我也整理一套系统化学习cs的书籍,数据结构,计算机网络,数据库,计算机组成原理,操作系统这些统统都有。

    这次分享给大家,点击获取方式计算机必读书籍(含下载方式)包含据结构与算法、计算机网络、数据库、计算机组成原理、操作系统、Java、C/C++

    计算机网络

    如果你要入门 HTTP,首先最好书籍就是《图解 HTTP》了,作者真的做到完完全全的「图解」,小林的图解功夫还是从这里偷学到不少,书籍不厚,相信优秀的你,几天就可以看完了。

    在这里插入图片描述

    如果要入门 TCP/IP 网络模型,我推荐的是《图解 TCP/IP》,这本书也是以大量的图文来介绍了 TCP/IP 网络模式的每一层,但是这个书籍的顺序不是从「应用层 —> 物理层」,而是从「物理层 -> 应用层」顺序开始讲的,这一点我觉得不太好,这样一上来就把最枯燥的部分讲了,很容易就被劝退了,所以我建议先跳过前面几个章节,先看网络层和传输层的章节,然后再回头看前面的这几个章节。

    在这里插入图片描述

    另外,你想了解网络是怎么传输,那我推荐《网络是怎样连接的》,这本书相对比较全面的把访问一个网页的发生的过程讲解了一遍,其中关于电信等运营商是怎么传输的,这部分你可以跳过,当然你感兴趣也可以看,只是我觉得没必要看。

    在这里插入图片描述

    对于 TCP/IP 网络模型深入学习的话,推荐《计算机网络 - 自顶向下方法》,这本书是从我们最熟悉 HTTP 开始说起,一层一层的说到最后物理层的,有种挖地洞的感觉,这样的内容编排顺序相对是比较合理的。

    在这里插入图片描述

    但如果要深入 TCP,前面的这些书还远远不够,赋有计算机网络圣经的之说的《TCP/IP 详解 卷一:协议》这本书,是进一步深入学习的好资料,这本书的作者用各种实验的方式来细说各种协议,尤其是 TCP 部分写的很好(我也只看了这书的 TCP 部分,嘻嘻),这本书买第一版本就好了,第二版本翻译的有问题。

    在这里插入图片描述

    操作系统

    我看的第一本操作系统书是《现代操作系统》,这本书也是大家力推的入门操作系统的教材,有很多常见的面试题都基本是出自这里的,比如哲学家就餐、读者写者等问题。如果单纯看书觉得比较枯燥,可以搭配 B 站清华大学操作系统课程一起学习。

    在这里插入图片描述

    华为鸿蒙操盘手陈海波大神,也出了一本新书《现代操作系统:原理与实现》,是由上海交通大学陈海波、夏虞斌领衔撰写。由浅入深介绍现代操作系统经典理论与方法,结合前沿研究与工业界实践,面向真实场景与真实问题。全新打造 ChCore 微内核系列课程实验,建立对操作系统的第一手实践经验。

    在这里插入图片描述

    这本被称为神书的《深入理解计算机系统》,豆瓣评分高达 9.8 分,这本书严格来说不算操作系统书,它是以程序员视角理解计算机系统,不只是涉及到操作系统,还涉及到了计算机组成、C 语言、汇编语言等知识,是一本综合性比较强的书。

    在这里插入图片描述

    计算机组成原理

    小林最近写的有关 CPU 文章,算是计算机组成的系列了。计算机组成大部分人会认为是硬件开发的人才需要接触,软件开发的人不用了解,我觉得这个观点是不对的,你写的程序也是运行在计算机上的,并且实际上计算机组成原理有些知识还是跟软件有关系的,那就有一本很适合软件开发人员了解的书 —— 《计算机组成与设计 硬件/软件接口》

    在这里插入图片描述

    数据结构与算法

    数据结构与算法尤其重要呀,校招大厂就特别爱考察,还没练起算法的同学,抓紧啦!

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    数据库

    Mysql 两本高分的书。

    在这里插入图片描述

    在这里插入图片描述

    Redis 经典之作,重点看前三章,redis 的数据结构,持久化,主从复制,哨兵模式,这些都是常考的面试题。

    在这里插入图片描述

    Java

    小林虽然不是搞 Java 的,但是请教了搞 Java 大佬,我把他推荐的书也放在这啦,Java 同学可以参考参考。
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    C/C++

    对于想入门 C 语言的同学,可以看看这本黑皮经典书籍。

    在这里插入图片描述

    C++ 最好的入门书,就是这本了。

    在这里插入图片描述

    入门完 C++ 下,我们也不能停下脚步,快马加鞭进入进阶的节奏。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    Linux

    Linux 命令入门的好书,跟着鸟叔一起敲 Linux 命令,很快就能入门了。

    在这里插入图片描述

    熟悉了 Linux 命令后,我们就从编程的角度来学习 Linux,这里有几本好书。
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    什么?你还想再深入 Linux 系统,那就来啃 Linux 内核代码吧,保证你对操作系统由有新的认识。在这里插入图片描述

    在这里插入图片描述

    絮叨絮叨

    小林在 CSDN 写了很多图解网络和操作系统的系列文章,很高兴收获到很朋友的认可和支持,正好最近图解网络和操作系统的文章连载的有 20+ 篇了,也算有个体系了。

    在这里插入图片描述

    所以为了方便大家阅读,小林把自己原创的图解网络和图解操作系统整理成了 PDF,一整理后,没想到每个图解都输出了 15 万字 + 500 张图,质量也是杠杠的,有很多朋友特地私信我,看了我的图解拿到了大厂的offer。

    图解系统 PDF 开源下载:图解系统 PDF 下载地址(点击)

    图解网络 PDF 开源下载:图解网络 PDF 下载地址(点击)


    最后祝大家前程似锦,在编码的道路上一马平川。

    如果文章对你帮助的话,可以给我点个赞,点个收藏,评论下更先显温情!

    展开全文
    qq_34827674 2021-06-29 23:31:40
  • hdq1745 2021-09-11 15:34:51
  • ybhuangfugui 2021-06-18 00:12:05
  • hdq1745 2021-10-24 09:11:23
  • weixin_44759105 2020-12-31 14:39:13
  • weixin_44279771 2021-01-12 20:20:21
  • xuanyuan_fsx 2021-09-29 14:51:53
  • HaaSTech 2021-10-09 15:06:38
  • JackSparrow_sjl 2021-07-31 18:26:34
  • qq_44423388 2021-01-16 17:13:46
  • weixin_39966053 2020-12-22 11:55:35
  • weixin_46087812 2021-03-25 18:35:21
  • hjx020 2021-10-19 20:55:34
  • hjx020 2021-10-13 11:37:25
  • qq_43741419 2021-05-27 23:27:29
  • qq_43307937 2020-12-19 18:45:41
  • RichieZhu 2021-02-16 10:15:33
  • qq_44909449 2021-07-01 14:45:34
  • guoxuying 2021-01-12 11:31:25
  • weixin_33746819 2021-07-13 02:43:47
  • weixin_42298100 2021-06-17 10:09:47
  • weixin_51830687 2021-08-30 09:17:12
  • weixin_42350212 2021-06-26 12:57:59
  • Qingyuyuehua 2021-03-06 12:52:52
  • yzc66666 2021-07-18 08:59:30
  • diviner_s 2021-01-06 00:53:24
  • m0_45861545 2021-10-17 16:28:51

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,534,535
精华内容 2,613,814
关键字:

操纵系统