【操作系统复习资料】(持续更新中)

2024-04-29 19:20

本文主要是介绍【操作系统复习资料】(持续更新中),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

第一章:操作系统引论

第二章:进程的描述与控制

未完待续。。。。。接

第三章:处理机调度与死锁

第四章:存储器管理

第五章:虚拟存储器

第六章:第八节 磁盘存储器的性能和调度


第一章:操作系统引论

操作系统的目标:方便性、有效性、可扩充性、开放性

操作系统的三个作用:

(1)操作系统(OS)作为用户与计算机硬件系统之间的接口

(2)操作系统(OS)作为计算机系统资源的管理者

(3)操作系统(OS)实现了对计算机资源的抽象

推动操作系统发展的主要动力:

  1. 不断提高计算机资源利用率
  2. 为什么方便用户
  3. 器件的不断更新迭代
  4. 计算机体系结构的不断发展
  5. 不断提出新的应用需求

操作系统的发展过程

  1. 为什么提出多道批处理?为了进一步提高系统资源的利用率和系统吞吐量;
  2. 为什么提出分时系统?为了满足用户对人-机交互的需求;
  3. 为什么提出实时系统?保证系统的可靠性。

操作系统的基本特性:并发、共享、虚拟、异步

  1. 并行 与 并发 的区别:并行性:指两个或多个事件在同一时刻发生。并发性:指两个或多个事件在同一时间间隔内发生。
  2. 为什么引入并发的概念?为了提高资源利用率。
  3. 怎么实现并发?引入进程。
  4. 为什么引入进程?为了使得程序能够并发的执行。
  5. 共享的两种方式:
  • 互斥共享方式
  • 同时访问方式

并发和共享是四个特性中最基本的两个特征;虚拟:对资源进行逻辑上的抽象、虚拟化;异步:程序(进程)以不可预知的速度进行推进

第二章:进程的描述与控制

程序的执行方式:顺序执行、并发执行

顺序执行的特征:

  1. 顺序性:处理机按照程序所规定的顺序进行执行;
  2. 封闭性:程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变,程序一执行,执行结果不受外界影响;
  3. 可再现性:只要程序执行时的环境和初始条件一致,程序重复执行,都可得相同的结果。

并发执行的特征:

  1. 间断性:程序“走走停停”
  2. 失去封闭性:程序并发执行,征用资源
  3. 不可再现性:因为程序要并发执行征用资源,导致运行结果可能不一样,即运行结果不可再现性;
  4. 为了实现结果可再现性,所以要对并发执行加以控制,如何加以控制?------->进程

进程的定义

  1. 进程是程序的一次执行;
  2. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动;
  3. 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

进程的特征

  1. 动态性  
  2. 独立性
  3. 并发性  
  4. 异步性

(在内存中)进程的三种基本状态(重点)(三种状态的切换)

  1. 就绪状态(Ready)
  2. 执行状态(Running)
  3. 阻塞状态(Block)

(在外存中)进程的状态:创建状态和终止状态

进程中的挂起操作

  1. 挂起:将一个进程从内存转到外存
  2. 激活:将一个进程从外存转到内存
  3. 挂起操作引入的原因:
  • 终端客户的需要
  • 父进程请求
  • 负荷调节的需要
  • 操作系统的需要

引起创建进程的事件:

(1)用户登录 (2)作业调度 (3)提供服务 (4)应用请求

引起进程终止的事件:

(1)正常结束 (2)异常结束 (3)外界干预

引起进程阻塞和唤醒的事件:

  1. 向系统请求共享资源失败;
  2. 新数据尚未到达;
  3. 等待某种操作的完成;     
  4. 等待新任务的到达。

进程的阻塞是自己阻塞自己,唤醒要靠别的唤醒

进程同步(重点)

  1. 进程同步的基本概念:对多个相关进程在执行次序上进行协调、使并发执行的诸进程之间能按照一定的规则共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性
  2. 进程之间的关系:
  • 间接相互制约关系:互斥竞争
  • 直接相互制约关系:同步合作

什么是临界资源?许多硬件资源如打印机、磁带机等都属于临界资源。

什么是临界区?每个进程中访问临界资源的那段代码。

访问临界资源的循环进程描述为:

while(TURE){
      进入区  //资源检查
      临界区  //资源访问
      退出区  //释放资源
      剩余区  //剩余资源         
    } 

同步机制应遵循的原则:

(1)空闲让进 (2)忙则等待 (3)有限等待 (4)让权等待

信号量机制

(1)整型信号量 (整型信号量定义为一个用于表示资源数目的整型量S,除初始化外,仅能通过两个标准的原子操作Wait(S)和Signal(S)来访问。这两个操作被分别称为P、V操作。)

(2)记录型信号量 (多个进程等待访问同一临界资源的情况)

(3)AND型信号量(要么把它请求的资源全部分配到进程,要么一个也不分配。)

(4)信号量:(用于表示资源数目)对资源的描述(若信号量初始值为一个非负的整数,代表当前系统中可利用的空闲资源的总数,信号量一旦定义了初始值之后,信号量就只能通过PV操作来改变它的值,对于信号量的初值通过PV操作不断地去改变之后,信号量的值还是一个非负的整数,还是代表当前可利用的空闲资源的总数;如果信号量的值是一个负值,负值的绝对值就代表当前系统中等待这个资源的进程数量,比如:经过一系列的PV操作之后,信号量S的值为-3,那就说明当前系统中等待这个资源的进程数有3个)

(5)P操作:申请资源,如果申请到了资源,就批准,如果不能申请到资源,就阻塞(比如说有个进程通过P操作去申请资源,没有申请得到资源,就阻塞自己)

(6)V操作:释放资源、唤醒进程,使得资源的数量加一,如果当前系统正好有进程在等待这个资源,就可以唤醒这个正在等待资源的进程

经典的同步问题(大题第一题,写出PV操作)

生产者-消费者问题

 

解:

   缓冲区1:full1 = 0,empty1 = 1

   缓冲区2:full2 = 0,empty2 = 1

PA(){                   PB(){

磁盘读一个记录            P(full1);

P(empty1);                 从缓冲区1中取记录

将记录放入缓冲区1中      v(empty1);

V(full1);                    p(empty2);

}                         将缓冲区1中的内容复制到缓冲区2中

                          V(full2);

                          }

PC(){

   P(full2);

  从缓冲区2中取记录

  V(empty2);

  打印记录;

}

未完待续。。。。。接

第三章:处理机调度与死锁

第四章:存储器管理

第五章:虚拟存储器

第六章:第八节 磁盘存储器的性能和调度

一、性能衡量指标:

1、磁盘的寻道时间

(1)一个扇区默认512字节

(2)柱面数 = 磁道数

(3)磁盘容量 = 磁头数+磁道(柱面)数+每道扇区数+每扇区字节数

(4)磁盘的类型:

(5)磁盘的访问时间:

① 寻道时间(与读取数据量无较大关)

② 旋转延迟时间(与硬件有关)

③ 传输时间

(6)早期的磁盘调度算法

① 先来先服务(FCFS)根据进程的请求访问磁盘的先后次序(进程数不多用)

② 最短寻道时间优先(SSTF)要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,可能导致优先级的进程发生“饥饿”现象,为了解决这个问题,提出了基于扫描的磁盘调度算法

基于扫描的磁盘调度算法

  1. 扫描算法(SCAN)考虑欲访问的磁道与当前磁道的距离,更优先考虑磁头当前移动的方向(从外向里->从里向外->从外向里)(大中小型机器和网络)(编号小的在最外层)
  2. 循环扫描算法(CSCAN)(从外向里->从外向里)(最里面编号最大)
  3. NStepSCAN算法(防磁壁粘着)(N很大时,)
  4. FSCAN算法(磁道请求队列被分成两个长队列)

2、磁盘I/O速度

3、磁盘系统的可靠性

这篇关于【操作系统复习资料】(持续更新中)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/946940

相关文章

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

hdu1689(线段树成段更新)

两种操作:1、set区间[a,b]上数字为v;2、查询[ 1 , n ]上的sum 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdl

hdu 1754 I Hate It(线段树,单点更新,区间最值)

题意是求一个线段中的最大数。 线段树的模板题,试用了一下交大的模板。效率有点略低。 代码: #include <stdio.h>#include <string.h>#define TREE_SIZE (1 << (20))//const int TREE_SIZE = 200000 + 10;int max(int a, int b){return a > b ? a :

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

GIS图形库更新2024.8.4-9.9

更多精彩内容请访问 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信:digital_twin123 Cesium 本期发布了1.121 版本。重大新闻,Cesium被Bentley收购。 ✨ 功能和改进 默认启用 MSAA,采样 4 次。若要关闭 MSAA,则可以设置scene.msaaSamples = 1。但是通过比较,发现并没有多大改善。

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

Linux操作系统 初识

在认识操作系统之前,我们首先来了解一下计算机的发展: 计算机的发展 世界上第一台计算机名叫埃尼阿克,诞生在1945年2月14日,用于军事用途。 后来因为计算机的优势和潜力巨大,计算机开始飞速发展,并产生了一个当时一直有效的定律:摩尔定律--当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。 那么相应的,计算机就会变得越来越快,越来越小型化。

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“