认真学习系列:操作系统——视频+读书笔记
- 数据总线:传递数据
- 地址总线:传递地址
- 控制总线:发送命令
- 概念:
- 功能:
- 控制计算机上运行的程序
- 管理计算机资源
- 组成
- 进程管理:系统资源的分配单位
- 存储管理:内存分配,存储保护,虚拟存储
- 设备管理:管理外设和接口
- 文件管理:保存程序和数据等软件信息
- 程序接口:提供指令或函数的调用方式,使程序能够调用系统的服务
- 用户界面:为用户提供操作环境
- 分类
- 单用户操作系统:DOS,Windows系列
- 批处理操作系统:DOS/VSE(IBM)
- 分时操作系统:UNIX(CPU时间分片)
- 实时操作系统:卫星导航等用的
- 网络操作系统:一般的操作系统都是网络操作系统
用户态: | web浏览器、电子邮件的阅读器、音乐的播放器 | 软件 |
用户接口程序 | ||
内核态: | 操作系统 | |
硬件 |
- 启动计算机:
- 操作系统分类:
- 进程
- 文件
- Shell
- 系统调用
- 操作系统内部
- 虚拟机不是具有文件等优良特征的扩展计算机,相反,它仅仅是裸机硬件的精确复制品。这个复制品包含了内核态/用户态、I/O功能以及其他真是硬件所应该具有的全部内容。
- 为什么C适合编写操作系统
- 四种事件导致进程创建:
- 系统初始化
- 执行了正在运行的进程所调用的进程创建系统调用
- 用户请求创建了一个新进程
- 一个批处理作业的初始化
- 四个条件引起进程终止:
- 正常退出(自愿的)
- 出错退出(自愿的)
- 严重错误(非自愿)
- 被其他进程杀死(非自愿)
- 进程的层次结构:
- UNIX里一个进程有一个父进程,多个子进程,它们共同组成一个进程组。
- Windows里没有进程层次,所有进程地位相同。父进程得到一个句柄,该句柄可以控制子进程。但父可以把这个句柄给别的进程,这样就不存在进程层次了。
- 进程的状态:
- 运行态(该时刻进程实际占用CPU)
- 就绪态(可运行,但因为其他进程正在运行而暂时停止)
- 阻塞态(除非某种外部事件发生,否则进程不能运行)
- 进程的实现:
- 线程
- 调度程序激活机制:
- 弹出式线程:
- 使单线程代码多线程化
- 进程间的通信(Inter Process Communication, IPC)
- 竞争条件:两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序。
- 互斥(mutual exclusion):阻止多个进程同时读写共享的数据。
- 临界区域(critical region)或临界区(critical section):对共享内存进行访问的程序片段。
- 要想避免竞争,要满足:
- 任何两个进程不能同时处于临界区
- 不应对CPU的速度和数量做任何假设
- 临界区外运行的进程不得阻塞其他进程
- 不得使进程无限期等待进入临界区
- 锁变量:有问题——在检查锁变量的值后,正准备改变它,这时别的进程检查它的值,会导致俩进程都进入临界区。
- 忙等待(busy watting):一个进程在等待时,连续测试一个变量直到某个值出现为止。这种方式浪费CPU时间,通常应该避免。
- Peterson解法和TSL或XCHG解法都有忙等待的缺点。这些解法在本质上是:当一个进程想进入临界区时,先检查是否允许进入,若不允许,则该进程将原地等待,直到允许为止。
- 信号量和原子性:检查数值、修改变量值以及可能发生的睡眠操作均作为一个单一的、不可分割的原子操作完成。
- 互斥量:如果不需要信号量的计数能力,有时可以使用信号量的一个简化版本——互斥量。
- 管程:一种高级同步原语。一个管程是一个由过程、变量及数据结构等组成的一个集合,他们组成一个特殊的模块活软件包。进程可在任何需要的时候调用管程中的过程。任一时刻管程中只能有一个活跃进程。
- 消息传递
- 屏障:用于进程组。除非所有的进程都就绪准备着手下一个阶段,否则任何进程都不能进入下一个阶段。可以通过在每个阶段的结尾安置屏障(barrier)来实现这种行为。当一个进程到达屏障时,它就被屏障阻拦,直到所有进程都到达该屏障为止。
- 调度
- 调度算法分类:
- 批处理:用户不需要短请求的快捷响应,常使用非抢占算法
- 交互式:抢占是必要的
- 实时:只运行用来推进现有应用的程序
- 调度算法设计取决于环境:
- 交互式系统:最重要的是最小响应时间
- 批处理系统中的调度
- 先来先服务:进程按照它们请求CPU的顺序使用CPU,单一队列。
- 最短作业优先:先完成耗时短的。只有在所有作业都可同时运行的情形下,最短作业算法才是最优化的。
- 最短剩余时间优先:上面这个的抢占版。如果新进程比当前进程需要更少时间,当前线程就被挂起,而运行新的进程。
- 交互式系统中的调度
- 轮转调度:即时间片轮转算法。
- 策略和机制
- 线程调度
- 地址空间:把物理地址暴露给进程会带来严重问题,所以,需要存储器抽象——地址空间。
- 如何给每个程序一个自己的地址空间?
- 两种处理内存超载的方法:
- 交换技术
- 空闲内存管理:
- 位图:内存被划分成分配单元,每个单元对应位图中一位,0空闲,1占用(相反亦可)
- 空闲链表:维护一个纪录已分配内存端和空闲内存端的链表,其中一个结点或包含一个进程,或是两进程间的一个空闲区。
- 虚拟内存
- 转换检测缓冲区(Translation Lookaside Buffer, TLB):它也叫相连存储器(associate memory),小型硬件设备,将虚拟地址直接映射到物理地址,而不必再访问页表。
- 文件:
- 目录
- 虚拟文件系统(Virtual File System , VFS)
- I/O设备:块设备(block device)和字符设备(character device)
- 内存映射I/O(memory-mapped I/O):每个控制寄存器被分配唯一的一个内存地址,并且不会有内存被分配这一地址。
- I/O三种实现方式:
- 程序控制I/O (programmed I/O):让CPU做全部工作。以打印机为例:输出一个字符之后,CPU要不断查询设备以了解它是否就绪准备接收另一个字符。这一行为称为轮询(polling)或忙等待(busy waiting)。(低效)
- 中断驱动I/O :CPU在等待打印机变为就绪的同时做其他事情。(发生在每个字符上的中断要花费时间)
- 使用DMA的I/O :DMA控制器提供给打印机字符串,不打扰CPU,本质上是DMA是程序控制I/O,但由DMA而不是CPU做全部工作。
- I/O软件层次
用户及I/O软件 |
与设备无关的操作系统软件 |
设备驱动程序 |
中断处理程序 |
硬件 |
- 死锁和不可抢占资源有关,有关可抢占资源的潜在死锁通常可以通过在进程之间重新分配资源而化解。
- 定义:如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件,那么,该进程集合就是死锁的。
- (资源)死锁的四个必要条件:
- 互斥条件:每个资源要么已经分配给了一个进程,要么就是可用的。
- 占有和等待条件:已经得到了某个资源的进程可以再请求新的资源。
- 不可抢占条件:已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放。
- 环路等待条件:死锁发生时,系统中一定有由两个或两个以上的进程组成的一条环路,该环路中的每个进程都在等待着下一个进程所占有的资源。
- 四种处理死锁的策略:
- 忽略该问题:也许你忽略它,它也会忽略你。
- 检测死锁并恢复:让死锁发生,检测它们是否发生,一旦发生死锁,采取行动解决。
- 仔细对资源进行分配,动态地避免死锁。
- 通过破坏引起死锁的四个必要条件之一,防止死锁的产生。
- 视频点播基础设施包括三个基本组件:一个或多个视频服务器、一个分布式网络、每个房间对信号解码的机顶盒。
- 录像机(Video Cassette Recorder, VCR)。
- 分布式系统面对不同硬件和操作系统实现某种统一性的途径是,在操作系统的顶部添加一层软件。这层软件成为——中间件(middleware)。
- Internet电子邮件地址格式:用户名@DNS主机名。
- Web的底层范式:web是一个由文档构成的巨大有向图。
- 基于文件系统的中间件:
- 传输模式:
- 上传/下载模式:在本地读写完文件,再传给服务器。(缺点是并发时文件一致性问题)
- 远程访问模式:客户端跟服务器一点一点交互。
- 数字签名:
- 数字证书:
MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461
这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。如果在以后传播这个文件的过程中,无论文件的内容发生了任何形式的改变(包括人为修改或者下载过程中线路不稳定引起的传输错误等),只要你对这个文件重新计算MD5时就会发现信息摘要不相同,由此可以确定你得到的只是一个不正确的文件。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的 "抵赖",这就是所谓的数字签名应用。
MD5还广泛用于加密和解密技术上。比如在UNIX系统中用户的密码就是以MD5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。
正是因为这个原因,现在被黑客使用最多的一种破译密码的方法就是一种被称为"跑字典"的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5 值,然后再用目标的MD5值在这个字典中检索。我们假设密码的最大长度为8位字节(8 Bytes),同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是P(62,1)+P(62,2)….+P (62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘阵列,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。这种加密技术被广泛的应用于UNIX系统中,这也是为什么UNIX系统比一般操作系统更为坚固一个重要原因。
认真学习系列:操作系统——视频+读书笔记相关推荐
- 《自己动手写操作系统》读书笔记——初识保护模式
<自己动手写操作系统>读书笔记--初识保护模式 http://www.cnblogs.com/pang123hui/archive/2010/11/27/2309930.html 书本第三 ...
- 《学习之道》读书笔记
<学习之道>读书笔记 不要太过于专注,适当的时候要放松,启用发散思维,会让更多的想法出现来帮助解决问题. 爱迪生遇到棘手的问题,会拿着球,躺着睡一会,当睡着的时候球会从手中脱落,掉到预先准 ...
- 强化学习(RLAI)读书笔记第十六章Applications and Case Studies(不含alphago)
强化学习(RLAI)读书笔记第十六章Applications and Case Studies(不含alphago) 16.1 TD-Gammon 16.2 Samuel's Checkers Pla ...
- 强化学习(RLAI)读书笔记第十六章Applications and Case Studies(alphago)
强化学习(RLAI)读书笔记第十六章Applications and Case Studies(alphago) 16.6 Mastering the Game of Go 16.6.1 AlphaG ...
- 《Ubuntu Linux操作系统》读书笔记
文|Seraph 一.Ubuntu安装与基本使用 Linux是一种起源于UNIX,以可移植操作系统接口(Portable Operating System Interface, POSIX)标准为框架 ...
- 2021微信小程序云开发学习路线【视频加笔记】
从零开始学习小程序开发,小程序云开发的学习资料和路线!!想入门小程序请看下面内容~ 包括:云数据库,云函数,云托管,小程序云开发和服务器开发的项目实战,零基础学习JavaScript,小程序语法,cm ...
- 【“计算机科学与技术”专业小白成长系列】SICP 读书笔记: The Elements of Programming
SICP 读书笔记: The Elements of Programming 编程元素 强大的编程语言不仅仅是一种指示计算机执行任务的方法.语言也可以作为一个框架,我们可以在其中组织关于过程的想法.当 ...
- VS 2008的JavaScript代码提示功能 (学习老赵视频的笔记)
学习老赵的视频ASP.NET AJAX深入浅出系列课程(19):VS 2008的JavaScript代码提示功能(Level 200) 自己做的demo,记下来以便查阅!感谢赵老师! 原来js还可以像 ...
- 《Python深度学习》第一部分读书笔记
第1章 什么是深度学习 文章目录 第1章 什么是深度学习 1.1 人工智能.机器学习与深度学习 1.1.1 人工智能 1.1.2 机器学习 1.1.3 从数据中学习表示 1.1.4 深度学习的深度 1 ...
最新文章
- java获取接口数据类型_java中调用第三方接口获取数据的方式
- 显示/隐藏Mac系统中所有的隐藏文件
- OpenStack精华问答 | OpenStack都有哪些基础服务?
- CSS中背景颜色、背景图片、渐变色、背景定位、精灵图(雪碧图)介绍
- 2020中国数字营销人才发展报告
- 数字化转型难?那是你没搞懂这5个关键点
- Angr Unsat_corn 使用之坑
- 百度App网络深度优化系列(一):DNS优化
- python自动化办公-用 Python 自动化办公能做到哪些有趣或有用的事情?
- 渗透测试技术----工具使用(二)--Nessus工具下载及使用(安装在Kali上)
- 直流电机开发笔记3—PI调节器的数字实现(代码/仿真)
- 高清美图和GIF动图素材网站推荐,拿走不谢!
- 如何使用SX1278的中断控制发送和接收
- 西门子S7200plc通信不上实际问题和解决方法
- Landscape Photography: Winter 风景摄影:冬天 Lynda课程中文字幕
- SSD学习系列(二)LMDB概念以及将VOC数据集转换成LMDB格式
- 课程1 谈论你喜欢的音乐
- SAP HANA HDBTable定义table语法
- 微信小程序ssm学生作业管理系统
- 【美股】美股中的几种分析形态