Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码文件是一种平台无关的中间编译结果,字节码文件由java虚拟机读取,解析和执行,java虚拟机屏蔽了不同操作系统和硬件平台的差异性。 如今的java虚拟机已经称为一种通用平台,不但能够运行java语言,Groovy,JRuby,Jython等一大批动态语言也可以直接在Java虚拟机上运行,其原理也是这些动态语言的编译器将…

2021年5月1日 0条评论 75点热度 阅读全文

面向对象的代码找不到了,只有之前备份的结构化代码,面向对象的话改成两个类就好了,并不复杂。 #include <iostream> #include <fstream> #define PROGRESS 5 //进程数量 #define REC_NUM 3 //资源种类数量 using namespace std; int Available[PROGRESS]; //定义可用资源向量Available int sign[PROGRESS],work[PROGRESS][REC_NUM],w…

2021年4月16日 0条评论 58点热度 阅读全文

题目描述: 已知进程{P0,P1,P2,P3,P4},有三类系统资源A、B、C的数量分别为10、5、7,在T0时刻的资源分配情况如下图所示: (1)若进程P1请求资源,发出请求向量Request1(1,0,2),编写程序用银行家算法判断系统能否将资源分配给它; (2)若进程P2提出请求Request(0,1,0),用银行家算法程序验证系统能否将资源分配给它。 一、算法 1、银行家算法 ① 进程p向系统请求进一步分配资源,首先检查请求的所有类别的资源是否小于等于进程p所对应的需要的资源数。如果满足,进入第②步。否则认…

2021年4月15日 0条评论 55点热度 阅读全文

避免死锁的经典算法–银行家算法 此算法的根本实质就是在分配资源以后可以找到一组进程的安全序列来保证系统是处于安全状态的,不会形成死锁。 1、银行家算法的思路 —判断进程申请的资源进程的请求是否合法(请求的资源数≤还需要的资源数=需要的最大资源数-已经分配给该进程的此类资源) —有足够空闲,没有则拒绝分配 —如果有足够空闲: 假设将资源分配给进程,判断假设分配后的系统状态,安全则分配,不安全则拒绝分配。 2、银行家算法中的数据结构 可利用资源向量Available 这是一个含有m个元素的数组,其中的每一个元素代表一类…

2021年4月14日 0条评论 65点热度 阅读全文

一、预防死锁—确保系统不会进入死锁的状态 死锁的预防就是:通过破坏产生死锁的四个必要条件之一,使系统不具备产生死锁的可能。 1、破坏请求条件(静分配) 事先分配资源,在进程执行之前分配所需的全部资源,进程在执行过程中不会出现新的分配请求,便不会产生死锁,简单,易于实现。但会使系统的资源利用率变低。 2、破坏不剥夺条件 进程一旦因为申请资源被阻塞,必须释放已经拥有的全部资源。 但是此进程如果已经得到了当时阻塞时想要的资源,再次接着执行时,可能原来拥有的资源已被占用,又需要申请资源,然后可能又被阻塞,可此时又需要释放已…

2021年4月14日 0条评论 46点热度 阅读全文

文章主要结构图如下 操作系统 现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构成。 然而,程序员不会直接和这些硬件打交道,而且每位程序员不可能会掌握所有计算机系统的细节,这样我们就不用再编写代码了,所以在硬件的基础之上,计算机安装了一层软件,这层软件能够通过响应用户输入的指令达到控制硬件的效果,从而满足用户需求,这种软件称之为 操作系统,它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型。 我们一般常见的操作系统主要有 Windows、Linux、Fr…

2021年1月15日 0条评论 152点热度 阅读全文

何时调入页面 预调页策略 如果进程的许多页是存放在外存的一个连续区域中,一次调入若干的相邻的页会比依次调入一页更高效。但如果调入的一批页中的大多数都未被访问,则又是低效的。 将那些预计在不久之后便会被访问的页面预先调入内存 请求调页策略 当进程在运行中需要访问某部分程序和数据时,发现其所在的页面不在内存,便立即提出请求,由OS将所需的页面调入内存,这种策略每次仅调入一页 从何处调入页面 请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放对换页面的对换区。 对换区采用连续分配,文件区采用离散分配 所以对换…

2020年7月22日 0条评论 8点热度 阅读全文

固定分配局部置换 固定分配:为每个进程分配一组固定数目的物理块,进程运行期间不再改变。 局部置换:如果进程在运行期间发现缺页,则只能从分配给该进程的n个页面中选出一页换出,再调如一页,以保证分配给该进程的内存空间不变。 缺点:为每个进程分配多少个物理块难以确定。太少,会频繁出现缺页中断,降低了系统的吞吐量。太多,必然使内存中驻留的进程数目减少,进而可能造成CPU空闲或其他资源空闲。 可变分配全局变换 可变分配:先为进程分配一定数目的物理块,在运行期间,可根据情况做适当的增加或减少。 全局置换:如果进程在运行期间发生…

2020年7月22日 0条评论 2点热度 阅读全文

当鸿蒙OS宣布开源的时候,各种空洞的炒作,几乎把国产操作系统的技术本质掩盖了,虽然笔者没亲眼见过鸿蒙的代码,也没用方舟成功编译什么程序,不过当华为官宣鸿蒙将使用微内核的时候其实这款OS的风格就已经确定了,因为这就是内核的价值和意义。 记得十几年前笔者刚刚毕业,初次进入嵌入式开发的圈子,那时总感觉操作系统距离我很远,甚至有些高不可攀。当时看到CSDN论坛上各种有关WINCE、MINIGUI等嵌入式OS的发贴时,那些生硬的代码真是给我当时还年轻的心灵留下了巨大的阴影,不过这十年来虽然工作和嵌入式渐行渐远,但是不断总结经…

2019年10月13日 0条评论 16点热度 阅读全文

页面置换算法: 当出现缺页异常,需要调入新页面而内存已满时,需要使用置换算法选择被置换的物理页面。 局部、全局。 全局置换算法:不区分置换的这个页面到底属于哪个进程,这样的话就隐含着后边有每个进程分配的物理页面数会做调整。 局部页面置换算法:分配给一个物理进程的页面数已经确定了,选择范围仅限于当前进程占用的物理页面内。 最优算法 先进先出 最近最久未使用 时钟 最不常用 全局页面置换算法:忽略进程的限制,置换页面的选择范围是所有可换出的物理页面。 工作集算法 缺页率算法 局部页面置换算法 最优页面置换算法: 1 缺…

2019年6月4日 0条评论 1点热度 阅读全文