操做系统 OS 与内核 Kernel 有什么区别?

2021年09月15日 阅读数:1
这篇文章主要向大家介绍操做系统 OS 与内核 Kernel 有什么区别?,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

操做系统 OS 与内核 Kernel 有什么区别?_操做系统 OS

通用底盘技术程序员

Canoo公司有一项核心技术专利,这就是它们的通用电动底盘技术,长得是这个样子,很是像一个滑板: 操做系统 OS 与内核 Kernel 有什么区别?_操做系统 OS _02这个带轮子、有电池、能动的滑板已经包含了一辆车最核心的组件,差的就是一个外壳。这个看起来像滑板的东西就是所谓的电池系统和底盘一体化技术,Canoo公司在它们的通用底盘上加装不一样的外壳就能制造出不一样的车型。 操做系统 OS 与内核 Kernel 有什么区别?_操做系统 OS _03什么是内核?在上面这个示例中,包含轮子以及电池系统的底盘就比如内核,而套上外壳加上椅子以及内饰后的总体成品就比如操做系统。内核仅仅是操做系统的一部分,是真正与硬件交互的那部分软件,与硬件交互包括读写硬盘、读写网盘、读写内存以及任何链接到系统中的硬件。除了与硬件交互外,内核还负责分配资源,分配什么资源呢?所谓资源就是硬件,好比CPU时间、内存、IO等等,这些都是资源。 操做系统 OS 与内核 Kernel 有什么区别?_内核 Kerne_04如今咱们知道了内核负责分配资源,那么问题来了,要怎么分配这些资源呢?答案就是以进程的形式来分配资源。怎么分配呢?一句话:虚拟大法好。每一个进程都认为本身在独占CPU,这经过CPU时间片来实现,内核让CPU在各个进程之间快速切换,这样程序员写好程序员后直接运行便可,即便在单核系统中运行成百上千个进程都没有问题。每一个进程都认为本身在独占内存,这经过虚拟内存来实现。有的同窗可能会问,为何都要虚拟化呢?答案显而易见,由于计算机系统内的资源是有限的,咱们只有几个CPU核心、几个G的内存,但却要同时运行几百几千个进程,除此以外咱们别无它法。若是你还知道有其它更高效的方法那么赶忙放下手机,立刻将你的思想写成论文发表出来,下一届的图灵奖非你莫属 操做系统 OS 与内核 Kernel 有什么区别?_操做系统 OS _05所以,内核的职责就是以进程的形式来分配CPU时间,以虚拟内存的形式来分配物理内存,以文件的形式来管理IO设备。什么是操做系统?然而只有一个内核其实是作不了什么真正有用的事情,就像上面示例中那个通用底盘同样,这个底盘确实能跑起来,但你没办法开着这样一个底盘出去浪,由于这个底盘很难用。所以,你不得不加装上方向盘、座椅以及车身外壳等,一样的道理,内核是给人用的,为了与内核交互,发明了命令行以及图形界面GUI。 操做系统 OS 与内核 Kernel 有什么区别?_内核 Kerne_06除了给普通用户提供使用的接口以外,操做系统还须要给程序员提供编写程序的接口,当咱们写的程序依赖内核提供的服务时是该怎么办呢?有的同窗说咱们须要依赖内核提供的服务吗?想想,进行网络编程时你有没有本身编写过处理TCP/IP协议栈数据的代码?你有没有本身写代码从网卡上收发数据?都没有,实际上你须要作的仅仅是简单的调用一些socket接口就能够了。网络编程仅仅是其中的一项,其它还包括文件IO、建立进程、建立线程等等等等,这些是内核提供的,那么咱们该怎么使用呢?答案就是经过所谓的系统调用,system call。经过系统调用,咱们能够像使用普通函数那样向操做系统请求服务,固然,直接使用系统调用是很是繁琐的,所以一般会在这之上提供一层封装。 操做系统 OS 与内核 Kernel 有什么区别?_操做系统 OS _07在Windows平台就是给程序员提供编程接口的是Windows API,这层API一应俱全,不但包括上文提到对系统调用的封装,还包括其它功能,像建立带有图形界面的应用程序等等。但在Linux世界你找不到一种相似Windows API的东西,毕竟Windows是微软自家产品,什么均可以打包起来,Linux只是一个开源的内核,若是必定要找一个相似的东西话那就是libc,也就是C标准库,这里一样包括了对系统调用的封装以及一些库函数,但libc不包含建立带有图形界面应用程序的功能。如今咱们知道了,操做系统须要提供两种接口:
  • 给用户提供操做接口。编程

  • 给程序员提供编程接口。网络

这些就是比如汽车的外壳,咱们(用户和程序员)看得见摸得着,外壳加上底盘——也就是内核,才是功能完善的操做系统。 操做系统 OS 与内核 Kernel 有什么区别?_内核 Kerne_08各类各样的操做系统实际上咱们熟悉的Linux只是内核而不能称得上是操做系统,Ubuntu则能够认为是操做系统,其内核是Linux;RedHat也是操做系统,其内核一样是Linux;咱们能够看到,尽管Ubuntu和RedHat是不一样的操做系统,但其内核能够是相同的。这就比如它们能够基于一样的底盘打造出不一样的车型。而咱们熟悉的Windows也是操做系统,其内核是Windows NT内核。总结内核就像本文开头提到的电动底盘,包含了一个汽车的最核心元素;但这样一个底盘并无什么实际用处,当搭配上外壳以及座椅后才是一辆真正有用的车,这就比如操做系统。值得注意的是,不一样的操做系统能够有相同的内核。当咱们在使用方便的智能手机以及我的PC时不该忘记,正是操做系统在背后的默默工做让一堆硬件电路变得这么好用。但愿这篇文章对你们理解操做系统以及内核有所帮助。

-END-socket

 

操做系统 OS 与内核 Kernel 有什么区别?_操做系统 OS _09