OS-101
- 从什么角度看os。--定义
用户角度操作界面操作方式,用户环境。开发者,虚拟机,给予的资源和函数调用方式。资源管理者。作业组织者。
目标,方便性,高效性。资源稀缺。
- 发展
- 单批处理:内存中一个任务(作业) 监控系统--人工取代 问题:slow performance。 cpu的发展solution:多道程序批处理
- 多批:cpu切换--作业调度的出现 早期多任务雏形,仍是操作员和程序员,无人机交互不灵活。
对os提出要求:io cpu的使用都有多个用户(是否可同时),多个设备资源分配--冲突问题;内存管理(不同机器环境不同方式);cpu调度(考虑代价等问题)。
工作示例图(时间)。人机交互:操作员输入数据时切换时死的。关机重启重新排序来做。
3. 解决:分时系统(多任务系统)。作业装到内存中可能和外存切换(swap in、swap out),虚拟内存机制--本质目的:充分利用内存资源。直接的人机交互。用户访问数据非常方便。
dos是单任务,考虑市场成本。多任务在商业机有。命令行操作,无任务切换。
pc 键盘,显示器等配备的外设。用户界面等等考虑。
- 并行系统:紧耦合和松耦合两种。多核或多个主机。
- 紧耦合:多处理器,多核。如何和内存进行沟通--出现并行系统。增加吞吐量,经济,可靠度增加-不依赖于某一运算单元。
紧耦合分为对称和非对称。主处理器和协处理器(不同特征处理器做专属工作)的分别。
2. 松耦合(分布式系统、网络系统)-云计算。加入即是组织成员,脱离仍能工作。客户端服务器端通过网络进行沟通。 安全性。集群系统。
3. 实时系统。及时反馈、快速。硬实时(只考虑实时性,达不到实时性要求则系统崩溃,军火导弹实时计算--微内核)和软实时(进程切换,响应时间等问题,用户体验)。
- 发展规律
操作系统可裁剪可定制,可大可小。
作业-任务-进程。swap交换--内存扩展不同于切换。
- 体系结构:硬件:cpu 内存 外设。
- cpu 和外设(端口地址)通过系统总线(数据、地址总线、控制总线(进出忙闲读写))、设备控制器交流。外设控制器里的缓存当成local buffer。cpu管理外设的方式,典型为中断。
- cpu和内存直接通过总线打交道。cpu中有指令队列,从内存取指令放入指令队列。
- 外设:同步方式,异步方式。
- 硬件分级,硬件保护,四级,一般只用两级管态--内核态(0和3)(设备驱动,中断处理,硬件),用户态。用户发出对内核空间数据请求,用户是否等待。hardware protection(硬件层面讲保护,ch3中软件层面进行保护)
- 单任务无此问题。多程序,要保证过程之间不能相互干扰。从系统层面,系统软件用户软件之间不能相互干扰。且用户程序是否合法可信,病毒软件。能够健壮稳定可靠地运行需要保护机制---1两种模式:系统模式,用户模式。2io保护(读写?)3内存保护(各个程序有自己的地址空间 文件空间)4cpu保护(权限)
-
使用者复杂,需要对程序可信度判断。03,12没用。mode bit:0monitor 1user,两种状态切换图,privileged instructions、切换的权限只能是monitor。否则通过中断或陷进fault报错。
-
计算机网络的端口概念不同于这里的端口--io端口,一个device一套,端口地址就相当于device里面的register位置。
-
io是privileged instructions。普通用户访问io如何调用--通过系统调用的方式来访问再把数据传送给你?基址寄存器和长度寄存器--硬件资源提供,简单的内存管理。作业进行时cpu都要判断地址是否在范围内,越界则报错。
-
内存的使用方式越复杂则对硬件机制要求越高。
-
timer:每个任务什么时候开始用cpu可以用多久,超出时间释放资源--时间片概念。否则如果死循环则cpu没有工作量了。
- 和外设打交道:中断
- 两种I/O方法:同步/异步(关联度的时间节奏上,相互依赖与否)。系统级指令(特权级指令)/用户指令。
- 用户程序请求访问,通过操作系统来访问。同步时(资源利用率低,处理快),用户程序在wait。异步时,不等待该干嘛干嘛,之后再处理(有切换成本,处理复杂,增加并发度【等待队列,设备状态表,,】)。
- 现代操作系统的进程管理里多个线程,所以可以线程级切换。现代多任务多线程的多用异步。
cpu与外设:并发。集群,并行。分布式与并行所追求不同。
- I/O技术
程序i/o,中断(现代os,重点),DMA(直接内存访问),Channel
- 程序i/o,也叫轮询:实现简单方便,占用cpu时间(很多时候白白查看空轮询,实时性取决于轮询时间,现在基本不用,除非数据特别有规律和定时)--有专门io访问指令,定期查看。x86专门输入输出指令读取端口。(arm?)pad无特殊专门io指令(精简指令集),简单物美价廉。
- 中断:解决程序io问题。处理事件突发性。
软中断:中断指令,中断号,不同号不同处理程序。中断处理程序驻留在内存中,在内存中位置:中断程序的入口地址叫中断向量。中断号对应中断向量,将号排列成表,叫中断向量表。--8086的方式。0-ff最多256个中断向量,在内存最低地址空间,访问很快,加快响应。
在中断响应过程(尽量快)(还没调出中断处理程序)中不允许中断,然后再把中断打开,此时,中断处理程序和用户程序在多任务系统中并行执行。中断响应和中断处理是两个过程。
中断响应是?原子操作:不能再分。除0操作,特殊中断处理。
不同机制和系统对中断处理不同,因为cpu和什么什么在发展。中断处理器--硬中断。
cpu里脑细胞最重要:寄存器,一套但多个,越多则脑细胞越多。程序从S转到T时,记录下上下文。寄存器越多,位越多cpu越好。位多则寄存器好好在哪??
中断处理上下文切换,单核单处理器则当前程序停下。上下文切换保存当前状态:pc程序计数器(mostimportant),一套各个寄存器的值都要记录--保存到程序的栈里,即当前现场压栈。内存里:程序段和数据段:动态区和静态区。堆栈。初始化和未初始化。,,??
3. DMA:刚切换完又有中断请求,中断机制效率仍旧不高。DMA处理器:中断来了把剩下的工作直接交给DMA处理器,无论是io还是内存访问都交给DMA控制器。cpu解放数据传送工作。
4. Channel:比DMA更高级,相当于协处理器。DMA只是控制器。
- 存储为什么结构化?:工作分级。cpu主要做运算。系统设计时需要考虑的因素。
- 01位存储,读取速度speed;cpu设计制造的复杂度导致的成本;存储容量;volatility易失性,内存(靠电)断电数据不存在、外存(磁性)不易失。根据这些决定设计存储。
- 内部总线,外部总线,放在cpu内则通过内部总线更快。
- cache:在cpu内,几级则增加复杂度,理论不变。寄存器不够,为了比访问memory加快一级速度。这是种思想,内存相当于磁盘的cache。访问磁盘需要调入内存。这个机制很多地方用到:123处。命中率问题??系统结构讲。a<--b中间有个cache,因为a快b慢,程序有一定规律,把可能要用的代码放到cache,a直接从cache得到,得到叫做命中。不命中的代价等等。但整体提高的系统性能,平衡了ab速度差需求问题。
- 寄存器的使用os无法干预。外存在硬件层面属于外设,软件层面属于文件系统。mainmemory是唯一一个能cpu访问的比较大的存储体。
- 从cpu角度,会把cache看成内存。cache和内存?管理是系统结构管辖范围(怎么映射??),os站在系统结构上层。
程序对内存的需求在不断增加,因为功能越来越多。软件发展快于硬。外存以T,内存仍多数8G。save将内存中编辑的数据转入磁盘,断电无所谓。内存是灵活的线下,内存管理课时。从工作来说计算机只需要cpu和内存,无需人机交互或永久保存什么。
辅助存储器是对内存的扩展以来永久存储数据。没失磁啊什么,也有寿命。在外设讲。如何驱动磁盘?磁头磁臂扇区,,
- 数据一致性问题:对值更新一直要到magnetic disk的值更新完。数据是一级一级拷贝到不同存储级别。回写时出错则非一致。回写方式不同(只更新cache级,结束后再更新disk或同时更新完),一致性和速度的平衡。数据一致性问题,也属于系统结构问题。
- cache和buffer机制一样。
From satrys,
Kristen wang