操作系统基础知识复习总结-程序员宅基地

技术标签: 基础知识  操作系统  复习  

操作系统

操作系统概述

操作系统作用

  1. 存储管理

这里写图片描述
2. 处理机管理
这里写图片描述
3. 设备管理
这里写图片描述
4. 文件管理
这里写图片描述
5. 用户接口
这里写图片描述

操作系统的定义

是管理和控制计算机系统中各种硬件和软件资源、合理地组织计算机工作流程的系统软件,是用户与计算机之间的接口。

  • 多道批处理系统
  1. 在内存中同时存放多道程序,在管理程序的控制下交替执行,这些作业共享CPU和系统其他资源。
    
  2. ![这里写图片描述](https://img-blog.csdn.net/20180611133851521)
    
  3. 这里写图片描述
  • 分时系统

把处理机运行时间分成时间片,按时间片轮转的方式,把处理机分配给各联机作业使用。允许多个用户与计算机直接交互。

  • 实时系统

系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。提供即时响应和高可靠性,响应时间快,可以在毫秒级甚至微秒级立即处理。

操作系统的特征

  1. 并发

    并发是指两个或多个事件在同一时间间隔内发生。

    微观上还是程序在分时地交替执行。

  2. 共享

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

    1. 互斥共享方式

      如打印机、磁带机。在一段时间内只允许一个进程访问该资源。

    2. 同时访问方式

      如磁盘设备

  3. 虚拟

    虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。比如说虚拟处理器,虚拟内存,虚拟外部设备

  4. 异步

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

操作系统最基本的特征是并发和共享,两者互为存在条件。

进程管理

程序基本概念

  • 程序执行的两种方式:
    1. 顺序执行:一个计算的若干操作必须按照严格的先后次序顺序地执行,这类计算过程就是程序的顺序执行过程。
    2. 并发执行:指一组在逻辑上相互独立的程序或程序段在执行过程中,其执行时间在客观上相互重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的这种执行方式。

进程基本概念

  • 定义

进程是指一个具有独立功能的程序对某个数据集在处理机上的执行过程和分配资源的基本单位。

引入进程的概念,以便更好地描述和控制程序的并发执行。

程序封闭性是指进程执行的结果只取决于进程本身,不会受外界影响。

  • 进程和程序的区别

这里写图片描述

  • 进程的组成

进程通常由程序、数据集合和进程控制块PCB三部分组成。程序和它操作的数据是进程存在的静态实体,而专门的数据结构PCB用来描述进程当前的状态、本身的特性等。

当进程被中断时,操作系统会把程序计数器和处理器寄存器(上下文数据)保存在PCB中的对应位置,进程状态已被改变为其他的值,例如阻塞态或就绪态。

PCB是进程存在的唯一标志。故操作系统是根据进程控制块来对并发执行的进程进行控制和管理。

PCB内含的数据结构主要有:进程标志信息、进程控制信息、进程资源信息、CPU现场信息。

每个进程包含独立的地址空间,进程各自的地址空间是私有的,只有执行自己地址空间中的程序,且只能访问自己地址空间中的数据,相互访问会导致指针的越界错误。

对进程的管理和控制功能是通过执行各种原语实现的,如创建原语。

进程状态

  • 运行态
  • 就绪态
  • 阻塞态
  • 新建态
  • 退出态

进程创建

1、给新进程分配一个唯一的进程标识符

2、给进程分配空间

3、初始化进程控制块

4、设置正确的连接

5、创建或扩充其他数据结构

线程

线程基本概念

引入线程,是为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。

线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元。

线程共享进程拥有的全部资源。

线程不拥有系统资源,但是它可以访问进程所拥有的系统资源。

线程没有自己独立的地址空间,他共享他所属的进程的空间。

线程的实现方式

  1. 用户级线程
  2. 内核级线程

进程间通信

  • 共享存储
  • 消息传递
  • 管道通信:固定大小,半双工通信,即某一时刻只能单向传输。
  • 共享文件

处理机调度

调度的层次

  1. 作业调度,又称高级调度。就是内存与辅存之间的调度。
  2. 中级调度。又称内存调度。引入中级调度是为了提高内存利用率和系统吞吐量。使那些暂时不能运行的进程,调至外存等待,把此时的进程状态称为挂起状态。当他们具备运行条件且内存又稍有空闲时,由中级调度来决定,把外存上的那些已具备运行条件的就绪进程再重新调入内存。
  3. 进程调度。又称为低级调度。按照某种方法和策略从就绪队列中选取一个进程给CPU。

进程调度方式

  1. 非剥夺调度方式
  2. 剥夺调度方式

典型的调度算法

  1. 先来先服务调度算法(FCFS)

  2. 短作业优先(SJF)调度算法

    从后备队列中选择一个或若干个估计运行时间最短的作业,将他们调入内存运行。

  3. 短进程优先(SPF)调度算法

    从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行。

  4. 优先级调度算法

    根据能否抢占进程,可将调度算法分为:

    1. 非剥夺式优先级调度算法
    2. 剥夺式优先级调度算法

    根据进程创建后其优先级是否可以改变,分为:

    1. 静态优先级。优先级在创建进程时确定,且在进程的整个运行期间保持不变。
    2. 动态优先级。可动态调整优先级。
  5. 高响应比优先调度算法

    这里写图片描述

  6. 时间片轮转调度算法

  7. 多级反馈队列调度算法

这里写图片描述

这里写图片描述

进程同步

基本概念

  1. 临界资源

我们把一次仅允许一个进程使用的资源称为临界资源。

  1. 同步

同步亦称直接制约关系,他是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。

实现临界区互斥的基本方法

软件实现方法

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

硬件实现方法
  1. 中断屏蔽方法

    当一个进程正在使用处理机执行它的临界区代码时,要防止其他进程再进入其临界区访问的最简单方法是禁止一切中断发生。因为CPU只在中断发生时进行进程切换,这样屏蔽中断就能保证当前运行进程将临界区代码顺利地执行完。

  2. 硬件指令方法

    这里写图片描述

    这里写图片描述

信号量

信号量只能被两个标准的原语wait(S)和signal(S)来访问,也可以记为“P操作“和”V操作“。

原语是指完成某种功能且不被分割不被中断执行的操作序列,通常可由硬件来实现完成不被分割执行特性的功能。

  1. 利用信号量实现同步

这里写图片描述

  1. 利用信号量实现进程互斥

这里写图片描述

管程

管程是由一组数据以及定义在这组数据之上的对这组数据的操作组成的软件模块,这组操作能初始化并改变管程中的数据和同步进程。

这里写图片描述

死锁

所谓死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。

死锁产生的条件

  • 互斥
  • 不剥夺
  • 请求和保持
  • 循坏等待

死锁的处理策略

  1. 预防死锁

设置某些限制条件,破坏产生死锁的四个必要条件中的一个或几个,以防止发生死锁。

  1. 避免死锁

在资源的动态分配过程中,用某种方法防止系统进入不安全状态,从而避免死锁。

银行家算法

这里写图片描述

  1. 死锁的检测及解除

通过系统的检测机构及时地检测出死锁的发生,然后采取某种措施解除死锁。

这里写图片描述

内存管理

程序执行过程

这里写图片描述

逻辑地址空间与物理地址空间

这里写图片描述

覆盖与交换

  • 覆盖

这里写图片描述

  • 交换

这里写图片描述

连续分配管理方式

  • 单一连续分配

这里写图片描述

  • 固定分区分配

可以有大小相等的分区和大小不等的分区

会有内部碎片

  • 动态分区分配

会有外部碎片,可以通过紧凑技术来解决(就是操作系统不时地对进程进行移动和整理,需要动态重定位寄存器支持。

这里写图片描述

非连续分配管理方式

  • 分页存储管理
  • 分段存储管理
  • 段页式管理方式

虚拟内存管理

  1. 传统存储管理方式的特征
  • 一次性:作业必须一次性全部装入内存,方能运行。
  • 驻留性:作业被装入内存后,就一直驻留在内存中,其任何部分都不会被换出,直至作业运行结束。
  1. 局部性原理

    • 时间局部性

    如果程序中的某条指令一旦执行,不久以后该指令可能再次执行;如果某数据被访问过,不久以后该数据可能再次被访问。

    所以时间局部性是通过将进来使用的指令和数据保存到高速缓存存储器中。

    • 空间局部性

    一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问。

    所以空间局部性通常是使用较大的高速缓存,并将预取机制集成到高速缓存控制逻辑中实现。

页面置换算法

  1. 最佳置换算法(OPT)

这里写图片描述

  1. 先进先出页面置换算法

这里写图片描述

  1. 最近最久未使用置换算法(LRU)

这里写图片描述

文件系统

文件的概念

文件是以计算机硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等。

在用户进行的输入、输出中,是以文件为基本单位。

文件的属性

  1. 名称
  2. 标识符
  3. 类型
  4. 位置
  5. 大小
  6. 保护
  7. 时间、日期和用户标识

文件的逻辑结构

  1. 无结构文件(流式文件)

无结构文件是最简单的文件组织形式。无结构文件将数据按顺序组织成记录并积累保存,他是有序相关信息项的集合,以字节为单位。

  1. 有结构文件(记录式文件)

    1. 顺序文件

    文件中的记录一个接一个地顺序排列,记录通常是定长的,可以顺序存储或以链表形式存储。

    ​ 1. 串结构

    ​ 记录之间的顺序与关键字无关,通常按照存入时间的先后排列。

    ​ 2. 顺序结构

    ​ 指文件中的所有记录按关键字顺序排列。

    1. 索引文件

    2. 索引顺序文件是顺序和索引两种组织形式的结合。索引顺序文件将顺序文件中的所有记录分为若干组,为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项。

    3. 直接文件或散列文件

      给定记录的键值或通过Hash函数转换的键值直接决定记录的物理地址。

目录结构

文件控制块和索引
  1. 文件控制块。FCB用来存放控制文件所需要的各种信息的数据结构。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。

    FCB主要包含以下信息:

    1. 基本信息
    2. 存取控制信息
    3. 使用信息
  2. 索引节点

目录结构
  1. 单级目录结构。整个文件系统中只建立一张目录表,每个文件占一个目录项。
  2. 两级目录结构。将文件目录分为主文件目录和用户文件目录。主文件目录项记录用户名及相应用户文件目录所在的存储位置。用户文件目录项记录该用户文件的FCB信息。
  3. 多级目录结构
  4. 无环图目录结构。引入改种目录结构是为了实现文件共享。

文件共享

  1. 基于索引结点(硬连接):共享文件指向同一个索引结点
  2. 基于符号链(软连接):保存共享文件的路径名

文件保护

  1. 口令保护:通过口令访问文件
  2. 加密保护:对文件进行加密处理
  3. 访问控制:根据访问者的身份进行限制

文件系统层次结构

文件系统类型:FAT32、NTFS、ext2、ext3、ext4

这里写图片描述

目录实现

  1. 线性列表
  2. 哈希表

文件实现

  1. 文件分配方式
    1. 连续分配
    2. 链接分配
    3. 索引分配

这里写图片描述

文件存储器的空间管理

  1. 空闲表法:把所有空闲块组织成表
  2. 空闲链表法:把所有空闲块组织成链表
  3. 位示图:利用二进制的每位记录空闲块
  4. 成组链接:空闲表和空闲链表的结合,适合大的文件系统

磁盘调度算法

  1. FCFS(先来先服务算法)

这里写图片描述

  1. 最短寻找时间优先算法(SSTF)算法

这里写图片描述

  1. 扫描(SCAN)算法(又称电梯算法)

这里写图片描述

  1. 循环扫描(C-SCAN)算法

这里写图片描述

这里写图片描述

这里写图片描述

I/O管理

I/O控制方式

  1. 程序直接控制方式

  2. 中断驱动方式

    允许I/O设备主动打断CPU的允许并请求服务,从而“解放”CPU,使得其向I/O控制器发送读命令后可以继续做其他有用的工作。

  3. DMA方式

    DMA方式的基本思想是在I/O设备和内存之间开辟直接的数据交换通路,彻底“解放”CPU。DMA方式的特点:

    1. 基本单位是数据块
    2. 所传送的数据,是从设备直接送入内存的,或者相反
    3. 仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在DMA控制器的控制下完成的。

    这里写图片描述

  4. 通道控制方式

这里写图片描述

这里写图片描述

这里写图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35564813/article/details/80651259

智能推荐

USB转IIC I2C SPI UART适配器模块可编程开发板应用工业数字接口转换_i2c转usb转换原理电路图-程序员宅基地

文章浏览阅读906次。可编程USB转UART/I2C/SMBusS/SPI/CAN/1-Wire适配器USB2S(USB To Serial ports)是多种数字接口物理层协议转发器,广泛应用于电子设备开发测试、工业数字接口转换、数字接口学习验证等领域。 支持嵌入程序开发自由 制定 转发透传逻辑,可实现Windows/Android/Wince indows/Android/Wince 操作系统 USB接口与 串行接口以及串行接口之间的双向通讯,还可用于脉冲计数字示波器、电压比较器。广泛应用于电子设备开发测试、工业数字接_i2c转usb转换原理电路图

【北京大学】16 TensorFlow1.x的项目实战之图像风格融合与快速迁移_风格融合网络-程序员宅基地

文章浏览阅读2.3k次,点赞5次,收藏35次。目录1 简介1.1 图像风格快速迁移1.2 图像风格融合1.3 图像风格融合与快速迁移2 数据集3 模型结构3.1 损失函数网络3.2 图像生成网络4 代码讲解4.1 代码结构4.2 核心代码forward.py文件backward.py文件test.py文件app.py文件5 实验环境及源码下载1 简介图像风格融合与快速迁移分为风格融合和风格快速迁移两步B站图像风格融合与快速迁移讲解视频1.1 图像风格快速迁移将一个图像的风格迁移到另一张图片上。原始图像风格迁移技术与快速图像风格迁移技术对比_风格融合网络

matlab非线性相位fir,数字信号处理实验(MATLAB版)实验23线性相位FIR数字滤波器.ppt...-程序员宅基地

文章浏览阅读572次。一、实验目的  (1)加深对线性相位FIR数字滤波器特性的理解。  (2)掌握线性相位滤波器符幅特性和零极点分布的研究方法。  (3)了解用MATLAB研究线性相位滤波器特性时程序编写的思路和方法。 二、实验原理  1.线性相位FIR滤波器的特性  与IIR滤波器相比,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性。设FIR滤波器单位脉冲响应h(n)长度为N,其系统函..._线性相位fir滤波器的零点分布。(已知一个零点求另外3个零点)

JSTL-程序员宅基地

文章浏览阅读2.1k次,点赞2次,收藏2次。什么是JSTLJSTL全称JavaServer Pages Tag Library Jsp标准标签库该标签库是由Apache组织提供的免费开源的jsp标签JSTL是干什么用的?为了简化和替换jsp页面上的java代码 因为有时候我们不得不需要在jsp页面加入java代码 ,但是加入java代码以后会使前端人员看不懂,不能很好的一起协作完成项目,并且后期维护的时候换了其他维护人员也会造成代码阅读的不方便,但是如果加入标签的话,前端人员就能很快看出来这段代码的作用,并且对其进行美化操作之类的协作。_jstl

SQL语法之FOREIGN KEY 约束_创建表sql语句foreign关键字-程序员宅基地

文章浏览阅读1k次。FOREIGN KEY约束_创建表sql语句foreign关键字

linux的sleep()和usleep()_linux usleep 头文件-程序员宅基地

文章浏览阅读1.1k次。usleep() :将进程挂起一段时间, 单位是微秒(us)(百万分之一秒);sleep():暂停的单位是秒,而不是毫秒. --LinuxSleep():暂停的单位是毫秒,不是秒,(其中"S"是大写) --Windowusleep函数在Linux系统中两个函数头文件都是: unistd.h   语法: void usleep(int micro_seconds);   返回值: 无   内容说明:本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的微秒数(us)。_linux usleep 头文件

随便推点

IE6下select覆盖div z-index无效 解决方案-程序员宅基地

文章浏览阅读107次。遇到了IE6 select遮挡div的bug,这个bug表现为页面有浮动元素(某个div元素)在select上面时,在IE6里面select总是显示在这个浮动元素上方,该元素z-index的值多大都没有作用。解决的思路是:IE6中iframe可以覆盖select,而div可以覆盖iframe,所以解决办法就是使用iframe元素包裹或者覆盖select元素或浮动元素,或者在selec..._el-select 的el-option被压盖问题z-index都不行

Android8.1源码编译_android8.1 编译-程序员宅基地

文章浏览阅读4k次。编译须知:1.本次编译平台Ubuntu18.04。使用的虚拟机来完成的源码编译,本次编译的是android8.1版本。2.虚拟机的虚拟硬盘最好在150g以上,我的虚拟中分配了268g内存,只安装了Android编译需要的库,编译完Android磁盘占用54%,环境搭建1.安装虚拟机Ubuntut虚拟机,为了方便查找编译过程中的资料,我选择了Ubuntu18.4的版本ubu..._android8.1 编译

经典背包问题3——背包问题求方案数 、背包问题求具体方案-程序员宅基地

文章浏览阅读2.3k次。经典背包问题3——背包问题求方案数 、背包问题求具体方案1. 背包问题求方案数2. 背包问题求具体方案1. 背包问题求方案数有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。第 i件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出 最优选法的方案数。注意答案可能很大,请输出答案模 109+7的结果。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N行,每行两个整数 vi,wi,用空格隔_背包问题求方案数

Vue中created methods,computed等常用的方法整理-程序员宅基地

文章浏览阅读1.2k次。一下是个人理解 如有错误请指出 谢谢! 现学现卖0.0created:html加载完成之前,执行。执行顺序:父组件-子组件mounted:html加载完成后执行。执行顺序:子组件-父组件methods:事件方法执行watch:watch是去监听一个值的变化,然后执行相对应的函数。computed:computed是计算属性,也就是依赖其它的属性计算所得出最后的值,定义起来像函数,用起来想属性 意思就是调用不加括号简单写一下var vm = new Vue({ el:"#app",

Excel文件数据导出_如何用单片机导出表格文件-程序员宅基地

文章浏览阅读432次。模板导出Excel导入导出是一般数据统计中常用到的一个功能;那么如何去实现导出数据呐!我们来看一下:页面:页面通常就是一个想这样的导出按钮;点击按钮就触发跳转: function exportExcel() {window.open('@Url.Content("~/Main/ExportARData")');}跳转到指定控制器方法上面:ExportARData到了控制器,我们又可以分为3个块来看;查出要导出的数据;二.我们先把要导出的字段查出来;然后打开我们需.._如何用单片机导出表格文件

vue JAVA服务器端渲染_Vuejs 2服务器端渲染 - 无法正常工作-程序员宅基地

文章浏览阅读240次。我一直在努力使我的vuejs应用程序与SSR功能良好,但我的所有尝试都失败了 . 我真的需要帮助 .请注意,我使用普通的js文件,而不是使用es6的.vue文件,并且需要使用webpack require函数的html模板 .该应用程序在开发模式下工作正常,但是,当我使用'vue-server-renderer'开始执行它并转到任何路由时,将抛出此错误:错误:渲染函数或模板未在组件中定义:在pre..._vue-server-renderer\build.dev.js not supported