介绍
操作系统是什么?
计算机结构大概分为四层:
- 用户
- 应用程序
- 操作系统
- 硬件
操作系统是一类系统软件,调度硬件资源,合理分配管理软件(因此操作系统又被称作资源管理器(resource manager))。
程序要运行首先要被放到内存中,然后才能被 CPU 处理;运行中的程序叫进程。
双击打开 QQ.exe,对应进程就会被放到内存中;
QQ 正常运行过程中,对应进程被 CPU 处理。
QQ 若想调用摄像头等,操作系统会把相应硬件分配给他。
计算机还会提供用户和硬件之间的接口。主要分为三种:GUI 接口,命令接口,程序接口。
联机/交互式命令接口:用户说一句,系统做一句。(cmd)
脱机/批处理命令接口:用户说一堆,系统做一堆。(.bat)
程序接口:通过程序才能调用。(.dll)
只有硬件的计算机叫裸机;操作系统将硬件资源转换为通用的、强大的虚拟形式,有时操作系统也被称为虚拟机。操作系统提供几百个系统调用(system call)供其他应用程序使用,实现运行程序、访问内存和设备等操作,也可以说操作系统为其他应用程序提供了一个标准库(standard library)。
操作系统几大特征
操作系统围绕以下几大主题展开:
- 虚拟化(virtualize):尽管一般只有一个 CPU,但是能同时进行多个进程,造成多个 CPU 的假象。多个程序实例同时用到一片内存地址时,却能各运行各的,值互不干扰。实际上每个进程是在访问自己的私有虚拟内存空间(virtual address space),虚拟内存通过一定的规则映射到物理内存上,运行中的程序的物理内存是完全独立的。
- 并发(concurrency)不是并行!并行是同时发生,并发是交替发生。单核计算机就会采用并发的程序运行方式。现在尽管都有四核计算机,可以进行4个程序的并行操作,但是并发仍然很重要。
- 共享:系统中的某些资源供多个进程使用。
互斥型共享就是一次只能一个程序用,如摄像头;
同时型共享就是两个进程交替使用,如 QQ 微信 同时发送文件。
- 异步性:并发执行的程序有时候会卡住。比如 AB 程序都要用同一个地址,A先用了,B用的时候就要等A用完释放才能用。
操作系统历史
手工操作阶段:用户手工打点,给机器。人机协调不均衡,资源分配不均匀。
批处理阶段——单道批处理系统:用户打好的点交给磁带,磁带读入计算机速度快得多(监督程序,早期的操作系统)。但是利用率仍然很低。
批处理阶段——多道批处理系统:每次内存中同时读入多个程序。多个程序并发执行,有了”中断“的概念。但是用户在程序执行的时候没法干涉,人机交互很差。
分时操作系统:计算机以时间片为单位轮流给所有用户提供服务。用户的请求可以被及时响应,解决了人机交互问题;各个用户之间也感受不到其他用户的存在。但是众生平等,没有优先级。
实时操作系统:优先度高的任务可以先被处理,并且必须在给定的时限内完成任务。
OS 运行机制和体系结构
计算机中的指令有的安全(加减乘除运算),有的危险一点(清空内存)。因此需要通过权限控制限制用户能执行的指令。
具体实现方法为:CPU 处于核心态(管态)时可以执行所有指令;处于用户态(目态)时只能执行非特权指令。
内核程序是系统的管理者,可以执行所有指令,运行在核心态;
应用程序只能执行非特权指令,运行在用户态。
操作系统的内核包含橙黄两部分:大内核。
只包含黄色部分:微内核。
各自的缺点:大内核组织结构混乱,难以维护;微内核频发切换,性能低。