自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 二十二、插值查找算法

一、插值算法的介绍1)插值算法原理介绍插值查找算法类似于二分查找,不同的是插值查找每次从自适应 mid 处开始查找。2)将折半查找中的求 mid 索引的公式 , low 表示左边索引 left, high 表示右边索引 right. key 就是要查找的值3)int mid = low + (high - low) * (key - arr[low]) / (arr[high] - arr[low]) ;/插值索引/对应前面的代码公式: int mid = left + (right – lef

2021-02-28 21:37:00 139

原创 二十一、二分查找算法(递归&&非递归)

一、二分查找思路分析1.首先确定该数组中间的下标 ,即mid=(left+high)/2;2.然后让需要查找的value值与array[mid]值进行比较2.1)findVal > arr[mid] ,说明你要查找值在mid的右边,因此需要向右递归进行查找。2.1)findVal < arr[mid] ,说明你要查找值在mid的左边,因此需要向左递归进行查找。2.3)findVal == arr[mid]说明找到,就返回二、二分查找递归的退出条件1.找到就结束递归2.递归完整个数

2021-02-28 19:07:23 200

原创 二十、线性查找算法

一、Java中常见的查找算法顺序(线性)查找二分查找/折半查找插值查找斐波那契查找二、线性查找算法package cn.zzw.algorithm.search;//线性查找算法public class SeqSearch { public static void main(String[] args) { int[] array={1,88,645,90,4,-6,8}; int index=seqSearch(array,-

2021-02-28 17:19:40 96

原创 三十八、页面分配策略

一、知识总览二、页面分配、置换策略驻留集:指请求分页存储管理中给进程分配的物理块的集合在采用了虚拟存储技术的系统中,驻留集大小一般小于进程的总大小例如:考虑一个极端的情况,若某进程共有100个页面,则该进程的驻留集大小为100时可以全部放入内存,运行期间不可能再发生缺页。若驻留集大小为1,则进程运行期间必定会特别频繁的缺页。三、何时调入页面注意:预调页策略中的局部性原理主要是指空间局部性,即如果当前访问了某个内存单元,在之后很有可能会接着访问与其相邻的那些内存单元。四、从何处调入页面

2021-02-15 17:14:32 211

原创 三十七、页面置换算法

一、知识总览请求分页存储管理与基本分页存储管理的主要区别:在程序执行的过程中,当所访问的信息不再内存中时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存。(用页面置换算法决定应该换出哪个页面)二、最佳置换算法(OPT)注意:最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行的过程中才能知道接下来会访问到的是哪个页面。操作系统无法提前预判页面访问序列。因此,最佳置换算法是无法实现的。三、先进先出置换算法(FIF

2021-02-15 16:22:00 150

原创 四十九、磁盘的管理

一、知识总览二、磁盘初始化三、引导块计算机开机时需要进行一系列初始化的工作,这些初始化工作是通过执行初始化程序(自举程序)完成的。而完整的自举程序放在磁盘的启动块(即引导块/启动分区)上,启动块位于磁盘的固定位置。四、坏块的管理坏了、无法正常使用的扇区就是“坏块”。这属于硬件故障,操作系统是无法修复的。应该将坏块标记出来,以免错误的使用到它。五、总结...

2021-02-15 15:35:49 103

原创 四十八、减少磁盘延迟时间的方法

一、知识引入那么如何才能减少这种延迟时间呢?可以采用交替编号的策略,即让逻辑上相邻的扇区在物理上有一定的间隔,可以使读取连续的逻辑扇区所需要的延迟时间更小。二、磁盘地址结构的设计为什么磁盘的物理地址是(柱面号,盘面号,扇区号),而不是(盘面号,柱面号,扇区号)答案:因为读取地址连续的磁盘块时,采用(柱面号,盘面号,扇区号)的地址结构可以减少磁头移动消耗的时间。三、减少延迟时间的方法:错位命名四、总结...

2021-02-15 15:01:38 540 1

原创 四十七、磁盘调度算法

一、知识总览二、磁盘、磁道、扇区三、一次磁盘读/写操作需要的时间计算延迟时间中的 1/r 就是转一圈需要的时间,找到目标扇区平均需要转半圈,因此再乘以 1/2注意:磁盘的转动越快,延迟时间就会越短,这样磁盘的读写操作需要的时间就会越少。传输时间中,每个磁道要可存N字节的数据,因此b字节的数据需要b/N个磁道才能存储。而读/写一个磁道所需的时间刚好又是转一圈所需要的时间 1/r注意:延迟时间和传输时间都与磁盘的转速有关,且线性相关。而转速是硬件的固有属性,因此操作系统也无法优化延迟时间和

2021-02-15 12:02:33 2303 4

原创 四十六、文件系统的层次结构

一、文件系统的层次结构

2021-02-15 10:25:03 118

原创 四十五、文件保护

一、知识总览二、口令保护为文件设置一个“口令”(如:abc112233),用户请求访问该文件时必须提供“口令”。口令一般存在文件对应的FCB或索引结点中。用户访问文件前需要输入“口令”,操作系统会将用户提供的口令与FCB中存储的口令进行对比,如果正确,则允许该用户访问文件。优点:保存口令的空间开销不多,验证口令的时间开销也很小缺点:正确的“口令”存放在系统内部,不够安全。三、加密保护四、访问控制五、总结...

2021-02-15 10:07:34 268

原创 四十四、文件共享

一、知识总览二、基于索引结点的共享方式(硬链接)三、基于符号链的共享方式(软链接)四、总结

2021-02-14 22:56:06 99

原创 四十三、文件存储空间管理

一、知识总览二、存储空间的划分与初始化三、空闲表法(适用于连续分配方式)四、存储空间管理—空闲链表法五、存储空间管理—位示图法六、总结

2021-02-14 22:32:40 79

原创 四十二、文件的物理结构(下)

一、文件分配方式—索引分配如何实现文件的逻辑块号到物理块号的转换?从目录项中可知索引表的存放位置,将索引表从外存读入内存,并查找索引表即可知道 i 号逻辑块在外存中的存放位置。由此可见,索引分配方式可以支持随机访问。文件拓展也很容易实现(只需要给文件分配一个空闲块,并增加一个索引表即可)但是索引表需要占用一定的存储空间。结论:采用K层索引结构,且顶级索引表未调入内存,则访问一个数据块只需要K+1次读磁盘操作。二、索引分配(总结)三、总结...

2021-02-14 21:43:12 128

原创 四十一、文件的物理结构(上)

一、知识总览二、文件块、磁盘块三、文件分配方式—连续分配连续分配方式要求每个文件在磁盘上占有一组连续的块。读取某个磁盘块时,需要移动磁头。访问的两个磁盘块相隔越远,移动磁头所需要的时间越长。结论:连续分配的文件在顺序读/写时速度更快连续分配的缺点连续分配(总结)优点:支持顺序访问和直接访问(即随机访问);连续分配的文件在顺序访问时速度最快。缺点:不方便文件拓展;存储空间利用率低,会产生磁盘碎片。四、链接分配—隐式链接注意:它很容易实现拓展五、链接分配—显示链接

2021-02-14 20:55:28 97

原创 四十、文件目录

一、知识总览二、文件控制块目录文件中的一条记录就是一个“文件控制块(FCB)”需要对目录进行哪些操作?三、目录结构—单级目录结构四、目录结构—两级目录结构(又称树形目录结构)五、目录结构—多级目录结构六、索引结点(FCB的改进)七、总结...

2021-02-14 17:34:52 133

原创 三十九、文件的逻辑结构

一、知识总览二、顺序文件三、索引文件四、索引顺序文件五、索引顺序文件(检索效率分析)六、多级索引文件七、总结

2021-02-14 16:44:12 96

原创 三十六、请求分页管理方式

一、知识总览二、页表机制三、缺页中断机构四、地址变换注意:在具有快表机构的请求分页系统中,访问一个逻辑地址时,若发生缺页,则地址变换的步骤是:差快表(未命中)----查满表(发现未调入内存)—调页(调入的页面对应的表项会直接加入快表)—查快表(命中)—访问目标内存单元。五、总结...

2021-02-13 23:48:52 491

原创 三十五、虚拟内存的基本概念

一、知识总览二、传统存储管理方式的特征、缺点一次性:作业必须一次性全部装入内存后才能开始运行。这会造成两个问题:首先是作业很大时,不能全部装入内存,导致大作业无法运行。其次是大量作业要求运行时,由于内存无法容纳所有作业,因此只有少量作业才能运行,导致多道程序并发度下降。驻留性:一旦作业被装入内存,就会一直驻留在内存中,直至作业运行结束。事实上,在一个时间段内,只需要访问作业的一部分数据即可正常运行,这就导致了内存中会驻留大量的、暂时用不到的数据,浪费了宝贵的内存资源。注意:而这些缺点就可以使用虚拟

2021-02-13 23:11:17 104

原创 三十四、段页式管理方式

一、知识总览二、分页、分段的优缺点分析分页管理:优点:内存空间利用率高,不会产生外部碎片,只会有少量的页内碎片。缺点:不方便按照逻辑模块实现信息的共享和保护分段管理:优点:很方便按照逻辑模块实现信息的共享和保护缺点:如果段过长,为其分配很大的连续空间会很不方便。另外,段式管理会产生外部碎片。注意:分段管理中产生的外部碎片也可以使用“紧凑”来解决,只是需要付出较大的时间代价。三、分段+分页=段页式管理四、段页式管理的逻辑地址结构五、段表、页表六、总结...

2021-02-13 22:49:30 172

原创 三十三、基本分段存储管理方式

一、知识总览二、分段三、地址变换四、分段、分页管理的对比分段比分页更容易实现信息的共享和保护不能被修改的代码成为纯代码或可重入代码(不属于临界资源),这样的代码是可以共享的。可修改的代码是不能共享的(比如,有一个代码段中有很多变量,各进程并发的同时访问可能造成数据不一致)五、总结...

2021-02-13 22:27:50 143

原创 三十二、两级页表

一、知识总览二、单级页表存在的问题单级页表存在的问题问题一:页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框。问题二:没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问某几个特定的页面。三、如何解决单级页表的问题注意:1.若采用多级页表机制,则各级页表的大小不能超过一个页面。2.两级页表的访存次数分析(假如没有快表机构)第一次访存:访问内存中的页目录表第二次访存:访问内存中的二级页表第三次访存:访问目标内存单元四、总结...

2021-02-13 21:32:49 572

原创 三十一、具有快表的地址变换机构

一、知识总览二、什么是快表三、引入快表后,地址的变换过程1.CPU给出逻辑地址,由某个硬件算得页号、页内偏移量,将页号与快表中所有页号进行比较。2.如果找到匹配的页号,说明要访问的页表项在快表中有副本,则直接从中取出该页对应的内存块号,再将内存块号与页内偏移量拼接形成物理地址,最后,访问该物理地址对应的内存单元。因此,若快表命中,则访问某个逻辑地址仅仅需要一次访存即可。3.如果没有找到匹配的页号,则需要访问内存中的页表,找到对应页表项,得到页面存放的内存块号,再将内存块号与页内块号与页内偏移

2021-02-13 19:30:41 1753

原创 三十、基本地址变换机构

一、知识总览得重点理解、记忆基本地址变换机构(用于实现逻辑地址到物理地址转换的一组硬件机构)的原理和流程。二、基本地址变换机构基本地址变换机构可以借助进程的页表将逻辑地址转换为物理地址。通常会在系统中设置一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表长度M。进程未执行时,页表的起始地址和页表长度放在进程控制块(PCB)中,当进程被调度时,操作系统内核会把它们放在页表寄存器中。三、总结...

2021-02-13 18:14:55 337

原创 二十九、基本分页存储管理的基本概念

一、知识总览连续分配:为用户进程分配的是一个连续的内存空间。非连续分配:为用户进程分配的可以是一些分散的内存空间。二、什么事分页存储三、重要的数据结构—页表思考:每个页表项多大?占几个字节?思考:如何通过页表实现逻辑地址到物理地址的转换页表项连续存放,因此页号可以是隐含的,不占存储空间(类比数组)四、如何实现地址的转换结论:如果每个页面大小为2的k次方B,用二进制数表示逻辑地址,则末尾K位即为页内偏移量,其余部分就是页号。为何页面大小要取2的整数幂?五、逻辑地址结构

2021-02-13 16:33:23 201

原创 二十八、动态分区分配算法

一、知识总览二、首次适应算法算法思想:每次都从低地址开始查找,找到第一个能满足大小的空闲分区如何实现:空闲分区以地址递增的次序排列。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。三、最佳适应算法算法思想:由于动态分区分配是一种连续分配方式,为各进程分配的空间必须是连续的一整片区域。因此为了保证当“大进程”到来时能有连续的大片空间,可以尽可能的多留下大片的空闲区,即优先使用更小的空闲区。如何实现:空闲分区按照容量递增次序链接。每次分配内存时顺序查找空闲分

2021-02-12 22:13:09 206

原创 二十七、连续分配管理方式

一、知识总览注意:连续分配是指为用户进程分配的必须是一个连续的内存空间,而非连续分配管理方式可以是离散的内存空间。二、单一连续分配二、固定分区分配**分区大小相等:**缺乏灵活性,但是很适用于一台计算机控制多个相同对象的场合(比如:钢铁厂有n个相同的炼钢炉,就可把内存分为n个大小相等的区域存放n个炼钢炉控制程序)**分区大小不等:**增加了灵活性,可以满足不同大小的进程需求。根据常在系统中运行的作业大小情况进行划分(比如划分多个小分区、适量中等分区,少量大分区)三、动态分区分配

2021-02-12 21:43:45 155 2

原创 二十六、内存管理的概念

一、知识总览二、覆盖技术1.早期的计算机内存很小,比如IBM推出的第一台PC机最大只支持1MB大小的内存,因此经常会出现内存大小不够的情况。2.后来人们引入覆盖技术,用来解决“程序大小超过物理内存总和”的问题。**覆盖技术思想:**将程序分为多个段(多个模块)。常用的段常驻内存,不常用的段在需要时调入内存。内存分为一个“固定区”和若干个“覆盖区”。需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行结束)不常用的段放在“覆盖区”,需要时调入内存,用不到时调出内存。注意:这种技术必

2021-02-12 20:48:20 70

原创 二十五、内存的基础知识

一、知识总览二、什么是内存,有何作用内存可以存放数据,程序执行前需要先放到内存中才能被CPU处理-----缓和CPU与硬件之间的速度矛盾。三、链接的三种方式四、总结

2021-02-11 19:25:09 66

原创 二十四、死锁的处理策略---检测和解除

一、知识总览如果系统中既不采取预防死锁的措施,也不采取避免死锁的措施,系统就很可能发生死锁。在这种情况下,系统应当提供两个算法:1)死锁检测算法:用于检测系统状态,以确定系统中是否发生了死锁。2)死锁解除算法:当认定系统中已经发生了死锁,利用该算法可将系统从死锁状态中解脱出来。二、死锁的检测如果系统中剩余的可用资源数足够满足进程的需要,那么这个进程暂时是不会阻塞的,可以顺利执行下去。如果这个进程执行结束了把资源归还系统,就可能使某种正在等待资源的进程被激活,并顺利的执行下去。相应的,如果这

2021-02-11 18:32:01 562

原创 二十三、死锁的处理策略---避免死锁(银行家算法)

一、知识总览二、什么是安全序列**所谓安全序列:**就是指如果系统按照这种序列分配资源,则每个进程都能顺利完成,只要能找出一个安全序列,系统就是安全状态。当然,安全序列可能有多个。如果分配了资源以后,系统中找不到任何一个安全序列,系统就进入了不安全状态。这就意味着之后可能所有进程都无法顺利的执行下去。当然,如果有进程提前归还了一些资源,那系统也有可能重新回到安全状态,不过我们在分配资源之前总是要考虑到最坏的情况。注意:如果系统处于安全状态,就一定不会发生死锁。如果系统进入不安全状态,就可能发生死

2021-02-11 16:23:16 215 3

原创 二十二、死锁的处理策略----预防死锁

一、知识总览二、破坏互斥条件即将互斥使用的资源改造成共享使用。该策略的缺点是:并不是所有的资源都可以改造成可共享使用的资源,并且为了系统安全,很多地方还必须保护这种互斥行。因此,很多时候都无法破坏互斥条件。三、破坏不可剥夺条件三、破坏请求和保持条件四、破坏循环等待条件循环等待条件:存在一种进程资源的循环等待链,链中的每一个进程已获得的资源同时被下一个进程所请求。可采用顺序资源分配法:首先给系统中的资源编号,规定每个进程必须按照编号递增的顺序请求资源,同类资源(即编号相同的资源)一次申

2021-02-11 11:50:08 158

原创 二十一、死锁的概念

一、知识总览二、什么是死锁在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是死锁。发生死锁后若无外力干涉,这些进程都将无法向前推进。三、死锁、饥饿、死循环的区别死锁:各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。饥饿:由于长期得不到想要的资源,某进程无法向前推进的现象。比如:在短进程优先(SPF)算法中,若有源源不断的短进程到来,则长进程将一直得不到处理机,从而发生长进程“饥饿”。死循环:某进程执行过程中一直跳不

2021-02-11 11:21:33 150 1

原创 十九、基数排序

一、基数排序介绍(是典型的空间换时间算法)注意:个人认为基数排序代码是这些排序算法中最不好理解的,希望读者能好好体会基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或 bin sort,顾 名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用。基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法基数排序(Radix Sort)是桶排序的扩展基数排序是 1887

2021-02-10 23:01:53 107

原创 十八、归并排序

一、归并排序介绍归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer) 策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修 补"在一起,即分而治之)。二、归并排序思想示意图1—基本思想三、归并排序思想示意图2—合并相邻有序子序列再来看看治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将 [4,5,7,8]和[1,2,3,6

2021-02-10 19:23:15 96

原创 十七、快速排序

一、快速排序法的介绍快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两 部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排 序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。二、快速排序示意图三、快速排序的应用实例要求: 对 [-9,78,0,23,-567,70] 进行从小到大的排序,要求使用快速排序法。如果取消左右递归,结果是 -9 -567 0 23 78 70如果

2021-02-10 15:38:17 179 2

原创 十六、希尔排序即其优化(交换法--->移动法)

一、为何要引入希尔排序首先先看直接插入排序所存在的弊端,数组 arr = {2,3,4,5,6,1},如果要插入的数1(最小),这样的过程是:{2,3,4,5,6,6}{2,3,4,5,5,6}{2,3,4,4,5,6}{2,3,3,4,5,6}{2,2,3,4,5,6}{1,2,3,4,5,6}结论:当需要插入的数是较小的数时,后移的次数明显增多,对效率有影响二、希尔排序的介绍希尔排序是希尔(Donald Shell)于 1959 年提出的一种排序算法。希尔排序也是一种插入排序,它是简

2021-02-10 11:01:25 184

原创 十五、插入排序算法(两种方式)

一、插入排序法思想插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有 序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排 序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。二、插入排序思路图三、插入排序算法第一种解法package cn.zzw.algorithm.sort1;import java.util.Arrays;publ

2021-02-09 19:36:53 304 2

原创 十四、选择排序算法

一、选择排序算法思想选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从 arr[0]~arr[n-1]中选取最小值, 与 arr[0]交换,第二次从 arr[1]~arr[n-1]中选取最小值,与 arr[1]交换,第三次从 arr[2]~arr[n-1]中选取最小值,与 arr[2] 交换,…,第 i 次从 arr[i-1]~arr[n-1]中选取最小值,与 arr[i-1]交换,…, 第 n-1 次从 arr[n-2]~arr[n-1]中选取最小值, 与 arr[

2021-02-09 17:54:15 83 1

原创 十三、冒泡排序算法及其优化

一、基本介绍**冒泡排序(Bubble Sorting)的基本思想是:**通过对待排序序列从前向后(从下标较小的元素开始),依次比较 相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。二、优化前的代码package cn.zzw.algorithm.sort1;import java.util.Arrays;public class BubbleSort { public static void main(String[] args) {

2021-02-08 22:22:28 111

原创 二十、管程

一、知识总览二、为什么要引入管程1.由于信号量机制存在编写程序困难、易出错的问题,于是就想到能不能设计一种机制,让程序员写程序的时候不需要再关注复杂的PV操作,而达到写代码更轻松的目的呢?于是就引入了管程。2.管程是一种高级的同步机制,比PV操作更容易操作。三、管程的定义和基本特征1.管程是一种特殊的软件模块,有这些部分组成:1)局部于管程的共享数据结构说明;2)对该数据结构进行操作的一组过程(其实就是“函数”);3)管程有一个名字。2.管程的基本特征:1)局部于管程的数据只能被局部于

2021-02-08 15:40:18 484

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除