操作系统
一、概念
任何计算机系统都包含一个基本的程序集合,称之为操作系统(OS)。笼统的理解,操作系统包括:操作系统内核(进程管理、内存管理、文件管理、驱动管理) 和 应用程序。
二、定位
操作系统是一款 搞管理 的 软件,对下管理计算机的一切硬件设备,对上管理计算机的所有软件。
1. 管理分类
a) 存储管理
管理目标:提高内存利用率、方便用户使用、提供足够的存储空间、方便进程并发运行。
(1)内存分配与回收:为进程分配存储空间
(2)内存保护:防止进程间相互干扰、相互保密,如:访问合法性检查
(3)地址映射(交换):进程 逻辑地址 到 物理地址 的映射
(4)存储扩充(覆盖、交换和虚拟存储):在不增加 物理内存 的情况下向用户提供海量存储空间,提高内存的利用率、扩大进程的内存空间
b) 进程管理
在多道程序环境下,处理机的分配和运行都是以 进程 为基本单位,因而对处理机的管理就可以归结为对进程的管理
(1)进程调度:为进程分配处理机,以充分利用处理机资源和提高系统性能;核心:调度算法
(2)进程控制:创建、撤销、挂起、封锁进程——主动改变进程状态;通过系统调用实现
(3)进程同步:协调进程间的关系 同步/互斥
(4)进程通讯:进程间的信息交换
c) 驱动管理
任务:分配与回收设备 驱动设备 响应 I/O 请求
目的:提高 I/O 设备利用率 方便使用 I/O 设备
(1)缓冲管理:解决 CPU 与 I/O 速度不匹配,提高两者的利用率,缓冲机制:单缓冲、双缓冲、缓冲池
(2)设备分配与回收:根据用户的 I/O 请求和相应的分配策略,为该用户分配外设以及通道、控制器等,再多用户间共享 I/O 设备资源。虚拟设备:将一个物理设备变换为多个与之对应的逻辑设备,共多个用户共享。
(3)设备处理:控制设备工作,处理中断请求,设备驱动程序,事项 CPU 与通道和外设之间的通信。
(4)设备独立性:指用户程序与物理设备无关,即提供统一的 I/O 设备接口,使应用程序独立于物理设备,提高可适应性。
d) 文件管理
解决软件资源的存储、共享、保密和保护。
(1)文件存储空间管理:分配、回收文件空间,解决如何存放信息,以提高 空间利用率 和 读写性能。
(2)目录管理:解决信息检索问题,实现文件按名存取,共享与保护。
(3)文件读写和存取控制:实现对文件的具体访问,防止文件被破坏。
(4)文件操作的一般管理:实现对文件的创建、删除、打开、关闭等操作。
2. 如何管理 ![](https://i-blog.csdnimg.cn/blog_migrate/3f53a3a3e42df124ca511eb14916faf5.png)
二、 操作系统的定义
它管理和控制计算机系统中各种硬件和软件资源,合理地组织计算机工作流程的软件系统,是用户与计算机之间的接口
1. 多道批处理系统
(1)在内存中同时存放多道程序,在管理程序的控制下交替执行,这些任务共享 CPU 和系统的其他资源。
(2)用户提交的作业都先存放在外存上,并排成一个“作业队列”,等待调度
(3)作业调度程序按一定的调度原则,从作业队列中选择若干个作业进入内存,使他们交替运行,并且共享 CPU 和 系统各种资源。
2. 分时系统
把处理机运行时间分成时间片,按时间片轮转的方式,把处理机分配给各联机作业使用。允许多个用户与计算机直接交互。
3. 实时系统
系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。提供即时响应和高可靠性,响应时间快,可以在毫秒级甚至微秒级立即处理。
三、操作系统的特征
1. 并发
并发是指一个 CPU 通过快速调度的方式执行多个进程的代码,由于调度速度几块,导致宏观上看起来好像是并行执行(两个 CPU 同时运行两个进程的代码)。实际上是两个或多个事件在同一时间间隔内发生。微观上还是程序在分时地交替执行。
2. 共享
共享是指系统中的资源可供内存中多个并发执行的进程共同使用。
(1)互斥共享方式:如打印机、磁带机。在一段时间内只允许一个进程访问该资源。
(2)同时访问方式:如磁盘设备
3. 虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。比如说虚拟处理器,虚拟内存,虚拟外部设备
4. 异步
在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
操作系统最基本的特征是并发和共享,两者互为存在条件。
四、系统调用 与 库函数
系统调用:在开发角度,操作系统会对外表现为一个整体,但是会暴露自己的部分接口,从而供上层开发使用,这部分由操作系统提供的接口,就叫做系统调用。
库函数:由于系统调用在使用上功能比较基础,对用户的要求比较高,所以就有大佬对这部分系统调用进行适度封装,从而形成库,也就是所谓的库函数。
库函数 与 系统调用的关系:
库函数 是对 系统调用 的一层封装,他们是上下级的调用关系,库函数 调用了 系统调用接口。