操作系统 & 操作系统内核

Posted Ziming.G

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统 & 操作系统内核相关的知识,希望对你有一定的参考价值。

文章目录

Intro

今天在给 Linux 16.04LTS 换系统内核的时候突然想了解一下操作系统内核和操作系统之间的关系, 于是在网上浏览了一些文章, 简单学习了二者的区别和联系, 以下为结合网上浏览的资料给出的自己的理解, 非科班出身还请大家指正.


操作系统

操作系统大体就是为用户提供服务, 使用户能在计算机上使用各种应用程序来操作计算机资源的程序. 如QQ需要使用显示器资源, 用浏览器下载资料需要硬盘资源, 同时所有这些应用程序都需要使用CPU这个最主要的资源, etc.

  • 一方面从操作系统本身出发: 一台计算机就相当于是一组资源,运行在计算机上的各种应用程序本质上是离不开计算机的各种资源的, 如处理器 内存 I/O设备等. 为了方便,人们发明了操作系统这种东西, 而每一台计算机的各种资源都来自不同的厂家, 彼此都有着不同的标准, 不同的差别, 所以针对某一类的 I/O 设备开发的应用程序就不能在另一台装有不同 I/O 设备的计算机上运行, 而操作系统的出现就完美的协调/调和/解决了这种差别与无法扩展的问题. 因此从逻辑上来讲, 操作系统夹在应用程序和计算机和类资源的中间, 作为二者之间的桥梁, 负责他们之间的协作和调度.
    这个 “桥梁” 的具体作用分为两点:
    (1)防止硬件被失控的应用程序滥用
    (2)向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备.

  • 另一方面, 从计算机CPU的角度来看: 操作系统是一组计算机程序, 与其他计算机程序类似, 我们可以把这些程序理解成很多个应用程序的集合,而这些应用程序基本都是与硬件打交道的. 不管是 HelloWord 小程序还是像 QQ 这样的应用程序, 亦或是大型的服务器程序, 它们都给处理器提供指令, 然后处理器执行这些指令, 完成这些程序的功能. 最大的区别在于操作系统和其他程序的出发点不同: 操作系统程序通过控制处理器来使用其他计算机资源, 并控制其他程序什么时间执行, 这使得处理器完成系统任务的调度. 但是处理器为了执行另一个程序, 都必须停止执行操作系统的程序, 转而去执行其他程序 (这其实是进程切换), 因为既然操作系统也是一个程序(进程), 而处理器在同一时间只能处理一个进程, 所以操作系统和其他程序(进程)一样需要调度, 只不过操作系统处于主动调度的位置, 而其他程序是被动的由操作系统的控制来实现调度.


操作系统内核

操作系统包括操作系统内核, 这也就间接说明来操作系统内核其实也是一组程序, 即内核程序是操作系统程序所包含的一个子集. 这些内核程序是操作系统中最常使用基本模块, 他们负责直接与硬件打交道, 主要由用于管理存储器 文件 外设 系统资源的那些部分组成. 内核程序一直占据内存区域中的一段内存, 方便处理器随时调用这些内核程序. 而操作系统除了内核程序外, 还包括其他一些基本组件, 如文本编辑器 编译器 等用来与用户进行交互的程序.


二者的区别和联系

概括的说, 内核是操作系统的基础模块, 用于管理系统资源. 操作系统在内核的基础上有延伸, 包括了提供基础服务的系统组件. 内核就是计算机学科意义上的操作系统, 直接与硬件交互, 提供CPU时间片管理 中断 内存管理 I/O管理等, 一般意义上的操作系统包含的东西要更多一些, 至少要有用户交互的基本程序, 比如一个命令行界面和基本的指令, 或者图形界面的桌面和文件浏览器.


  • 下面是一些在学习过程中看到的相关内容

Mac OS 和 Linux 二者很大部分是一样的, to be specific, Mac OS 是基于 unix 开发的 (android 其实是基于 Linux 内核开发的), Linux 虽然是开源的操作系统,但在最最开始,Linux 的一些核心的东西也是基于 unix 来设计的,所以 Linux 和 unix 其实是有一些像的。Linux 这位前辈当初之所以开发 Linux 这个系统, 其实是因为 unix 在当时是收费的, 对个人用户来说很不友好, 门槛太高, 只有一些有钱的大公司才用得起 unix (比如 Apple). 后来的 Ubuntu 等操作系统,是在 Linux 的基础之上做了一些二次开发,因此他们也都是算作 Linux 这个大类的。

无论做前端还是做后端,其实都是在应用层操作。应用层分为前端和后端,应用层的前面一层,才是操作系统层。做后端不代表是做底层,后端也只是应用层的一部分。在 python 的内部有一个解释器,叫做 shell,shell 的作用 as the name suggested,是用来保护我们的操作系统的。如果用户输入的是一条正确的命令,shell 解释器就会辨认出这是一个正确的命令,然后按照命令干活;但是如果输入的是个错误的命令,就不会继续执行,并告诉你这条命令错了。

参考文章如下, 感谢分享!
文章1
文章2
文章3

以上是关于操作系统 & 操作系统内核的主要内容,如果未能解决你的问题,请参考以下文章

#定位系统性能瓶颈# strace & ltrace

用户态和核心态(转)

linux内核 进程调度

操作系统 & 操作系统内核

操作系统 & 操作系统内核

Linux内核(11) - 子系统的初始化之内核选项解析