操作系统

Java 设计模式 2 —— 观察者模式

人盡茶涼 提交于 2020-01-17 17:14:59
观察者模式 定义 建立了对象之间一对多的依赖关系,这样一来,当一个对象的状态改变时,它的所有依赖者都会收到通知并自动更新。 观察者模式中,被观察对象状态发生改变时,会通知所有的观察者。这里又有PUSH和PULL的两种模式。PUSH是被观察对象主动将内容更新到观察者之上,而PULL则是观察者主动向被观察对象获取更新内容。 观察者模式经常出现在Java的GUI、Web和Spring等地方。 UML类图 在Java的java.util包中其实已经包含了观察者模式设计的一些最基本的东西:Observable类和Observer接口。但是Observable类和Observer接口在Java9之后就被注释为Deprecated。 Observable类可以认为是“可以被观察”的一类事物,其中changed是一个boolean类型的成员变量表示该事物是否发生了改变,obs中维护了一个有观察者组成的Vector列表。其中起重要作用的是setChanged()方法和notifyObservers()方法。 public void notifyObservers ( Object arg ) { //临时对象数组,存储观察者 Object [ ] arrLocal ; synchronized ( this ) { if ( ! changed ) return ; arrLocal = obs .

计算机导论部分知识整理

痞子三分冷 提交于 2020-01-01 16:53:13
◆◆将计算机发展划分为五个阶段的标志 : 元件制作工艺水平的不断提高是计算机发展的物质基础,因此以计算机元器件的变革作为标志,将计算机的发展划分为五个阶段,这五个阶段通常称为计算机发展的五个时代 。自1946年第一台电子数字计算机问世以来,计算机的发展以计算机硬件的逻辑元器件为标志,大致经历了电子管、晶体管、中小规模集成电路到大规模、超大规模集成电路和极大规模集成电路等5个发展阶段。 ◆◆冯·诺依曼计算机的基本特点如下: ·采用存储程序方式,程序和数据放在同一个存储器中,两者没有区别,指令同数据一样可以送到运算器进行运算,即由指令组成的程序是可以修改的。 ·存储器是按地址访问的线性编址的唯一结构,每个单元的位数是固定的。 ·指令由操作码和地址码组成。 ·通过执行指令直接发出控制信号控制计算机的操作。 ·机器以运算器为中心,输入输出设备与存储器间的数据传送都经过运算器。 ·数据以二进制表示。 ◆◆计算机系统主要技术指标 1.字长 2.时钟周期和主频 3.运算速度 4.内存容量 5.存储器的容量反映计算机记忆信息的能力。它常以字节为单位表示。一个字节为八个二进制位,即 1byte = 8bit。 210 byte =1024=1kbytes 220 byte =1mbytes 230 byte =1gbytes bit——比特 b ——字节 kb——千字节 mb——兆字节 gb—

浅谈Linux进程调度过程

本秂侑毒 提交于 2019-12-09 21:52:41
在操作系统运行过程中,由于CPU bound和I/O bound,进行进程的调度自然是常事。进行进程调度时,操作系统使用某些特定算法(如FIFO、SCBF、轮转法等)在进程队列中选出一个进程作为下一个运行的进程,调用schedule。进行进程调用的时机有以下几种: 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(); 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度; 用户态进程无法实现主动调度,仅能通过陷入内核态后的某个时机点进行调度,即在中断处理过程中进行调度。 相对于可以高风亮节主动让出系统资源的内核态进程,用户态进程只能接受被动调度。而被动调度分为抢占式调度和强制调度。 schedule函数进行调度时,首先选择一个新的进程来运行,然后调用context_switch进行上下文的切换,这个宏又调用switch_to进行关键上下文的切换。 next = pick_next_task(rq, prev);//进程调度算法都封装这个函数内部 context_switch(rq, prev, next);//进程上下文切换 switch_to利用了prev和next两个参数

Web神器WebStorm 8.0测试版发放(慧都独家)

半世苍凉 提交于 2019-12-05 18:24:14
WebStorm 8.0测试版的发放,标志着WebStorm规划构建的发展成熟。 此次WebStorm 8.0测试版的主要变化是支持高级的AngularJS和集成Spy-js JavaScript跟踪工具。继续朝着成为最聪明的JavaScript IDE 方向前进,被广大开发者誉为“Web神器”也是名至实归的。 支持高级的AngularJS包括: 完成的指令(包括内置和自定义) 快速查找文档内置标签 完成ng-app和ng-controller属性 支持AngularJS实体 Spy-js 是一个JavaScript WebStorm跟踪工具,用于跟踪、调试和分析代码。集成以后支持操作: 创建新的spy-js RC 指定节点路径和跟踪你想使用服务器端口 跟踪指定的URL 配置http代理,设置使用localhost:3546(端口你RC中指定) 通过浏览器打开/刷新跟踪 慧都提供 WebStorm 8.0测试版Windows安装包 ,随后将继续发放WebStorm 8.0测试版的Mac与Linux版本。测试版不需要许可,可试用30天,欢迎大家试用。 来源: oschina 链接: https://my.oschina.net/u/1251054/blog/193456

操作系统之进程管理_上(汤子瀛版)

落爺英雄遲暮 提交于 2019-12-04 04:52:48
2.1 进程的基本概念 1. 程序的顺序执行及其特征 特征:顺序性、封闭性、可再现性 2. 程序的并发执行及其特征 (1)特征:间断性、失去封闭性、不可再现性 (2)程序并发执行的条件——Bernstein条件: 设有读集R(p_i )={a_1,a_2…a_m}和写集W(p_i )={b_1,b_2…b_n},若程序满足以下三个条件,则程序可以并发且具有可再现性(i≠j): R(p_i )∩W(p_j )=∅|R(p_j )∩W(p_i )=∅|W(p_i )∩W(p_j )=∅ 3. 进程的特征与状态 进程(动态)是进程实体(静态)的运行过程,是系统进行资源分配和调度的一个独立单位。 (1)进程的特征: ①结构特征:进程实体由进程控制块PCB(Process Control Block)、程序段、相关的数据段组成 ②动态性(最基本特性) ③并发性④独立性⑤异步性 (2)进程的状态: ①三种基本状态:就绪态、运行态、阻塞态 (进程状态的转换并非都可逆,阻塞态无法转换为执行态;只有执行态变为阻塞态是主动的,其余都是被动的;进程在某一时刻仅有一种状态) ②挂起态 引起挂起态的原因: 终端用户的要求、父进程的请求、负荷调节的需要、操作系统的需要 进程状态的转换 活动就绪->静止就绪 活动阻塞->静止阻塞 静止就绪->活动就绪 静止阻塞->活动阻塞 ③创建态和终止态 创建态

[翻译]如何开始开发自己的操作系统

浪子不回头ぞ 提交于 2019-12-03 10:13:20
This tutorial is written by K.J. and Joachim Nock. Updated 2002.11.20 by K.J. 原文地址: http://www.osdever.net/tutorials/view/getting-started-in-os-development 译者能力有限,欢迎砍砖,共同进步 正文开始 目前看来确实有很多人想要写一个自己的操作系统,但是他们不知道到底从哪开始,而且他们不知道到底都需要掌握哪些计算机语言。 其实,让我开始写我自己的操作系统的时候,我确实也经历了这样的问题。因此我写了这个如何开始开发操作系统的教程。 我写了个 Q&A 表来帮助大家理解。 Q :要写一个自己的操作系统,我都应该掌握哪些计算机语言? A :你需要至少知道汇编语言( ASM ),因为你将使用它去写一个 bootsector (下面会解释这个问题)以及不少其它的事情。我还建议你需要学习 C/C++ ,与汇编语言相比它更好理解一些。你可以把它们都用在你的操作系统中。你可能会想使用 Pascal 和汇编去替代 C++ ,但是我建议使用 C/C++ 和汇编。(记住这里有一些关于 C++ 和操作系统开发的特别的问题) Q :什么是 bootsector(引导扇区) ? A : bootsector 被存在你的软驱或者硬盘最前端的小程序

操作系统之操作系统概述(汤子瀛版)

谁都会走 提交于 2019-12-03 01:52:51
1.1 操作系统的目标和作用 操作系统是一组控制和管理计算机软硬件资源,合理对各类作业进行调度,以及方便用户使用的程序的集合。 1. 操作系统的目标 有效性、方便性、可扩充性、开放性(前两个最重要,开放性是指遵循世界标准规范) 2. 操作系统的作用 (1) OS作为用户和计算机硬件系统之间的接口 用户可通过三种方式使用计算机:命令方式、系统调用方式、图形窗口方式 (2) OS作为计算机系统资源的管理者 (3) OS实现了对计算机资源的抽象 3. 推动计算机发展的主要动力 (1) 不断提高计算机资源的利用率 (2) 方便用户 (3) 器件的不断更新换代 (4) 计算机体系结构的不断发展 (计算机体系结构是那些能够被程序员所见到的计算机的属性,及概念性的结构与功能。站在不同层次上编程的程序员看到的计算机属性也是不同的;计算机组成原理是如何实现计算机体系结构所体现的属性,它包含了许多对程序员是透明的硬件环节) 1.2 操作系统的发展过程 1. 无操作系统的计算机系统(第一代计算机:真空管) (1) 人工操作方式(纸带->纸带输入机):用户独占全机,资源利用率低;CPU等待人工操作,CPU利用不充分。 (2) 脱机输入\输出方式(纸带->磁带->内存):减少CPU的空闲时间;提高I/O速度 2. 单道批处理系统 Simple Batch Processing System(第二代计算机

第四十一期:从Windows到鸿蒙——操作系统的前世与今生

假装没事ソ 提交于 2019-12-02 14:40:37
世界上操作系统生意做得最好的是微软,但是世界上第一个做操作系统生意的不是微软,Windows也不是世界上最好用的系统。 作者:苏亚 “做一个操作系统的技术难度不大,难度大的是生态。”——任正非 华为被谷歌断供之后,余承东宣布华为将自研操作系统,新系统被命名为“鸿蒙”,国外称“ARK OS”,余承东表示将于今年九月份推出。有人为华为捏了把汗能否在Android和iOS两大巨头夹击之下活下来,也有人表示鸿蒙系统的全新架构将成未来操作系统标杆,但是无论怎样,鸿蒙到目前为止都还属于概念产品。所以这个题目说是谈鸿蒙,不如说是谈操作系统。 没有历史,就没有未来。一起从操作系统的历史来看看,鸿蒙到底处在怎样的环境之下,华为将走向何处。 世界上操作系统生意做得***的是微软,但是世界上***个做操作系统生意的不是微软,Windows也不是世界上***用的系统。起步之初,Windows和他***的竞争对手——苹果系统相比,也差了整整一代,但是Windows却能跃居其上,占据全球近九成的操作系统份额,操作系统的江湖里,不一定是技术主导的。 1. 商业操作系统的起点:Unix 世界上***款商用操作系统是Unix,来自于大名鼎鼎的贝尔实验室,主要操刀手则是c语言之父——Dennis Ritchie。当时Dennis Ritchie在贝尔实验室工作,隶属于AT&T公司,与通用电气

进程、线程、协程基本概念理解

三世轮回 提交于 2019-12-01 16:24:30
概述 最近接触一些进程、线程、协程、相关的东西,总是容易搞混淆,或者出错,专门想总结下这块的几个概念的问题! 进程 进程之间不共享任何状态 进程的调度由操作系统完成 每个进程都有自己独立的内存空间 进程间通讯主要是通过信号传递的方式来实现的,实现方式有多种,信号量、管道、事件等,任何一种方式的通讯效率都需要过内核,导致通讯效率比较低 由于是独立的内存空间,上下文切换的时候需要保存先调用栈的信息、cpu各寄存器的信息、虚拟内存、 以及打开的相关句柄等信息,所以导致上下文进程间切换开销很大,通讯麻烦。 线程 线程之间共享变量,解决了通讯麻烦的问题 对于变量的访问需要锁 线程的调度主要也是有操作系统完成 一个进程可以拥有多个线程,但是其中每个线程会共享父进程像操作系统申请资源,这个包括虚拟内存、文件等,由于是共享资源,所以创建线程所需要的系统资源占用比进程小很多,相应的可创建的线程数量也变得相对多很多。 线程时间的通讯除了可以使用进程之间通讯的方式以外还可以通过共享内存的方式进行通信,所以这个速度比通过内核要快很多。 另外在调度方面也是由于内存是共享的,所以上下文切换的时候需要保存的东西就像对少一些,这样一来上 下文的切换也变得高效。 协程 协程的调度完全由用户控制 一个线程可以有多个协程,用户创建了几个线程,然后每个线程都是循环按照指定的任务清单顺序完成不同的任务