1.操作系统概述

1.操作系统的概念、功能

操作系统是指①控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配(操作系统是系统资源的管理者)②以提供给用户和其他软件方便的接口和环境(向上层提供方便易用的服务)③它是计算机系统中最基本的系统软件(是最接近硬件的一层软件)
在这里插入图片描述

1.1作为系统资源的管理者

操作系统提供处理机管理、存储器管理、文件管理、设备管理的功能

1.2向上层提供方便易用的服务

1.2.1给普通用户使用

1.2.1.1联机命令接口

联机命令接口=交互式命令接口
特点:用户说一句,系统跟着做一句
例子:命令解释器,shell(命令解析器)

1.2.1.2脱机命令接口

脱机命令接口=批处理命令接口
特点:用户说一堆系统跟着做一堆

1.2.2给软件/程序员使用

1.2.2.1程序接口

程序接口:可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
在这里插入图片描述

1.2.2.2系统调用

系统调用等于广义指令,系统调用类似于函数调用,是应用程序请求操作系统服务的唯一方式

1.3最接近硬件的一层软件

操作系统实现了对硬件机器的拓展
没有任何软件支持的计算机成为裸机
把覆盖了软件的机器称为扩充机器,又称之为虚拟机

2.操作系统的四个特征

并发,共享,虚拟,异步,其中并发和共享是最基本的特征,二者互为存在条件

2.1并发

并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
并行:指两个或多个事件在同一时刻同时发生。
操作系统的并发性是指计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。
单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行
多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行

2.2共享

共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

2.2.1互斥共享方式

系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源

2.2.2同时共享方式

系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的〈即分时共享)

2.3虚拟

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。

2.3.1空分复用技术

如虚拟存储器技术

2.3.2时分复用技术

如虚拟处理器

2.4异步

异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。

3.操作系统的发展与分类

3.1手工操作阶段

在这里插入图片描述
主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低

3.2批处理阶段

引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出
在这里插入图片描述

3.2.1单道批处理系统

在这里插入图片描述
基本特征:顺序性
主要优点:缓解了一定程度的人机速度矛盾, 资源利用率有所提升。
主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低

3.2.2多道批处理系统

在这里插入图片描述
基本特征:制约性、间断性、共享性

主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
主要缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行。eg:无法调试程序/无法在程序运行过程中输入一些参数)

3.3分时操作系统

分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
在这里插入图片描述
主要优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用 户对计算机的操作相互独立,感受不到别人的存在。
主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/ 作业服务一个时间片,不区分任务的紧急性。

3.4实时操作系统

主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。 在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事 件。实时操作系统的主要特点是及时性可靠性

3.4.1硬实时系统

必须在绝对严格的规定时间内完成处理,如:导弹控制系统、自动驾驶系统

3.4.2软实时系统

能接受偶尔违反时间规定,如:12306火车订票系统

3.5其他几种操作系统

网络操作系统:是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。(如:Windows NT 就是 一种典型的网络操作系统,网站服务器就可以使用)
分布式操作系统:主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。
个人计算机操作系统:如 Windows XP、MacOS,方便个人使用。

★4.操作系统的运行机制

4.1内核程序和应用程序

应用程序就是我们普通程序员写的程序
内核程序就是实现操作系统的程序
由很多内核程序组成了操作系统内核,或简称内核(Kernel), 内核是操作系统最重要最核心的部分,也是最接近硬件的部分

4.2特权指令和非特权指令

特权指令是指计算机中不允许用户直接使用的指令,只允许操作系统内核使用。
如:I/O指令、置中断指令,存取用于内存保护的寄存器、送程序状态字到程序状态字寄存器、清内存、置时钟、分配系统资源、修改虚存的段表和页表,修改用户的访问权限等的指令
非特权指令是指计算机中允许用户直接使用的指令

4.3用户态和内核态

4.3.1概念

内核态又称核心态管态。处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
用户态又称目态。处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令

CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”

4.3.2内核态、用户态的切换

内核态→用户态:执行一条特权指令―-修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权

用户态→内核态:由中断引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权

★5.中断和异常

5.1中断的作用

中断会使CPU由用 户态变为内核态,使操作系统重新夺回对CPU的控制权。
“中断”是让操作系统内核夺回CPU使用权的唯一途径。
如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序

5.2内中断(异常)

与当前执行的指令有关, 中断信号来源于CPU内部

5.2.1陷阱、陷入(trap)

由陷入指令引发,是应用程序故意引发的

例子 1:有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令(陷入指令不是特权指令,因为运行在用户态。执行“陷入指令”,意味着应用程序主 动地将CPU控制权还给操作系统内核。 “系统调用”就是通过陷入指令完成的),该指令会引发一个内部中断信号

5.2.2故障(fault)

由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把 CPU使用权还给应用程序,让它继续执行下去。

例子1:缺页故障

5.2.3终止(zbort)

由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序, 而是直接终止该应用程序。

例子 1:试图在用户态下执行特权指令
例子 2:执行除法指令时发现除数为 0

5.3外中断(中断)

与当前执行的指令无关, 中断信号来源于CPU外部
例子 1:时钟中断——由时钟部件发来的中断信号(时钟部件每隔一个时间 片(如 50ms)会给CPU发送一个时钟中断信号)
例子2:I/O中断——由输入/输出设备发来的中断信号

5.4中断机制的基本原理

不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号 的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
在这里插入图片描述

★6.系统调用

“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用 程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务

6.1系统调用与库函数的区别

在这里插入图片描述

6.2什么功能要用到系统调用?

应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提 出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
在这里插入图片描述

6.3系统调用的过程

在这里插入图片描述
传递系统调用参数 → 执行陷入指令(用户态)→ 执行相应的内请求核程序处理系统调用(核心态)→返回应用程序
注意:

  1. 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态
  2. 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行

7.操作系统的体系结构(了解)

在这里插入图片描述
操作系统内核需要运行在内核态
操作系统的非内核功能运行在用户态
现在,应用程序想要请求操作系统的服务,这个服务的处理同时涉及到进程管理、存储 管理、设备管理 ,变态状况如下:
在这里插入图片描述
注意:变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能
微内核优点:添加系统服务时,不必修改内核;使系统更可靠

8.补充

1.计算机开机后,操作系统最终被加载到RAM
2.中断技术使得多道批处理系统和I/O设备可与CPU 并行工作
3.在IBM-PC(个人计算机)中,操作系统称为微型计算机操作系统
4.单核CPU也能支持多任务操作系统(能够支持多个进程同时运行)
5.通用操作系统:具有多种类型操作特征的操作系统。可以同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。
6.用户程序设计时,使用系统调用命令,该命令经过编译后,形成若干参数和陷入( trap )指令
7.计算机通过硬件中断机制完成由用户态到核心态的转换。
★8.在用户态发生:中断(包括缺页、I/O),系统调用(广义指令)
      在核心态发生:进程调度
      在用户态执行:命令解释器
      核心态下执行:中断(包括缺页、I/O),系统调用(广义指令),进程调度,置时钟指令

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【内容简介】 汇编语言是各种CPU所提供的机器指令的助记符的集合,人们可以用汇编语言直接控制硬件系统进行工作。汇编语言是很多相课程(如:数据结构、操作系统、微机原理等)的重要基础。为了更好地引导、帮助读者学习汇编语言,作者以循序渐进的方式精心创作了这本书。本书具有如下特点:采用全新的结构对课程的内容进行了组织,对知识进行最小化分割,为读者构造了循序渐进的学习线索;在深入本质的层面上对汇编语言进行讲解;对键环节进行深入的剖析。 本书可用作大学计算机专业本科生的汇编教材及希望深入学习计算机科学的读者的自学教材。 【目录信息】 第1章基础知识 1.1 机器语言 1.2 汇编语言的产生 1.3 汇编语言的组成 1.4 存储器 1.5 指令和数据 1.6 存储单元 1.7 CPU对存储器的读写 1.8 地址总线 1.9 数据总线 1.10 控制总线 1.11 内存地址空间(概述) 1.12 主板 1.13 接口卡 1.14 各类存储器芯片 1.15 内存地址空间 第2章寄存器(CPU工作原理) 2.1 通用寄存器 2.2 字在寄存器中的存储 2.3 几条汇编指令 2.4 物理地址 2.5 16位结构的CPU 2.6 8086CPU给出物理地址的方法 2.7 "段地址x16+偏移地址=物理地址"的本质含义 2.8 段的概念 2.9 段寄存器 2.10 CS和IP 2.11 修改CS.IP的指令 2.12 代码段 实验1 查看CPU和内存,用机器指令和汇编指令编程 第3章寄存器(内存访问) 3.1 内存中字的存储 3.2 DS和[address] 3.3 字的传送 3.4 mov.add.sub指令 3.5 数据段 3.6 栈 3.7 CPU提供的栈机制 3.8 栈顶超界的问题 3.9 push.pop指令 3.10 栈段 实验2 用机器指令和汇编指令编程 第4章第1个程序 4.1 一个源程序从写出到执行的过程 4.2 源程序 4.3 编辑源程序 4.4 编译 4.5 连接 4.6 以简化的方式进行编译和连接 4.7 1.exe的执行 4.8 可执行文件中的程序装入内存并运行的原理 4.9 程序执行过程的跟踪 实验3 编程.编译.连接.跟踪 第5章[bx]和loop指令 5.1 [bx] 5.2 Loop指令 5.3 在Debug中跟踪用loop指令实现的循环程序 5.4 Debug和汇编编译器Masm对指令的不同处理 5.5 loop和[bx]的联合应用 5.6 段前缀 5.7 一段安全的空间 5.8 段前缀的使用 实验4 [bx]和loop的使用 第6章包含多个段的程序 6.1 在代码段中使用数据 6.2 在代码段中使用栈 6.3 将数据.c代码.c栈放入不同的段 实验5 编写,调试具有多个段的程序 第7章更灵活的定位内存地址的方法 7.1 and和or指令 7.2 于ASCII码 7.3 以字符形式给出的数据 7.4 大小写转换的问题 7.5 [bx+idata] 7.6 用[bx+idata]的方式进行数组的处理 7.7 SI和DI 7.8 [bx+si]和[bx+di] 7.9 [bx+si+idata]和[bx+di+idata] 7.10 不同的寻址方式的灵活应用 实验6 实践课程中的程序 第8章数据处理的两个基本问题 8.1 bx,si,di,bp 8.2 机器指令处理的数据所在位置 8.3 汇编语言中数据位置的表达 8.4 寻址方式 8.5 指令要处理的数据有多长? 8.6 寻址方式的综合应用 8.7 div指令 8.8 伪指令dd 8.9 dup 实验7寻址方式在结构化数据访问中的应用 第9章转移指令的原理 9.1 操作符offset 9.2 jmp指令 9.3 依据位移进行转移的jmp指令 9.4 转移的目的地址在指令中的jmp指令 9.5 转移地址在寄存器中的jmp指令 9.6 转移地址在内存中的jmp指令 9.7 jcxz指令 9.8 loop指令 9.9 根据位移进行转移的意义 9.10 编译器对转移位移超界的检测 实验8 分析一个奇怪的程序 实验9 根据材料编程 第10章call和ret指令 10.1 ret和retf 10.2 call指令 10.3 依据位移进行转移的call指令 10.4 转移的目的地址在指令中的call指令 10.5 转移地址在寄存器中的call指令 10.6 转移地址在内存中的call指令 10.7 all和ret的配合使用 10.8 mul指令 10.9 模块化程序设计 10.10 参数和结果传递的问题 10.11 批量数据的传递 10.12 寄存器冲突的问题 实验10 编写子程序 课程设计1 第11章标志寄存器 11.1 ZF标志 11.2 PF标志 11.3 SF标志 11.4 CF标志 11.5 OF标志 11.6 adc指令 11.7 sbb指令 11.8 cmp指令 11.9 检测比较结果的条件转移指令 11.10 DF标志和串传送指令 11.11 pushf和popf 11.12 标志寄存器在Debug中的表示 实验11 编写子程序 第12章内中断 12.1 内中断的产生 12.2 中断处理程序 12.3 中断向量表 12.4 中断过程 12.5 中断处理程序 12.6 除法错误中断的处理 12.7 编程处理0号中断 12.8 安装 12.9 do0 12.10 设置中断向量 12.11 单步中断 12.12 响应中断的特殊情况 实验12 编写0号中断的处理程序 第13章int指令 13.1 int指令 13.2 编写供应用程序调用的中断例程 13.3 对int iret和栈的深入理解 13.4 BIOS和DOS所提供的中断例程 13.5 BIOS和DOS中断例程的安装过程 13.6 BIOS中断例程应用 13.7 DOS中断例程应用 实验13 编写应用中断例程 第14章端口 14.1 端口的读写 14.2 CMOS RAM芯片 14.3 shl和shr指令 14.4 CMOS RAM中存储的时间信息 实验14访问CMOS 第15章外中断 15.1 接口芯片和端口 15.2 外中断信息 15.3 PC机键盘的处理过程 15.4 编写int 9中断例程 15.5 安装新的int 9中断例程 实验15 安装新的int 9中断例程指令系统总结 第16章直接定址表 16.1 描述了单元长度的标号 16.2 在其他段中使用数据标号 16.3 直接定址表 16.4 程序入口地址的直接定址表 实验16 编写包含多个功能子程序的中断例程 第17章使用BIOS进行键盘输入和磁盘读写 17.1 int 9中断例程对键盘输入的处理 17.2 使用int 16h中断例程读取键盘缓冲区 17.3 字符串的输入 17.4 应用int 13h中断例程对磁盘进行读写 实验17 编写包含多个功能子程序的中断例程 课程设计2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值