这是我对自己说的话……读者大可跳过
我听到的我会忘记,我看到的我能记主,只有我做过的我才能理解!
我们看到是一个图形界面,方便程序展现给用户,方便用户的使用,例如:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PN3Bn1pv-1572624965787)(https://img.vim-cn.com/7c/549a5f2f33aa20bd1ee14b341e8c539c3248cd.jpg)]
把CPU抽象成进程,把硬盘抽象成文件,把内存抽象成地址空间,如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EkgsWiCP-1572624965788)(https://img.vim-cn.com/06/a5be02bbf7ffa9e4c55e4a1e8741a80cc906d8.png)]
硬件之上,应用程序之下
Linux、Windows、Android的界面属于外核(Shell),而不是内核(kernel),操作系统原理主要学习kernel,在Shell之下。我们关注的是内核中完成的各种功能,站在操作系统的内核的角度去看问题。
Kernel-操作系统内部组件,包括:
CPU调度器物理内存管理虚拟内存管理文件系统管理中断处理与设备驱动是指对CPU的管理,是对CPU进行分配,并对他的运行进行有效控制与管理;为了提高程序利用率,很多计算机操作系统采用了多道程序技术(并发执行->进程(正在执行的程序通过进程管理协调多道程序之间的关系))使得计算机资源得到充分的利用。
是指对内存空间的管理,程序要运行就必须由外存装入内存,存储管理的作用就是为每个程序合理分配空间,让他们互不干扰。
是指计算机中所有输入输出设备的管理,提供驱动程序,用户不需要了解接口等细节,可以直接方便使用;另外一个任务,使外部设备尽可能与CPU并行工作,提高设备的使用效率。
软件资源,程序和数据以文件的形式存放在外存上,需要的时候再载入内存。有效的组织存储和保护文件,使用户方便安全的访问他们。
命令、图形、系统调用的形式。方便的使用操作系统各个功能
网络资源管理、数据通信管理、网络管理(性能、安全等等内容)
我们将内核态和用户态的区别,如下图所示:
内核态用户态访问的资源多,可靠性、安全性要求高,维护管理比较复杂访问资源有限,可靠性、安全性要求低,编程和维护比较简单还有一张图片比较有代表性:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zyOTO0hl-1572624965793)(https://i.loli.net/2019/11/01/ZHiFpblWn2NDTYy.jpg)]
操作系统一方面对外提供服务,在内部还有各个功能模块,模块之间相互调用,构成了比较复杂的关系。
优点:结构紧密,模块间可以方便的进行组合,满足不同的需要,灵活性较高、效率高 缺点:对功能模块的划分不能精确的确定,模块独立性差;如果模块之间调用关系可能过于复杂,进而导致系统结构不够清晰,正确性、可靠性不能保证;系统维护比较困难
如下图所示: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KFrJGcBB-1572624965795)(https://i.loli.net/2019/11/01/L2Y1M8zQVROZqGr.jpg)]
为了避免单内核结构模块之间比较复杂的关系,分层式结构直接将各个功能划分成模块,这些模块按照功能调用次序分成若干层,每个层次为上面的层次提供服务。
优点:按单向调用关系以层单位,组织各个模块,模块之间的依赖、调用关系清晰明了;对其中的一个分层进行修改,不会影响道其他层次;系统的调式变的容易;系统的正确性得到保证,系统中间的接口减少。 缺点:单向依赖的关系之间,在实现通信的时候,系统开销会比较大,进而影响系统效率。
如下图所示:
前面的两种结构所有的工作核心都在内核态,在由内核态转换为用户态的时候会有时间开销,效率下降;在微内核结构里面,操作系统划分了两部分。一部分是在内核态的微内核,它提供了最基本的功能,只完成极少数的内核态任务;还有一部分是一种服务器进程,它们工作在用户态,以用户服务器的形式进行工作。
优点:对进程的请求提供了一次性的接口,不区分内核级服务和用户级服务,所有服务采用消息传递机制服务;具有较好的易修改性;可移植性比较好;对分布式操作系统提供较好支持。
如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ahKnv80z-1572624965809)(https://i.loli.net/2019/11/02/NMjGV7wWDLCRPol.jpg)]
有自己的独立操作空间和独立的运行环境,他的执行过程不和应用程序或者进程发生关联。并发程度不够高
为了提高并发能力,创建用户进程的时候,为其创建核心站,可以把操作系统的内核程序嵌入到其中去执行。
整个操作系统小部分核心功能仍然在内核态工作,大部分功能在用户态工作,独立的服务器进程提供服务。微内核结构就属于这种模型
