计算机操作系统--基础篇

操作系统的演进:


多道程序设计:

早期批处理系统只能一次处理一个任务

多道程序设计使得批处理系统可以一次处理多个任务

 

多道程序设计是指在计算机内存中同时存放多个程序

多道程序在计算机的管理程序之下相互穿插运行

多道程序的管理是操作系统的重要功能


操作系统概览

 What&Why:

  • 操作系统是管理计算机硬件和软件资源的计算机程序
  • 管理配置内存、决定资源哦供需顺序、控制输入输出设备等
  • 操作系统提供让用户和系统交互的操作界面
  • 操作系统的种类是多样的,不局限于计算机
  • 从手机到超级计算机,操作系统可简单也可复杂
  • 在不同设备上,操作系统可向用户呈现多种操作手段
  • 管理硬件、并且提供用户交互的软件系统

  • 我们不可能直接操作计算机硬件

  • 设备种类繁多复杂,需要统一界面

    操作系统的简易性使得更多人能够使用计算机

     


操作系统的基本功能:

统一管理计算机资源,

操作系统实现了对计算机资源的抽象,

用户无需面向硬件接口编程

IO设备管理软件,提供读写接口

文件管理软件,提供操作文件接口

操作系统提供了用户与计算机之间的接口,

图形窗口形式

命令形式

系统调用形式


操作系统相关概念:

并发性:

并行是指两个或多个事件可以在同一时刻发生

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


 共享性:

 操作系统中的资源可供多个并发的程序共同使用,即资源共享

 

多个程序可以同时使用主存资源

资源共享分为:互斥共享同时访问


 互斥共享,

当资源被程序A占用时,其他想使用的程序只能等待

只有当进程A使用完以后,其他进程才可以使用该资源

 同时访问,

某种资源在一段时间内并发地被多个程序访问

这种“同时”是宏观的,从宏观去看该资源可以被同时访问


虚拟性:

把一个物理实体转变为若干个逻辑实体

物理实体是真实存在的,逻辑实体是虚拟的

虚拟的技术主要有时分复用和空分复用


时分复用,

资源在时间上进行复用,不同程序并发使用

多道程序时分使用计算机硬件资源

提供资源利用率

空分复用,

实现虚拟磁盘、虚拟内存

提高资源利用率,提高编程效率


异步性:

在多道程序环境下,允许多个进程并发执行

进程在使用资源时可能需要等待或放弃

进程的执行并不是一气呵成的,而是以走走停停的形式推进

 


进程管理之进程实体

为什么需要进程:

进程是系统进行资源分配和调度的基本单位

进程作为程序独立运行的载体保障程序正常进行

进程的存在使得操作系统弄资源的利用率大幅提升


进程的实体:

主存中的进程形态,

标识符:唯一标记一个进程,用于区别其他进程

状态:标记进程的进程状态,如运行态

程序计数器:指向进程即将被执行的下一条指令的地址

内存指针:程序代码、进程数据相关指针

上下文数据:进程执行时处理器存储的数据

IO状态信息:被进程IO操作所占用的文件列表

记账信息:使用处理器时间、时钟总数和等

进程控制块(PCB),

用于描述和控制进程运行的通用数据结构

记录进程当前状态和控制进程运行的全部信息

使得进程是能够独立运行的基本单位

PCB是操作系统进行调度经常会被读取的信息

PCB是常驻内存的,存放在系统专门开辟的PCB区域

进程与线程,

线程是操作系统运行调度的最小单位

进程是系统进行资源分配和调度的基本单位

 线程包含在进程之中,是进程实际运行工作的单位

一个进程可以并发多个线程,每个线程执行不同的任务

进程里的线程共享进程的资源


进程管理之五状态模型

就绪状态:

当进程被分配到除CPU外所有必要的资源后

只要再获得CPU的使用权,就可以立即执行

其他资源都准备好、只差CPU资源的状态为就绪状态

在一个系统中多个处于就绪状态的进程通常排成一个队列

执行状态:

进程获得CPU,其程序正在执行称为执行状态

在单处理机中,在某个时刻只能有一个进程是处于执行状态

阻塞状态:

进程因某种原因,如:其他设备未就绪而无法继续执行从而放弃CPU的状态

 

 

创建状态:

创建进程时拥有CPU但其他资源尚未就绪

终止状态:

进程由系统清理或归还PCB的状态称为终止状态


进程管理之进程同步

进程间的同步:

对竞争资源在多进程间进行使用次序的协调

使得并发执行的多个程序之间可以有效使用资源和相互合作

 临界资源:

进程间同步的原则:

空闲让进:资源无占用,允许使用

忙则等待:资源占用,请求进程等待

有限等待:保证有限等待时间能够使用资源

让权等待:等待时,进程需要让出CPU

 

进程间同步的方法:

消息队列

共享存储

信号量

线程同步:

互斥量

读写锁

自旋锁

条件变量


作业管理之进程调度

进程调度:

计算机通过决策决定哪个就绪进程可以获得CPU使用权

保留旧进程的运行信息,请出旧进程(收拾包袱)

选择新进程,准备运行环境并分配CPU(新进驻)

进程调度的机制:

就绪状态的排队机制

选择运行进程的委派机制

新老进程的上下文切换机制

进程调度方法:

非抢占式调度

  • 处理器一旦分配给某个进程,就让该进程一直使用下去
  • 调度程序不以任何原因抢占正在被使用的处理器
  • 直到进程完成工作或因IO阻塞才会让出处理器

抢占式调度

  • 允许调度程序以一定的策略暂停当前运行的进程
  • 保存好旧进程的上下文信息,分配处理器给新进程

进程调度算法:

先来先服务算法,

短进程优先调度算法,

调度程序优先选择就绪队列中估计运行时间最短的进程

不利于长作业进程的执行

高优先权优先调度算法,

进程附带优先权,调度程序优先选择权重高的进程

使得紧迫的任务可以优先处理

时间片轮转调度算法,

按先来先服务的原则排列就绪进程

每次从队列头部取出待执行进程,分配一个时间片执行

是相对公平的算法,但是不能保证及时响应用户


作业管理之死锁

死锁:

 

死锁的产生:

  • 相互竞争资源

 共享资源数量不满足各个进程需求

各个进程之间发生资源进程导致死锁

 

  • 进程调度顺序不当

 

 

 

 死锁产生的必要条件:

  • 互斥条件

进程对资源的使用是排他性的使用

某资源只能由一个进程,其他进程需要使用只能等待

  • 请求保持条件

进程至少保持一个资源,又提出新的资源请求

新资源被占用,请求被阻塞

被阻塞的资源不释放自己保持的资源

  • 不可剥夺条件

进程获得的资源在未完成使用前不能被剥夺

获得的资源只能由进程自身释放

  • 环路等待条件

 发生死锁时,必然存在进程-资源环形链

 

死锁的处理:

a.预防死锁的方法

  • 摒弃请求保持条件

系统规定进程运行之前,一次性申请所需要的资源

进程在运行期间不会提出资源请求

  • 摒弃不可剥夺条件

当一个进程请求新的资源得不到满足时,必须释放占有的资源

进程运行时占有的资源可以被释放

  • 摒弃环路等待条件

可用资源线性排序,申请必须按照需要递增申请

先行申请不再形成环路

b.银行家算法

 

 

 


 

存储管理之内存分配与回收

存储管理解决的问题:

  • 确保计算机有足够的内存处理数据
  • 确保程序可以从可用的内存中获取一部分内存使用
  • 确保程序可以归还使用后的内存以供其他程序使用

内存分配的过程:

  • 单一连续分配

单一连续分配是最简单的分配方式

只能在单用户、单进程的操作系统中使用

 

  • 固定分区分配

是支持多道程序的最简单存储分配方式

内存空间被划分为若干固定大小的区域

每个分区只提供给给一个程序使用,互不干扰

 

 

  • 动态分区分配(常用)

 根据进程实际需要,动态分配内存空间

  • 首次适应算法

分配内存时从开始顺序查找适合内存区

若没有,则该次分配失败

每次从头部开始,使得头部地址空间不断被划分

  • 最佳适应算法

将空闲区按照容量大小排序

遍历空闲区链表找到最佳合适空闲区

  • 快速适应算法

要求有多个空闲区链表

每个空闲区链表存储一种容量的空闲区

内存回收的过程:

 

 


存储管理之段页式存储管理

 

 

页式存储管理:

字块是相对于物理设备的定义

页面则是相对逻辑空间的定义

将进程逻辑空间等分成若干大小的页面

相应把物理内存空间分成与页面大小的物理块

以页面为单位把进程空间装进物理内存中分散的物理块

页表记录进程逻辑空间与物理空间的映射 

有一段连续的逻辑分布在多个页面中,将大大降低执行效率

 

段式存储管理:

将进程逻辑空间划分成若干段(非等分)

段的长度由连续逻辑的长度决定

主函数MAIN、子程序段X、子函数Y等

 

 页式存储管理与段式存储管理的区别:

 

段页式存储管理:

分页可以有效提高内存利用率

分段可以更好满足用户需求

两者结合,形成段页式存储管理

主要逻辑:

现将逻辑空间按段氏管理分成若干段

再把内存空间按页式管理等分成若干页

 

 


存储管理之虚拟内存

虚拟内存概述:

  • 有些进程实际需要的内存很大,超过物理内存的容量
  • 多道程序设计,使得每个进程可用物理内存更加稀缺
  • 不可能无限增加物理内存,物理内存总有不够的时候
  • 虚拟内存是操作系统内存管理的关键技术
  • 使得多道程序运行和大程序运行成为现实
  • 把程序使用内存划分,将部分暂时不使用的内存放置在辅存

程序的局部性原理:

  1. 程序运行时,无需全部装入内存,装载部分即可
  2. 如果访问页不在内存,则发出缺页中断,发起页面置换
  3. 从用户层面看,程序拥有很大的空间,即是虚拟内存
  4. 虚拟内存实际是对物理内存的补充,速度接近于内存,成本接近于辅存

虚拟内存的置换算法:

先进先出算法(FIFO)

最不经常使用算法(LFU)

最近最少使用算法(LRU)

 

 

 

高速缓存的替换时机和主存页面的替换时机对比:

 


 

操作系统的文件管理

文件的逻辑结构:

a.逻辑结构的文件类型,

     

有结构文件:

  1. 文件内容由定长记录和可变长记录组成
  2. 定长记录存储文件格式、文件描述等结构化数据项
  3. 可变长记录存储文件具体内容

 

无结构文件:

  • 也称为流式文件
  • 文件内容长度以字节为单位
  • 例如:excel、dll、so

   

b.顺序文件,

按顺序存放在存储介质中的文件

磁带的存储特性使得磁带只能存储顺序文件

是所有逻辑文件中存储效率最高的

c.索引文件,

可变长文件不适合使用顺序文件格式存储

索引文件是为了解决可变长文件存储而发明的一种文件格式

索引文件需要配合索引表完成存储的操作

辅存的存储空间分配:

 i.辅存的分配方式,

 

连续分配,

  • 顺序读取文件内容非常容易,速度很快
  • 对存储要求高,要求满足容量的连续存储空间

链接分配,

  • 将文件存储在离散的盘块中
  • 需要额外的存储空间存储文件的盘块链接顺序

隐式:

 显式:

不支持高效的直接存储(FAT记录项多)

检索时FAT表占用较大的存储空间(需要将整个FAT加载到内存)

 

索引分配,   

  • 把文件的所有盘块集中存储(索引)
  • 读取某个文件时,将索引读取进内存即可
  • 每个文件拥有一个索引快,记录所有盘块信息
  • 索引分配方式支持直接访问盘块
  • 文件较大时,索引分配方式具有明显优势

ii.存储空间管理,

空闲表,

空闲链表,

  • 把所有空闲盘区组成一个空闲链表
  • 每个链表节点存储空闲盘块和空闲数目

位示图,

  • 维护成本低
  • 可以非常容易找到空闲盘块
  • 使用0/1比特位,占用空间很小

 

目录管理:

 

 


 

操作系统的设备管理

广义的IO设备:

    

 

 

 

 

 

IO设备的缓冲区:

CPU与IOO设备的速率不匹配

减少CPU处理IO请求的频率

提高CPU与IO设备之间的并行性

专用缓冲区只适用于特定的IOO进程

当这样的IO进程比较多时,对内存的消耗也很大

 操作系统划分出可供多个进程使用的公共缓冲区,称之为缓冲池

 

 

 

SPOOLing技术:

是关于慢速字符设备如何与计算机主机交换信息的一种技术

利用高速共享设备将低速的独享设备模拟为高速的共享设备

逻辑上,系统为每一个用户都分配了一台独立的高速独享设备

 把同步调用低速设备改为异步调用

在输入、输出之间增加了排队转储环节(输入井、输出井)

SPOOLing负责输入(出)并与低速设备之间的调度

逻辑上,进程直接与高速设备交互,减少了进程的等待时间,提高了进程的工作效率

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白小白从不日白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值