操作系统
如是说如是
读史使人明智
读诗使人灵秀
数学使人周密
科学使人深刻
伦理学使人庄重
逻辑修辞之学使人善辩
展开
-
计算机操作系统引论
在之后我会按章形式进行总结,若有遗漏,欢迎指出。话不多说,操作系统总结如下:原创 2018-11-06 18:57:15 · 165 阅读 · 0 评论 -
OS之存储管理 --- 磁盘调度算法
转载自:https://blog.csdn.net/xd_hebuters/article/details/79046170引言:在多道程序设计的计算机系统中,各个进程可能会不断对磁盘提出读/写请求。有时候进程发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,合理进行磁盘调度。本文将回顾影响磁盘读写时间的三个因素,并介绍几种常见的调度算法(FCFS、STF、SSF...转载 2019-04-30 14:47:06 · 2334 阅读 · 0 评论 -
OS之存储管理---详解文件系统的实现方式(二)
OS之存储管理—详解文件系统的实现方式(一)磁盘使用的性能采用缓冲区有些系统有一块独立内存用作缓冲区缓存,假设其中的块将很块再次使用。有的系统是采用页面缓存来缓存文件数据,页面缓存采用虚拟内存技术,将文件数据按页面而不是按面向文件系统的块来缓存。采用虚拟内存来缓存文件数据,与采用物理磁盘块来缓存相比,更加的高效。包括Solaris、Linux、Windows,采用页面缓存来缓存进程页面和文...原创 2019-04-29 15:23:01 · 357 阅读 · 0 评论 -
请求分页系统中页面分配策略与页面置换策略的关系
回顾几种分配策略:固定分区分配动态分区分配伙伴系统可重定位分区分配页面置换策略:全局置换局部置换其中,关于分区分配策略已经很熟悉了,需要特别说明的是页面置换策略。这是我们在课本上不太强调的。局部置换只置换本进程内的物理页面。一个进程占用的物理页面总数是限定的,当需要置换时,即总数已经用完,新进来一个页面,本进程就需要出去一个老的页面。所谓,朋友圈就那么大,有人进来自然需要...转载 2019-04-28 21:55:47 · 4983 阅读 · 0 评论 -
OS之存储管理---详解文件系统的实现方式(一)
文件系统的结构文件系统提供高效和便捷的磁盘访问,以便允许轻松存储、定位、提取数据。文件系统通常由不同的层组成,每层设计利用更低层的功能,创建新的功能,以用于更高层的服务。I/O控制层包括设备驱动程序和中断处理程序,以在主内存和磁盘系统之间传输信息。基本文件系统只需要向适当设备驱动程序发送通用命令,以读取和写入磁盘的物理块。该层也管理内存缓冲区和保存各种文件系统、目录和数据块的缓存。文件...原创 2019-04-28 16:38:25 · 1035 阅读 · 0 评论 -
OS之存储管理---文件系统的基本内容
什么是文件操作系统对存储设备的物理属性加以抽象,从而定义逻辑存储单位,即文件。文件由操作系统映射到物理设备上,这些存储设备是非易失的。文件是记录在外存上的相关信息的命名组合。从用户角度来看,文件是逻辑外存的最小分配单元,也就是说,数据只有通过文件才能存储到外存。文件的类型有很多,比如文本文件为按行组着的字符序列、源文件为函数序列,每个函数包括声明和可执行语句、可执行文件为一系列代码段,以供加载程...原创 2019-04-23 15:40:12 · 891 阅读 · 0 评论 -
进程(线程)互斥的软件实现--皮特森(Peterson)算法(转)
转载自:https://blog.csdn.net/geekcome/article/details/7098881实现如下:boolean flag[2]; int turn; void P0() { while(true) { flag[0]=true; turn=1; while(flag[1]&&turn=...转载 2019-04-27 22:15:26 · 1254 阅读 · 1 评论 -
OS之内存管理 --- 虚拟内存管理(一)
虚拟内存的背景在基本的内存管理策略中,所有的策略的相同点都是:每个进程在执行之前需要完全处于内存中。那有没有一种方法可以不需要将进程所有页面加载到内存中就可以开始运行进程呢?有没有可能在进程需要某些页面时再将其调入进内存中呢?于是就有了虚拟内存技术。而虚拟内存将用户逻辑内存和物理内存分开,使得编程人员不在担心有限的物理内存空间。除此之外,虚拟内存允许文件和内存通过共享页而为多个进程共享,这将...原创 2019-04-03 17:39:50 · 1249 阅读 · 0 评论 -
OS之内存管理 --- 虚拟内存管理(二)
关于虚拟内存管理之前的请看:OS之内存管理 — 虚拟内存管理(一)帧分配每个进程对的最小帧数是由操作系统的体系结构决定的,但是最大帧数是由可用物理内存的数量决定的。所以在这之间,对于进程的帧的分配是有很多选择的。分配算法平均分配在n个进程中分配m个帧的最容易的方法就是,给每个进程一个平均值,即m/n帧(在这里是忽略操作系统所需的帧,即m个帧是空闲帧)。比如有93个帧和5个进程,那么分...原创 2019-04-08 19:15:44 · 391 阅读 · 0 评论 -
OS之内存管理 ---基本的内存管理策略(一)
基本概念基本硬件CPU可以直接访问的通用存储只有内存和处理器的内置的寄存器。机器指令可以用内存地址作为参数,而不能用磁盘地址作为参数。所以执行指令以及指令使用的数据,应在这些可执行访问的存储设备上,如果数据不在内存中,那么在CPU使用他们之前应把数据移到内存上。CPU内置寄存器通常可以在一个CPU时钟周期内完成访问,但是对于内存,完成内存的访问可能需要多个CPU时钟周期,这种结果造成的影响就...原创 2019-03-28 18:00:26 · 657 阅读 · 0 评论 -
OS之内存管理 ---基本的内存管理策略(二)
分段基本方法分段就是基于用户视图的内存管理方案。逻辑地址空间是由一组段构成的,每个段都有名称和长度。地址指定了段名称和段内偏移。因此用户通过两个量来指定地址:段名称和段偏移。为了简单,进行对段的编号,是通过段号而不是段名称来引用的,所以逻辑地址由有序对组成:<段号,偏移>。分段硬件用户是通过二位地址来引用程序内的对象的,但是实际物理内存仍然是一维的字节序列。所以我们需要定义一...原创 2019-03-30 17:19:27 · 304 阅读 · 0 评论 -
OS之进程管理 --- 死锁
什么是死锁在正常操作模式下,进程按如下顺序来使用资源:申请:进程请求资源使用:进程对资源进行操作释放:进程释放资源当一组进程中的每一个进程度在等待一个事件,而这事件只能有一组进程的另一个进程引起,那么这组进程就处于死锁状态。死锁的特征我们来看一个例子:互斥锁的死锁采用互斥锁的多线程Pthreads程序可能发生死锁。函数pthread_mutex_init()将一个互斥锁初始化为未加...原创 2019-03-26 18:02:35 · 392 阅读 · 0 评论 -
浅析Linux内核调度
1.调度器的概述多任务操作系统分为非抢占式多任务和抢占式多任务。与大多数现代操作系统一样,Linux采用的是抢占式多任务模式。这表示对CPU的占用时间由操作系统决定的,具体为操作系统中的调度器。调度器决定了什么时候停止一个进程以便让其他进程有机会运行,同时挑选出一个其他的进程开始运行。2.调度策略在Linux上调度策略决定了调度器是如何选择一个新进程的时间。调度策略与进程的类型有关,内核现有...转载 2019-03-23 16:43:55 · 316 阅读 · 0 评论 -
OS之进程管理---实时CPU调度
引言一般来说,我们将实时操作系统区分为软实时系统(soft real-time system)和硬实时系统(hard real-time system)。软实时系统不保证会调度关键实时进程,而只保证这类进程会优先于非关键进程。硬实时系统具有更严格的要求:一个任务应在它的截止期限之前完成,在截止期限之后完成与没有完成是一样的。最小化延迟从事件到事件得到服务的这段时间称为事件延迟。事件延迟有两种...原创 2019-03-23 15:58:51 · 371 阅读 · 0 评论 -
OS之进程管理---多处理器调度
之前我们所学习的操作系统进程调度策略的前提条件是单处理器系统下的CPU调度程序。如果系统中存在多个CPU,那么负载分配就成为可能,但是相应的调度问题就会更加复杂。多处理器调度方法对于多处理器,CPU调度的一种方法是让一个处理器(主处理器)处理所有调度决定、I/O处理以及其他系统活动,其他处理器只执行用户代码。这个方称为非对称多处理(asymmetric multiprocessing),这...原创 2019-03-23 14:58:48 · 732 阅读 · 0 评论 -
OS之进程管理---进程调度和多线程调度
进程调度基本概念多道程序的目标就是始终允许某个进程运行以最大化CPU利用率,多个进程通时存在于内存中,操作系统通过进程调度程序按特定的调度算法来调度就绪队列中的进程到CPU,从而最大限度的利用CPU。需要进行CPU调度的情况可以分为四种:当一个进程从运行状态切换到等待状态时(如I/O请求,wait()调用以便等待一个子进程的结束)当一个进程从运行状态切换到就绪状态时(如出现了中断)当一...原创 2019-03-22 16:16:01 · 675 阅读 · 0 评论 -
OS之进程管理---多线程模型和线程库(POSIX PTread)
多线程简介线程是CPU使用的基本单元,包括线程ID,程序计数器、寄存器组、各自的堆栈等,在相同线程组中,所有线程共享进程代码段,数据段和其他系统资源。传统的的单线程模式是每一个进程只能单个控制线程,但是随着计算机硬件的提升和多(多处理器)的普及,传统的单线程模式已经不适用于现在,所以希望一个进程能够具有多个控制线程,这样就可以同时执行多个任务了。多线程模型有两种方法来提供线程的支持:用户...原创 2019-03-20 17:34:03 · 349 阅读 · 0 评论 -
OS之进程管理---孤儿进程和僵尸进程
僵尸进程当一个进程终止时,操作系统会释放其资源,不过它位于进程表中的条目还是在的,直到它的父进程调用wait();这是因为进程表中包含了进程的退出状态。当进程已经终止,但是其父进尚未调用wait(),这样的进程叫做僵尸进程(zombie prpcess)。所有进程终止时都会过度到这种状态,但是一般而言僵尸只是短暂存在。一旦父进程调用了wait(),僵尸进程的进程标示符和它在进程表中的条目就会释...原创 2019-03-19 18:14:50 · 318 阅读 · 0 评论 -
二叉堆的理解和实现(java)
其实在写二叉堆实现的时候,已经在堆排序中了解了二叉堆,所以在这里不再详细讲解二叉堆的性质,有兴趣的可以看一看这里:堆排序(最大堆)的理解和实现(Java)最大堆代码实现:package 二叉堆;import java.util.ArrayList;/** * 最大堆 * @author lishanlei * */public class MaxHeap<T exte...原创 2019-07-15 17:07:55 · 510 阅读 · 0 评论