此为自己学习课程的笔记,供自己复习用。
操作系统基础概念
文章目录
前言
操作系统:是指控制和管理整个计算机系统的硬件和软件资源,并合理的组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。
注意:程序执行前需要将该程序放到内存中,才能被CPU处理。 程序执行的过程就是CPU执行指令的过程
一、操作系统的功能
1、操作系统作为系统资源的管理者,提供以下四种管理功能:
(1)处理机管理
(2)存储器管理
(3)文件管理
(4)设备管理
2、操作系统向上层提供了方便易用的服务,分为直接给用户使用的(GUI图形化界面+命令接口)和给软件/程序员使用的。
(1)直接给用户使用的命令接口包括:
- 联机命令接口(交互式命令接口):用户说一句,系统做一句
- 脱机命令接口(批处理命令接口):用户说一堆,系统做一堆
(2)给软件/程序员使用的接口为程序接口,即一系列的系统调用。
3、操作系统可以实现对硬件机器的拓展,将硬件组合起来,并配合应用。
二、操作系统的四个特征
1.并发
并发:指两个或多个事件在同一时间间隔内发生。宏观上同时发生,微观上交替发生。
并行:指两个或多个事件在同一时刻同时发生。
注意:
单核CPU
同一时刻只能执行一个程序
,各个程序只能并发
地执行多核CPU
同一时刻可以同时执行多个程序
,多个程序可以并行
地执行
2.共享
即资源共享,指系统中的资源可供内存中多个并发执行的进程共同使用。
有两种资源共享的方式:
- 互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。
- 同时共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”(并发)对它们进行访问。
并发和共享互为存在条件,没有并发和共享就没有虚拟和异步。
3.虚拟
是指把一个物理上的实体变若干个逻辑上的对应物。
虚拟技术包括如下两种:
- 空分复用技术(如虚拟存储器技术)
- 时分复用技术(如虚拟处理器):微观上处理机在各个微小的时间段内交替着各个进程服务
4.异步
是指在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
三、操作系统的发展和分类
- 手工操作阶段
人工部分占据了很长一段时间,而计算机处理的很快,用时很短。 - 批处理阶段
单道批处理系统:引入了脱机输入输出技术,虽然缓解了人机速度的矛盾,但是资源利用率仍很低
多道批处理系统:可以实现多道程序并发执行,提升了资源利用率,但是没有人机交互功能。 - 分时操作系统:提供了人机交互功能,但是不能优先处理紧急任务。
- 实时操作系统:能优先处理紧急任务。
硬实时系统:必须在绝对严格的规定时间内完成处理
软实时系统:能接受偶尔违反规定。 - 网络操作系统:可以实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。
- 分布式操作系统:具有分布性和并行性。
- 个人计算机操作系统
四、操作系统的运行机制
CPU上会运行两种程序:
- 内核程序:是整个系统的管理者,它需要用到一些特权指令
- 应用程序
程序运行的两种指令:
- 特权指令:只有内核程序才能使用。
- 非特权指令
操作系统有两种处理器状态:
- 内核态/核心态/管态:正在执行内核程序
- 用户态/目态:正在执行应用程序
一系列内核程序就组成了操作系统的内核,它是操作系统最重要最核心的部分。
操作系统实现状态的转变:
- 内核态->用户态:一条修改PSW(程序状态字寄存器)的特权指令
- 用户态->内核态:由中断引起,硬件自动完成,触发中断信号意味着操作系统将强行夺回CPU的使用权。
五、中断和异常
在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序;「中断」是让操作系统内核夺回CPU使用权的唯一途径。
1、中断类型
- 内中断:也被称为异常,与当前执行的指令有关,中断信号来源于CPU内部。
( 当前执行的指令是非法的,或者指令的参数是非法的,就会引发一个内中断信号)
有时应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令,该指令会引发一个内部中断信号
执行“陷入指令”,意味着应用程序主动地将CPU控制权还给操作系统内核。「系统调用」就是通过陷入指令完成的
「 异常」又分为以下三种:
(1)陷阱、陷入(trap):由陷入指令引发,是应用程序故意引发的。(这也是系统调用实现原理)
(2)故障(fault):由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把 CPU使用权还给应用程序,让它继续执行下去。如:缺页故障。
(3)终止(abort):由致命错误引起,内核程序无法
修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除0、非法使用特权指令等。
- 外中断:与当前执行的指令无关,中断信号来源于CPU外部。
(1)时钟中断:时钟部件每隔一个时间片(如50ms)会给CPU发送一个时钟中断信号
(2)I/O中断:由输入/输出设备发来的中断信号
2、中断机制的基本原理
- CPU首先会检查中断信号
(1)内中断:CPU会在执行指令时检查是否有异常发生
(2)外中断:每个指令周期末尾(即每执行一条指令之后),CPU都会检查是否有外中断信号需要处理 - 然后通过查询“中断向量表”,找到相应的中断处理程序。
六、系统调用
1、含义
系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
操作系统向上提供系统调用,使上面的库函数、应用程序能够通过系统调用来请求操作系统内核的服务。在操作系统之上,各种各样的高级编程语言会用库函数的方式来封装系统调用,来向更上层的应用程序的程序员暴露更好用的接口。
注意:
并不是所有的库函数在底层都需要使用系统调用。
2、为什么系统调用是必须的?
为了不同进程能够并发的运行,由操作系统内核对共享资源进行统一的管理,并向上提供“系统调用”,用户进程想要使用共享资源,只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理。
- 因为系统资源是有限的,操作系统会对这些系统资源进行统一的管理分配。因此,凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
3、系统调用的过程
编程人员用高级编程语言编写代码,通过使用库函数来进行系统调用。具体来说:
- 首先传递系统调用的参数
- 然后执行陷入指令(在用户态执行),应用程序把CPU控制权主动交给了操作系统的内核,即会产生内中断。
- 操作系统转向处理系统调用的内核程序,在核心态运行。
- 处理完之后,它又会返回原来的应用程序,让应用程序接着往下执行。
注意:
发出系统调用请求是在用户态,而对系统调用的相应处理在核心态。
陷入指令,又叫trap指令,还叫访管指令