概述
- 操作系统所做的工作
- 用户如何告诉os执行helloworld程序
也就是启动程序- 命令行
- 双击图标
和吕行军老师Java课设提到的一样,在桌面上双击图标就可以运行
- os找到程序的相关信息
- if是可执行文件
可执行文件的格式,Windows下可执行文件的格式是PE;Linux下可执行文件的格式是ELF- 通过程序首部信息,确定代码和数据在可执行文件中的位置
- 计算对应的磁盘块地址
- if不是可执行文件
- os会报错
- if是可执行文件
- 创建一个新的进程
为什么要创建进程?- 将程序的可执行文件映射到该进程结构
- 由该进程执行程序
- 调度程序选中该程序
调度程序是什么?- 为程序设置CPU上下文环境
程序必须先读入内存,CPU采取执行,这又和组原联系起来了 - 跳到程序开始处
- 执行程序的第一条指令,发生缺页异常
- 原本是CPU去执行的,但硬件机制捕获到缺页异常,控制权转移到os上
这就解释了CPU执行用户程序,程序仍不断请求os服务 - 若程序很大,则会产生多次缺页异常(一页内存不够)
- 原本是CPU去执行的,但硬件机制捕获到缺页异常,控制权转移到os上
- os分配一页物理内存,并将代码从磁盘读入内存,然后继续执行程序
- 程序执行puts函数(系统调用)
什么是系统调用 - 找到要将字符串送往的显示设备,通常设备是由一个进程控制的,所以os将要写的字符串送给该进程
- 控制设备的进程告诉设备的窗口系统它要显示字符串,窗口系统确定这是一个合法的操作,然后将字符串转换成像素,将像素写入设备的存储映像区
- 视频硬件将像素转换成显示器可接收的一组控制/数据信号
- 显示器解释信号,激发液晶屏
- 执行程序的第一条指令,发生缺页异常
- 为程序设置CPU上下文环境
- 用户如何告诉os执行helloworld程序
- os定义
- os是计算机系统中的一个系统软件,是一些程序模块的集合
- 解读几个关键词
- 有效
- 系统效率,资源利用率
- 希望CPU不空闲,充分利用CPU(进程在CPU中进行)
- 内存、磁盘充分利用空间
- 合理
- 各种软硬件资源的管理是否合理
- 不合理会产生的问题
- 方便使用接口
- 用户界面
- 命令行
- 编程接口
- 开发软件
- 用户界面
- 有效
- os作用---和特点一起记
- 资源的管理者(有效性)
- 硬件资源
- CPU,内存,设备(I/O设备、磁盘、时钟、网络卡)
- 软件资源
- 磁盘上的文件
- 怎样管理资源
- 跟踪记录资源的使用情况
- 用到了数据结构
- 哪些资源空闲,分配给谁使用
- 确定资源分配策略
- 用到了算法
- 静态分配策略
- 分配好了就不需要新的资源
- 容易造成资源浪费,拿着资源别的就不能用了
- 动态分配策略
- 实施资源的分配和回收
- 提高资源利用率
- 保护资源的使用
- 协调多个进程对资源请求的冲突
- 跟踪记录资源的使用情况
- 硬件资源
- 向用户提供各种服务(方便使用)
- 对硬件机器的扩展
- os是硬件之上的第一层软件,屏蔽了硬件的细节
- 在应用程序与硬件之间建立了一个等价的扩展机器(虚拟机)
- 对硬件抽象,提高可移植性
- 比底层硬件更容易编程
-
装修
- 资源的管理者(有效性)
- 操作系统的主要特征
- 并发(concurrency)
- 区分并行(parallel)
- 马拉松,同时进行,叫做并发
- 110m跨栏,每个人都有自己的跑道,叫做并行
- 定义:多指不同程序同时在多个硬件部件上执行
- 定义:指处理多个同时性活动的能力
- 会引发很多问题---活动切换、保护、相互依赖的活动间的同步
- 宏观:这些程序在同时执行
三位老师讲课时都提到过这一点 - 微观:任何时刻只有一个程序真正在执行,在CPU上是轮流执行
- 区分并行(parallel)
- 共享(sharing)
- 定义;操作系统与多个用户的程序共同使用计算机系统中的资源(共享有限的系统资源---os分配)
- 互斥共享:打印机
- 同时共享:可重入代码、磁盘文件
- 问题:资源分配何以最优化,如何保护资源
- 虚拟(Virtual)
- 一个物理实体映射为若干个对应的逻辑实体---分时或分空间,可以提高资源利用率
- 一个物理实体映射为若干个对应的逻辑实体---分时或分空间,可以提高资源利用率
- 随机
- 操作系统必须随时对以不可预测的次序发生的事件进行响应并处理
- 操作系统必须随时对以不可预测的次序发生的事件进行响应并处理
- 并发(concurrency)
- 典型os的架构
- Windows架构
-
-
- 用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。
- 内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。
- 为什么要有用户态和内核态?
- 由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 -- 用户态和内核态。
- 用户态与内核态的切换
- 系统调用
- 是用户态进程主动要求切换到内核态的一种方式
- 用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如fork()实际上就是执行了一个创建新进程的系统调用。
- 系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现
- 异常
- 当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常
- 触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常
- 外围设备的中断
- 当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序
- 如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。
- 具体解释
- 所有用户程序都是运行在用户态的, 但是有时候程序确实需要做一些内核态的事情, 例如从硬盘读取数据, 或者从键盘获取输入等. 而唯一可以做这些事情的就是操作系统, 所以此时程序就需要先操作系统请求以程序的名义来执行这些操作
- 这时需要一个这样的机制: 用户态程序切换到内核态, 但是不能控制在内核态中执行的指令
- 这种机制叫系统调用, 在CPU中的实现称之为陷阱指令(Trap Instruction)
- 工作流程
- 用户态程序将一些数据值放在寄存器中, 或者使用参数创建一个堆栈(stack frame), 以此表明需要操作系统提供的服务.
- 用户态程序执行陷阱指令
- CPU切换到内核态, 并跳到位于内存指定位置的指令, 这些指令是操作系统的一部分, 他们具有内存保护, 不可被用户态程序访问
- 这些指令称之为陷阱(trap)或者系统调用处理器(system call handler). 他们会读取程序放入内存的数据参数, 并执行程序请求的服务
- 系统调用完成后, 操作系统会重置CPU为用户态并返回系统调用的结果
- 系统调用
-
- Unix架构
- Linux架构
- Android架构
- Windows架构
- os分类
- 批处理操作系统
- 工作方式
- 用户将作业交给系统操作员
- 系统操作员将许多用户的作业组成一批作业,输入到计算机系统中,在系统中形成一个自动转接的连续的作业流
- 启动操作系统
- 系统自动、依次执行每个作业
- 由操作员将作业结果交给用户
- 特点
- 用户不能干预自己作业的执行,只能等待结果
- 效果
- 提高资源利用率,增加作业处理吞吐量
吞吐量是指在单位时间内中央处理器(CPU)从存储设备读取->处理->存储信息的量。吞吐量也有很多分类。
- 提高资源利用率,增加作业处理吞吐量
- 批处理系统中的作业包括
- 用户程序
- 数据
- 作业说明书(用作业控制语言编写)
- 问题
- 慢速的输入输出处理直接由主机来完成,输入输出时,CPU处于等待状态
- 解决方案
- 卫星机(增加计算机)
- 早期批处理系统
- 单道批处理系统(simple batch processing, uni-programming):一次处理一个作业
- 多道批处理系统(multiprogramming system)
- spooling
- 批处理系统的实现通常采用的技术
- 可将一台物理I/O设备虚拟为多台逻辑I/O设备,同样允许多个用户共享一台物理I/O设备(生活中最常见的就是多台电脑共享同一个打印机)
- Simultaneous Peripheral Operation On-Line
- 同时的外围设备联机操作,又称假脱机技术
- 为了缓和CPU的高速性与I/O设备低速性之间的矛盾而引入了脱机输入/输出技术。该技术是利用专门的外围控制机,将低速I/O设备上的数据传送到高速磁盘上
- 工作方式
- 分时系统(Time-sharing system)
- 终端:键盘、显示器
- 时间片(time slice)
- 操作系统将CPU的时间分成若干个片段,成为时间片
- 操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片
- 其特点是利用人的错觉,使用户感觉不到计算机在服务他人
- 目的:及时响应(依据响应时间)
- 响应时间
- 从终端发出命令到系统给予回答所经历的时间
- 通用操作系统
- 分时+批处理
- 原则:分时优先
- “前台”:需要频繁交互的作业
- “后台”:时间性要求不强的作业
- 实时操作系统
- 是使计算机能及时响应外部事件的请求,在规定的严格时间内完成对该事件的处理,并控制左右实时设备和任务协调一致地工作
- 第一类:实时过程控制
- 航空
- 军事控制
- 第二类:实时通信处理
- 银行
- 订票
- 股市行情
- 目的:对外部请求在严格时间范围内作出响应
- 个人计算机操作系统
- 计算机在某一时间内为单用户服务
- 界面友好
- 网络操作系统
- 在各种计算机os上,按网络体系结构协议标准开发的软件
- 资源共享
- 分布式操作系统
- 处理分布在不同的计算机上
- 是一个统一的操作系统,允许若干个计算机可相互协作共同完成一项任务
- 嵌入式操作系统
- 完成特定功能的软硬件系统,是大设备、装置中的一部分
- 通常工作在反应式或对处理时间有较严格要求环境中
- 智能卡操作系统
以上是传统的os分类,智能卡是tanenbaum分类的一种。有些智能卡是面向Java的。- 智能卡:一种包含有一块CPU芯片的卡片
- 非常严格的运行耗能和存储空间的限制
- 有些智能卡只有单项功能,如电子支付
- 是专用的os
- 批处理操作系统