1.4 操作系统的其余功能 操作系统除了虚拟化.并发.存储管理三个主要功能,还有许多子功能,我主要介绍几种常见的功能比如 目录 1.4 操作系统的其余功能 稳定性 高性能 隔离保护 易用性(可视化) 权限设计 实时操作 稳定性 稳定性是决定一个操作系统能否被人们接受使用的关键. linux系统被广泛使用的原因之一,就是在运行网络服务时候稳定性好 高性能 虽然虚拟化.并发等功能十分有用,但是维持这些功能本身也是需要消耗计算能力和存储空间的.所以我们要在高性能和高功能之间决定好取舍. 隔离保护 对于…
1.3 操作系统的第三个功能--存储管理功能 作者zobol:关于操作系统概论-存储管理功能,我给出下列问题: 目录 1.3 操作系统的第三个功能--存储管理功能 问1:操作系统的文件管理系统主要是负责哪些任务? 问2:为什么数据的转移会成为影响计算机的性能的主要原因? 问3:硬盘.内存.Cache都是什么? 问4:存储器内部的读取方式对计算机性能有影响吗? 问5:操作系统是怎么根据CPU发出的消息得到数据的位置? 一般来讲,制约我们计算机使用快慢感觉的瓶颈,不在于CPU的计算速度(正常情况下,…
1.2 操作系统的第二个功能--并发功能 目录 1.2 操作系统的第二个功能--并发功能 问1:什么是并发功能?并发功能是必要的吗? 问2:并发功能必须要求拥有多核CPU吗? 问3:多核CPU和单核CPU对并发功能的实现,有影响吗? 问4:并发功能的并发性是绝对的,还是相对的? 问5:GPU显卡的并发性是如何实现的? 在虚拟化技术的基础上,我们可以实现并发功能. 问1:什么是并发功能?并发功能是必要的吗? 粗略地讲,并发功能就是同时做多件事情的能力. 现实中我们遇到的很多问题,都是可以同时计算的…
1.1 操作系统的第一个功能--虚拟化硬件资源 目录 1.1 操作系统的第一个功能--虚拟化硬件资源 问1:操作系统一般处于计算机系统的哪一个位置? 问2:管理硬件资源为什么要单独交给操作系统? 问3:那操作系统如何管理硬件呢? 问4:操作系统负责将下层硬件资源同化为同样的软件资源? 问5:操作系统会将所有硬件都进行虚拟化吗? 问6:虚拟化除了将硬件资源逻辑化,还有什么功能? 问7:Java的虚拟机技术是一种虚拟化吗? 问1:操作系统一般处于计算机系统的哪一个位置? 操作系统处于计算机硬件和软件…
内核态的出现,让计算机系统的权力向操作系统高度集中了. 操作系统分出内核态和用户态,就是为了进行不同等级的权限管理, 从而更好的适应多用户多任务并发的工作环境. 用户态和内核态的来源 在早期的单进程单用户操作系统中,是不存在两种用户态的. 随着进程和用户的出现,当时的计算机面临着一个重要问题,就是如何限制不同进程的操作的权限.(因为操作系统无法预测未来会出现什么样的进程) 把计算机内部想象成一个有条不紊的工厂,那必须在管理者和被管理者之间制定好规则,每个职位的权限都一定要确定好. 所以当时的工程…
2.2 追求并发的极致-线程概论 为了追求程序运行之间的并发性,计算机科学家们发明了进程.为了进一步的追求进程内部的并发性,工程师们又提出了线程. 正是线程的出现,给予了程序员更多地操纵OS的自由,可惜大多数程序员承担不起这种责任. 1.线程的诞生--将进程进一步细分 进程作为操作系统资源分配的最小单位,它的出现解决了操作系统并发执行任务的需求. 但是随着多核CPU的出现,人们希望能够通过继续拆分进程,实现计算速度的进一步提升. 比如一个听歌软件,它提供播放音乐和搜索音乐两个功能,其中播放音乐使…
2.1 动为进程,静为程序 -进程概论 目录 2.1 动为进程,静为程序 -进程概论 问1:发明进程的原因? 问2:现在计算机中的进程的定义是什么? 问3:为什么进程跟处理器的联系更密切? 问4:进程的主要特性有哪些? 问5:进程的主要状态: 问1:发明进程的原因? 早在20世纪60年代,进程的思想就已经被IBM的工程师们构想出来,并且一直延续到今天.当时的计算机面临着,一段时间内要轮转并发执行多个任务的要求,这要求各个程序之间占据的内存空间互不干扰,程序通过统一的程序编号进行访问控制. 但是在…
ROS(indigo)机器人操作系统学习资料和常用功能包汇总整理(ubuntu14.04LTS) 1. 网站资源: ROSwiki官网:http://wiki.ros.org/cn GitHub           :https://github.com/ ExBot             :http://blog.exbot.net/ ROSwiki        :http://www.roswiki.com/ ROSClub      :http://www.rosclub.cn/ OS…
1. ucore lab4介绍 什么是进程? 现代操作系统为了满足人们对于多道编程的需求,希望在计算机系统上能并发的同时运行多个程序,且彼此间互相不干扰.当一个程序受制于等待I/O完成等事件时,可以让出CPU给其它程序使用,令宝贵的CPU资源得到更充分的利用. 操作系统作为大总管需要协调管理各个程序对CPU资源的使用,为此抽象出了进程(Process)的概念.进程顾名思义就是进行中.执行中的程序. 物理层面上,一个CPU核心同一时间只能运行一个程序,或者说一个CPU核心某一时刻只能归属于一个特定…
1. ucore lab5介绍 ucore在lab4中实现了进程/线程机制,能够创建并进行内核线程的调度.通过上下文的切换令线程分时的获得CPU,使得不同线程能够并发的运行. 在lab5中需要更进一步,实现我们平常开发接触到的.运行在用户态的进程/线程机制.用户线程通常用于承载和运行应用程序,为了保护操作系统内核,避免其被不够鲁棒的应用程序破坏.应用程序都运行在低特权级中,无法直接访问高特权级的内核数据结构,也无法通过程序指令直接的访问各种外设. 但应用程序访问高特权级数据.外设的需求是不可避免…
1. ucore lab7介绍 ucore在前面的实验中实现了进程/线程机制,并在lab6中实现了抢占式的线程调度机制.基于中断的抢占式线程调度机制使得线程在执行的过程中随时可能被操作系统打断,被阻塞挂起而令其它的线程获得CPU.多个线程并发的执行,大大提升了非cpu密集型应用程序的cpu吞吐量,使得计算机系统中宝贵的cpu硬件资源得到了充分利用. 操作系统提供的内核线程并发机制的优点是明显的,但同时也带来了一些问题,其中首当其冲的便是线程安全问题. 并发带来的线程安全问题 线程安全指的是在拥有…
天脉2(ACoreOS653)操作系统学习01 由于我的毕业设计涉及相关嵌入式操作系统,故最近学了学天脉2操作系统. 一.ARINC653标准 1.ARINC653标准是什么? ARINC 653 : ARINC公司的600系列标准的一部分,全名" Avionics Application Software Standard Interface".是为满足综合模块化航电系统(IMA)要求,基于计算机资源时空分区的编程接口标准. 发展:在传统的嵌入式实时操作系统中,内核和应用都运行在同一…
操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件.而通过学习笔记3的简史回顾,操作系统通过多进程图像实现对CPU的管理.所以多进程图像是操作系统的核心图像. 参考资料: 课程:哈工大操作系统(本部分对应 L8 && L9) 实验:操作系统原理与实践_Linux - 蓝桥云课 (lanqiao.cn) 笔记:操作系统学习导引 · 语雀 (yuque.com) 1. 从使用CPU开始直观理解CPU管理 要想管理CPU,就要知道如何使用CPU. CPU的工作原理已经很熟悉:…
在上一部分中,我们了解到操作系统实现多进程图像需要组织.切换.考虑进程之间的影响,组织就是用PCB的队列实现,用到了一些简单的数据结构知识.而本部分重点就是进程之间的切换. 参考资料: 课程:哈工大操作系统(本部分对应 L10 && L11 && L12) 实验:操作系统原理与实践_Linux - 蓝桥云课 (lanqiao.cn) 笔记:操作系统学习导引 · 语雀 (yuque.com) 这一部分比较难,一难在理解,二难在实现,其中L12是最难的,反复看了很多遍.之后需要…
从这一部分开始介绍操作系统的设备驱动,操作系统通过文件系统的抽象驱动设备让用户能够使用显示器.键盘等交互工具.并讲解printf和scanf是如何实现敲下键盘将字符显示到屏幕上的. 参考资料: 课程:哈工大操作系统(本部分对应 L26 && L27) 实验:操作系统原理与实践_Linux - 蓝桥云课 (lanqiao.cn) 笔记:先前的参考笔记自此处就没有继续更新了. 这一部分内容整合了前面很多篇笔记的知识,操作系统浓度较高 1. 外设工作原理的主干理解 与 内存管理 的理解过程相似,…
实验五:Linux操作系统是如何工作的? 学号:SA1****369 操作系统工作的基础:存储程序计算机.堆栈(函数调用堆栈)机制和中断机制 首先要整明白的一个问题是什么是存储程序计算机?其实存储程序计算机正是冯.诺依曼最初提出的计算机体系模型,现在我们一提到冯.诺依曼体系结构首先会想到的应该是包含输入设备.输出设备.存储器.控制器.运算器组成的经典模型,但是这里我们强调的存储程序计算机的主要特征实际上并非如此,存储程序计算机的概念相当于是褪去现代计算机华丽的外衣,所呈现出来的实实在在的计算机的…
操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进程创建.撤销.阻塞.唤醒.... 0.2 线程模型 为什么引入线程 线程的组成 线程机制的实现 用户级线程.核心级线程.混合方式 1. 进程的基本概念 1.1 多道程序设计 允许多个程序同时进入内存运行,目的是为了提高CPU系统效率 1.2 并发环境与并发程序 并发环境: 一段时间间隔内,单处理器上…
大家都知道,在现在这个信息化飞速发展的时代,IT技术火速发展,信息的重要性,可想而知.现在,在北京当一个高级运维工程师,年薪百万已经不是梦想.当然我也想,谁不想挣大钱,开好车,住好房.下面说说自己的一些见解和大家讨论下Linux学习路线,Linux操作系统学习路线其实真的学习起来并不难. 但是Linux运维真的这么好学么,这一点,我可以很负责任的告诉你,是真的好学,因为我就是零基础学习运维. linux其实就是一个操作系统,和我们平时常用的windows一样,windows系统我们不也是一点点学…
天脉2(ACoreOS653)操作系统学习02 一.分区内通信方法 分区内通信指同一分区内进程之间的通信.ARINC 653定义的分区内进程通信机制,包括:缓存队列(Buffers-Queue).黑板(Blackboards).信号量(Semaphores)和事件(Events).其中缓存队列和黑板用于进程间通信,信号量和事件用于进程间同步与互斥. 缓存队列允许其中的消息以队列形式存储,消息不允许覆盖: 黑板在任何时刻最多只保留一个消息,消息允许覆盖. 信号量提供对资源的受控访问: 事件通过通知…
由于第四章线程的介绍没有上传视频,故之后看书来补. 最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助.同时盼望大家能对文章评论,大家一起多多交流,共同进步! 本篇文章大致内容为: 基本概念(Basic Concept) 调度准则(Scheduling Criteria) 调度算法(Scheduling Algorithm) 实时调度(Real-Time Scheduling) 算法评价(Algorithm Evaluation) 基本概念…
我们通过实现鹰眼图这个功能来进一步学习MapControl控件.在实现鹰眼图之前,我们需 要接口有更深入的了解. 变主动为被动-出接口(OutBound interface) COM编程类似客户端和服务器端的两层结构,COM所建立的是一个软件模块与另一个软 件模块之间的链接, 当这种链接建立之后, 模块之间就可以通过被称之为Interface“接口 ” 的机制来进行通信.在绝大部分情况下, 客户应用程序与组件的通信过程是单向的, 客户创 建组件对象, 然后客户通过接口调用对象所提供的功能, 在适…
参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔记:第二十四讲 趣谈Linux操作系统学习笔记:第二十五讲 趣谈Linux操作系统学习笔记:第二十六讲 核心原理篇:文件系统 趣谈Linux操作系统学习笔记:第二十八讲 趣谈Linux操作系统学习笔记:第二十九讲…
1. ucore lab6介绍 ucore在lab5中实现了较为完整的进程/线程机制,能够创建和管理位于内核态或用户态的多个线程,让不同的线程通过上下文切换并发的执行,最大化利用CPU硬件资源.ucore在lab5中使用FIFO的形式进行线程调度,不同的线程按照先来先服务的策略,直到之前创建的线程完全执行完毕并退出,后续的线程才能获得执行机会. FIFO的策略固然简单,但实际效果却非常差.在非抢占的FIFO调度策略中,如果之前的线程任务耗时很长,将导致后续的线程迟迟得不到执行机会而陷入饥饿:即使…
Masnory学习札记 在之前的文章里有草草提到过Masonry自动布局,可这么重要第三方布局框架的怎么可以怎么随便带过呢!昨天在完成页面的时候刚好遇到了被Masorny功能惊叹的部分,所以趁热打铁写下了这篇札记,记录一下方便日后回忆. 一.概念 Autolayout最重要的是约束:UI元素之间关系的数学表达式.约束包括尺寸.由优先级和阈值管理的相对位置.但约束冲突和约束不足都会造成布局无法确定,从而产生异常报错. Masonry是公认非常简洁优美的一款Autolayout框架,也是纯手写代码关…
感觉自我表述能力有欠缺,技术也不够硬,所以之后的Windows8应用开发学习札记的文章就偏向于一些我认为较难的地方和重点了多有抱歉. 上节课是入门,这节课就已经开始进行视图设计了. Windows应用的三种常用的数据展示控件:FlipView.ListView和 GridView. FlipView是用来显示集合数据的控件,用户可以点击上/下或者左/右按钮实现子窗口间的切换. 值得一提的是包括后面要介绍的两个控件,这三个均继承自ItemsControl类.但需要注意的是:不要使用FlipView…
刚开始学SQL,从最基础的语句开始写,用一个LOL数据库做实验.目前使用的工具是MySQL Workbench,感觉比较顺手,界面没花多久时间就读懂的差不多了,所以目前就使用这个工具来做SQL的学习了. (1)多条件查询,然后修改值.因为我这里是需要编辑原来是0值的行,所以多条件查询中使用的是 A = 0为条件搜索. 刚刚提到的0值行就是这个样子,刚开始Copy行的时候遇到了很奇葩的错误--有些行必须存在默认值才能将数据进行表与表之间的Copy和Paste,所以就给默认值放了个0值. (2)仔细…
java学习札记 0x0 学习原因  本来打算大三再去跟着课程去学习java的,但是现在题目越来越偏向java,所以迫于无奈开启了java的学习篇章,同时也正好写个笔记总结下自己学习一门语言的流程. 0x1 java学习过程 1.了解java的历史 2.安装eclipse,尝试写一个hellowworld 3.了解java的基本数据类型 ​ (1)bytes ​ (2)int short long 整形 ​ (3)double float 浮点型 ​ (4)string ​ (5)boolean…
1.使用环境 很多时候我们用的是官网的解压免安装版的Tomcat,相比安装Tomcat除了少了安装步骤以外还少了tomcat6w.exe运行所需要的环境变量,所以一般Java开发免安装版的已经足够使用了,但是如果部署服务的时候我们不可能只运行startup.bat文件,我们需要新建一个服务并可以通过tomcat6w.exe启动和关闭服务. 2.无法运行tomcat6w.exe (1)提示错误: 运行tomcat6w.exe ,提示 指定的服务未安装 unable to open the serv…
ucos实时操作系统的任务间通信有好多种,本人主要学习了sem, mutex, queue, messagebox这四种.系统内核代码中,这几种任务间通信机制的实现机制相似,接下来记录一下本人对核心代码的学习心得,供以后回来看看,不过比较遗憾的是没有仔细学习扩展代码的功能实现部分.ucos操作系统的内核代码实现相对简单,但是对理解其他操作系统内核相同功能有帮助. ucos的任务间通信机制主要是基于event实现的,其实理解这个event不用翻译成中文事件,就叫event感觉还更容易接收.下面是操…
使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只有几千行代码的操作系统,也没所有的代码都看,只是看了其中部分内容.自己还自不量力的尝试着去写过简单的操作系统,最后写着写着就被带到了ucos的设计思路上了,后来干脆就“copy”代码了,虽说对操作系统内核的理解有很大的帮助,但是很是惭愧啊,智力不够,对操作系统内核的设计者更加仰慕,O(∩_∩)O哈哈…