综述:在现代,软件是计算机的灵魂,而作为软件的核心的操作系统,已经称为计算机系统重要的一环。计算机自上而下可分为硬件、操作系统、应用程序、用户。操作系统是计算机硬件资源的管理者,也是我们用户的服务者。充当了硬件和用户之间的媒介,让普通人也可以轻松的使用计算机的算力。操作系统控制和管理整个计算机系统的硬件资源,并合理地组织调度计算机的工作和资源分配。操作系统还是应用软件的运行环境,让应用程序员不用考虑计算机的底层逻辑,也不用学习底层知识,就可以编程计算机,实现相应的功能。
操作系统的特征
- 并发:并发是指操作系统中同时运行着多个程序。要注意和并行的区别,并行是两者可以同时运行,而并发是宏观上的并行,微观上,是多个程序交替使用计算机资源。(引入进程的目的就是使操作系统拥有并发的特性)
- 共享:共享的是计算机中的资源,指多个并发执行的程序可以共同使用这些资源。计算机中的资源也因此分为互斥资源和同时访问资源,互斥资源是指不支持多个程序并发使用的,比如打印机这样的需要连续一段时间工作才有效果的。同时访问的资源支持多个程序并发的共享,即也是微观上分时共享。
- 虚拟:虚拟技术是依靠计算机的快速,可以依靠微观上分时的服务于不同的任务或者用户,可以虚拟出多个逻辑上的对象,可能物理上只有一个。一般可以虚拟处理器、虚拟内存、虚拟外部设备。通过并发的方法,将一个物理实体虚拟成逻辑上的多个虚体。虚拟技术本质上就是时分复用技术的应用。
- 异步:异步是指,多个程序共同运行,资源却是有限的,所以难免会有问题出现,所以多个程序会以不可预知的速度推进,问题会导致程序走走停停,这就是异步。异步本质上就是指操作系统的多道程序系统让操作系统变得不确定了。
操作系统的目标和功能
面向计算机:
- 处理机管理:处理机的运行是基于进程的,所以对处理机的管理就是对进程的管理。
- 存储器管理:对内存的管理
- 设备管理:对外部设备的管理
- 文件管理:计算机中的信息都是以文件的形式存在的,对文件的管理就是管理计算机中的电子信息。
面向用户:
提供接口:接口就像是我们人类与计算机的翻译官,我们通过接口使用自己熟悉的语言来让计算机做我们想做的事
- 命令接口:联机命令接口(交互式的命令就像shell)和脱机命令(一串命令使计算机自动工作,就像脚本)
- 程序接口:用户通过在程序中使用这些系统调用命令来请求操作系统的服务。当前的图形用户接口就是程序接口。
【注】有操作系统的计算机称为虚拟机。而不带操作系统的称为裸机(某些单片机)。
操作系统的运行环境
计算机系统中,有两种性质的软件,一种是操作系统,即组成操作系统的一些内核程序,另一种是应用程序,是直接面对用户的。内核程序是应用程序和硬件承上启下的关键程序。是应用程序的管理者。为了区别这两种不同性质的程序,也为了保障计算机系统的稳定和安全,操作系统划分了用户态和核心态两种状态。也因此区分了两种指令,特权指令和普通指令,特权指令只能在核心态中运行,而用户需要操作系统资源的时候,只能进行申请。那么什么程序是内核程序那?是一些与硬件紧密相关的模块,比如时间管理,中断管理,设备驱动最底层的程序和一些运行频率非常高的程序,进程管理,存储器管理,设备管理等。这两部分内容构成了操作系统的内核。
大多数内核程序包括四个方面的内容:
1)时钟管理
- 时钟可以提供时间参考
- 可以实现时间中断
2)中断机制:中断中的保护和恢复现场信息,转移控制权的操作属于内核。
3)原语:是底层一些可以被调用的公用小程序
- 处于操作系统的最底层,是最接近硬件的部分
- 其操作是一气呵成,不能打断的,具有原子性。
- 运行时间短,调用频繁
4)系统控制的数据结构及处理
- 进程管理
- 存储器管理
- 设备管理
中断和异常
在操作系统中引入用户态和核心态以后,就要考虑到两者如何转换,用户态不可能永远用不到内核态,那也需要有这样一个门,可以暂时性的对用户态开放。在操作系统中这唯一的门就是中断和异常,只有中断和异常时,运行用户态的cpu才能进入核心态。这里的操作是通过硬件实现的。而异常也可以称为中断,不过两者有一些不同。中断也称外中断,而异常就叫做内中断。中断主要是指一些正常的操作,是为了提高计算机效率。而异常也叫陷入,主要是一些故障,不过也可以通过指令自愿的中断。两者最主要的区别是中断可以屏蔽,而异常是不可屏蔽的中断。
系统调用命令
系统调用就是操作系统提供的一些公共程序,相当于把硬件资源管理好后,提供给上层程序的一个接口。通过系统调用,用户程序可以使用一些方便的功能来实现对计算机的使用。系统调用运行在核心态,这样可以保证操作系统内部的安全和稳定,不会因为用户的操作就发生毁灭性的影响。这也直接降低了用户的使用门槛。
【总结】对于操作系统的运行环境,我们可以这样理解,用户通过上层用户程序使用计算机,而这些上层程序是依赖于操作系统的,当用户的程序需要调用系统功能时,我们需要用户通过异常进入核心态,执行系统调用,然后再返回用户态,继续正常工作。
【注解】从用户态到核心态的指令叫做访管指令(访问管理服务程序),在用户态使用,所以不是特权指令。从核心态返回用户态的指令叫做中断返回指令,在核心态使用,是特权指令。