1、什么是计算机操作系统
从用户角度,操作系统是一个控制软件,用户用操作系统来控制计算机里面的软件,管理应用程序的运行。
从资源分配的角度,操作系统会限制不同的应用程序占用不同的资源。操作系统还会为应用程序提供各种各样的服务,如IO服务,声卡、网卡的访问。操作系统作为一个资源分配的分配器,进行资源管理,如CPU资源,内存资源,外设资源。协同应用程序在不同时刻能够公平地访问到不同的资源,实现资源的最大化利用。
如下图所示,操作系统将CPU抽象成进程,将磁盘抽象成文件,将内存抽象成地址空间。
2、操作系统的层次结构
操作系统在硬件之上,应用程序之下。操作系统位于系统软件之下,为应用软件提供服务支撑。
Linux,windows,Android的界面属于外壳(shell),他们不是内核(kernel)。kernel时操作系统研究的重点内容,他在shell更底层的部分。
kernel操作系统的内部组件包括:CPU调度器,物理内存管理,虚拟内存管理,文件系统管理,中断处理和IO设备驱动。
3、OS kernel的特征
一、并发,指在一段时间内同时运行多个应用程序;并行,指的是在同一个时间点上有多个程序同时运行,并行运行的程序要求计算机里面存在多个CPU;
二、共享,使应用程序更好地访问各种资源,包括“同时”访问和互斥共享两种。
三、虚拟,把硬件虚拟化,如把CPU虚拟化为进程;领用多道程序设计技术,让每个用户都觉得有一个计算机专为为他服务。
四、异步,程序的执行不是一贯到底,而是走走停停,向前推进的速度不可预知;但只要运行环境相同,OS需要保证程序运行的结果也要相同。
uCore操作系统
http://github.com/chyyuu/mooc_os_lab
陈渝老师原授课视频链接:
https://www.bilibili.com/video/BV1wW41117GS?p=29