1 操作系统做了什么
关于操作系统在程序执行中的作用,我们以一个小例子作为引入。下面的代码是用C语言编写的Hello World程序:
#include <stdio.h>
int main(int argc, char *argv[]) {
puts("hello world");
return 0;
}
这个程序执行的时候,操作系统做了哪些工作呢?
- 用户告知操作系统执行程序
- OS: 找到helloworld程序的相关信息,检查其是否为可执行文件。通过程序的首部信息,确定代码和数据在程序中的位置并且计算出对应的磁盘地址
- OS: 创建新的进程,将helloworld可执行文件映射到进程结构
- OS: 如果调度程序选中helloworld程序,则为程序设置CPU上下文环境,跳转到程序的开始处
- CPU执行helloworld第一条指令,发生缺页异常
- OS: 分配一页物理内存,将代码由磁盘读入内存,继续执行helloworld程序
- helloworld程序执行put函数, 在显示器上面显示字符串
- OS: 操作系统将字符串送给控制显示设备的进程,控制设备的进程告诉设备的窗口系统要显示字符串,窗口系统确定这个操作合法,将字符串转换为像素,将像素写入设备的存储映像区
- 显示器显示“hello world”
2 操作系统的定义以及作用
操作系统是计算机系统的一个系统软件,是一些程序模块的集合。这些程序模块能够以尽量有效,合理的方式组织和管理计算机的软硬件资源,合理的组织计算机的工作流程,控制程序的执行并向用户提供各种服务。使得用户能够灵活,方便的使用计算机。使整个计算机系统高效率运行。
3 操作系统的三个作用
(1) OS是资源的管理者
资源包括硬件资源,软件资源。硬件资源包括:CPU,内存,设备(I/O设备,磁盘,时钟,网卡)。软件资源包括:磁盘上的文件,各类管理信息。
操作系统如何管理资源?
- 跟踪记录资源的使用状况
- 确定资源分配策略——算法
- 实施资源的分配和回收
- 提高资源利用率
- 保护资源的使用
- 协调多个进程对资源请求的冲突
总结下来,操作系统的5大基本功能:
- 进程/线程管理(CPU管理): 进程线程状态、控制、同步互斥、通信、调度、......
- 存储管理: 分配/回收、地址转换、存储保护、内存扩充、......
- 文件管理: 文件目录、文件操作、磁盘空间、文件存取控制、......
- 设备管理: 设备驱动、分配回收、缓冲技术、......
- 用户接口: 系统命令,编程接口
(2) OS为用户提供各种服务
典型服务:进程的创建和执行,文件和目录的操作,I/O设备的使用......
(3) OS对硬件机器进行拓展
操作系统在应用程序与硬件之间建立了一个等价的扩展机器(虚拟机)。对硬件抽象,提高可移植性;比底层硬件更容易编程, 用户不用接触繁琐复杂的硬件相关工作。
4 操作系统特征
操作系统有四个特征:
- 并发
OS可以处理多个同时性工作。并发会产生很多的问题:活动切换、保护、相互依赖的活动的同步。
对于一个CPU,在任何时刻,CPU上只有一个程序在真正执行。 - 共享
操作系统与多个用户的程序共同使用计算机系统中的资源(共享有限的系统资源)。操作系统要对系统资源进行合理分配和使用,资源在一个时间段内交替被多个进程所用 - 虚拟
一个物理实体可以映射为若干个对应的逻辑实体--分时或分空间。 - 随机
操作系统必须随时对以不可预测的次序发生的事件进行响应并处理。