定义
- 没有一个完整,精确,公认的定义。
- 从功能和特点来介绍操作系统。
从用户角度看,操作系统是一个控制软件。
可以控制操作系统上面的软件,应用程序怎么来运行。限制不同的程序来占用不同的资源。
管理应用程序。
为应用程序提供服务。
从计算机内部看:
资源管理。操作系统是资源分配的分配器。 在我们的计算机内,CPU,内存都是资源。
管理外设,分配资源。
操作系统可以把CPU抽象为进程,把磁盘抽象为文件,把内存抽象为地址空间:
操作系统属于一种软件。
操作系统直接面向硬件。
在软件角度:
应用软件:办公软件,视频播放软件。
操作系统位于应用软件之下,为应用软件提供服务支撑。
Linux, Windows, Android 的界面属于外壳(Shell),而不是内核(kernel)Kernel是我们的研究重点,在Shell之下。
这一层Shell,就相当于操作系统对外暴露出的接口。
Shell分为:GUI类型Shell和命令行类型Shell。
我们操作系统这门课主要是学习kernel。
操作系统 = Kernel + Shell
操作系统作用
主要是管理计算机资源。
计算机资源分类
主要分为:CPU,内存,磁盘三类资源。
计算机资源还有:网卡,声卡,显卡等。
这些都是在计算机操作系统管理范围之内。
Kernel
Kernel是操作系统内部组件,包括:
CPU调度器
物理内存管理
虚拟内存管理
文件系统管理
中断处理与设备驱动
OS Kernel的特征:
a.并发
计算机系统中同时存在多个运行的程序
需要OS管理和调度
注意:并发和并行的区别。
并发:在一段时间内可以有多个程序运行,这段时间可长可短;
并行:在一个时刻上面,有多个程序运行。
并行的条件是允许计算机内部存在多个CPU,如果计算机内部只有一个CPU,那么是不能完成并行工作的,不能让一个程序在一个时刻都在跑。
b.共享(都是针对资源)
『同时』访问,这里的同时不是同一时刻,而是很短的时间段,让你看起来像是多个程序在访问。
互斥共享。
c.虚拟
利用多道程序设计技术,让每个用户都觉得有一个计算机专门为他服务。
操作系统直面的是硬件,直接将硬件虚拟化了,比如说,我们把CPU虚拟为进程,把磁盘虚拟为文件,把内存虚拟化为地址空间,带来的好处是,每一个应用程序,每一个用户感觉自己都独立拥有一台计算机。
d.异步
程序的执行不是一贯到底,而是走走停停,向前推进的速度不可预知
但是只要运行环境相同,OS需要保证程序运行的结果也要相同