精华内容
下载资源
问答
  • 内核时间是什么
    千次阅读
    2019-08-09 15:24:03

    微内核(英语:Microkernel,μ-kernel),又称为微核心,是一种内核的设计架构,由一群尽可能将数量最小化的软件程序组成,它们负责提供、实现一个操作系统所需要的各种机制与功能。这些最基础的机制,包括了底层地址空间管理,线程管理,与行程间通信(IPC)。

    微核心的设计理念,是将系统服务的实现,与系统的基本操作规则区分开来。它实现的方式,是将核心功能模块化,划分成几个独立的行程,各自运行,这些行程被称为服务(service)。所有的服务行程,都运行在不同的地址空间。只有需要绝对特权的行程,才能在具特权的运行模式下运行,其余的行程则在用户空间运行。

    这样的设计,使内核中最核心的功能,设计上变的更简单。需要特权的行程,只有基本的线程管理,内存管理和进程通信等,这个部分,由一个简单的硬件抽象层与关键的系统调用组成。其余的服务行程,则移至用户空间。

    让服务各自独立,可以减少系统之间的耦合度,易于实现与调试,也可增进可移植性。它可以避免单一组件失效,而造成整个系统崩溃,内核只需要重启这个组件,不致于影响其他服务器的功能,使系统稳定度增加。同时,操作系统也可以视需要,抽换或新增某些服务行程,使功能更有弹性。

    因为所有服务行程都各自在不同地址空间运行,因此在微核心架构下,不能像宏内核一样直接进行函数调用。在微核心架构下,要创建一个行程间通信机制,通过消息传递的机制来让服务行程间相互交换消息,调用彼此的服务,以及完成同步。采用主从式架构,使得它在分布式系统中有特别的优势,因为远程系统与本地行程间,可以采用同一套行程间通信机制。

    但是因为行程间通信耗费的资源与时间,比简单的函数调用还多;通常又会涉及到核心空间到用户空间的环境切换(context switch)。这使得消息传递有延迟,以及传输量(throughput)受限的问题,因此微核心可能出现性能不佳的问题。

    就代码数量来看,一般来说,因为功能简化,微核心使用的代码比集成式核心更少,其源代码通常小于10,000行。例如,minix 3的源代码少于6,000行。更少的代码,也代表更少的潜藏程序bug。

    更多相关内容
  • 操作系统的内核到底是什么

    千次阅读 2022-03-24 10:24:25
    本质上内核是对计算机硬件的抽象。

    每次谈到什么是内核,就是:进程调度、内存管理、文件系统、网络接口、进程通信等等这些。然后就是内核态、用户态等等。这些其实都对,但是始终感觉没法让人直观的知道,内核到底是个什么东西。

    本质上内核是对计算机硬件的抽象。

     

    这样说是因为这里涉及到一个更根本的问题:人机交互。如何让计算机理解人的想法,需求,并将之实现。

    比如:让计算机计算一下硬盘中的一个文档的字数。我们是没有办法去打开“硬盘”翻箱倒柜找到这个文件,然后丢给“CPU”去统计,并从“CPU”那里得到这个结果。对于计算机内部真正的核心组成部分:CPU、硬盘、内存等等这些硬件,人是无法直接去面对和交互的。而计算机处理的所有工作,都是通过调用这些硬件设备来完成的。

    对操作系统来说,最重要的正是管理和调度计算机内部的资源。而具体到操作系统的内部分工,则是由内核来真正完成和执行的。除了内核以外,操作系统其他所有的部件,都不需要也不关注如何计算、如何存储、如何和具体的某个硬件设备打交道。所有的部件都只需要将具体的诉求传递给内核,调用内核的接口,即可完成硬件资源的调度和使用。

    内核抽象了计算机内部硬件资源,并统一管理对外提供支持,所以内核 = 计算机硬件。

     

    具体到内核内部的组成部分和抽象结构,内核的核心功能和硬件有如下对应和抽象关系:

    进程管理 —— CPU

    内存管理 —— 内存

    虚拟文件系统 —— 硬盘/磁盘

    网络接口 —— 网卡

    既然硬件是由内核去管理和调度的,那么内核又是如何做到的呢?

    从内核的代码量上来说,内核的绝大部分代码是驱动,各个不同设备不同硬件的驱动。驱动是内核和硬件设备之间的桥梁,内核也正是通过驱动来管理和调度硬件设备。

    除了驱动以外,内核的另外一部分是各种算法、函数、策略,但是代码量较少。这一部分确实有价值,但是并非唯一无可替代,也并非具有卡脖子的门槛存在。内核真正的价值是其本身涵盖的生态 —— 各种驱动和硬件的适配,日积月累的沉淀。对内核来说,真正关键和重要的是如何保证在更多甚至每一个设备上都能运行。算法和技术的难度形成的门槛,远远比不上日积月累的时间所形成的门槛。使用Linux内核,最大的原因是复用和继承Linux的生态。

    而且, Linux开源的内核现在的主要演进工作也是生态的扩大。 比最新发布的Linux原生内核5.15就有如下几个重点更新:

    1、集成Paragon Software 的 NTSF3 driver

    2、支持AMD 的GPU/CPU

    3、支持apple M1芯片

    4、支持Intel 12代CPU

    5、支持Intel DG2显卡

    虽然这只是Linux内核的一个小版本更新,但是从这些更新可以看出,Linux内核的主要演进确实是生态的扩大。

     

    Linux 内核主要的变化点概括来说有如下三点:新技术新协议的支持、自身算法和策略的优化和bug修复、新硬件新设备的驱动集成和支持。其中第一点和第三点都是为扩大和维护软件和硬件的生态。而做国产操作系统最重要的一点也是如此,扩大和支持国产硬件的生态。

    所以使用Linux开源内核,而不去自研一套,“非不能也,实不为也”。生态的打造是日积月累,沉淀之功,即便是国产硬件的生态支持也不是一日之功。集成和使用Linux内核是成本最低,效用最大,且行之有效的策略。可以集中资源,集中优势做更有价值更有意义的其他的部分。

    如果一个操作系统有更高的目的和使命,那么继承和复用只是基础。更重要的如何去掌握、主导和发展,走自己的路,满足自己的需求,这一点对国产操作系统更是如此。Linux开源内核没有适配和支持国内的硬件生态,需要自己来兼容和适配,支持这个生态的发展。Linux开源内核没有考虑的国内使用环境和安全要求,需要自己来投入和满足,保护自己。

    展开全文
  • 操作系统:操作系统内核什么

    千次阅读 2022-03-11 15:42:33
    它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成...


    前言

    这篇记录笔者对操作系统内核学习和整理的感悟

    一、内核是什么?

    要想弄懂操作系统内核是什么,先来看一段定义

    “内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。

    简单明了用一张图概括
    在这里插入图片描述

    简单来说,内核就是为操作系系统提供驱动、内存管理、网络、IO等功能的软件代码

    二、内核分类

    1.宏内核

    内核的功能都集中在一起,运行在内核进程中,模块之间的交互直接通过方法调用

    2.微内核

    微内核中,内核只提供最核心的功能,如任务调度、内存管理,其他模块都被移除内核,运行在不同进程,这样即使某一个模块出现问题,只要重启该进程即可;但是该种做法需要使用IPC作为进程间通信的方式,进程间的效率较低

    3.混合内核

    宏内核和微内核的结合体,混合内核就是集中了两者的特点,让微内核的一些核心模块运行在内核中,从而使得内核效率更高

    4.外内核

    外内核就是把硬件暴露给应用程序,应用程序可以直接访问硬件,外内核对系统提供保护

    展开全文
  • Linux的内核版本是怎么回事

    千次阅读 2021-05-13 14:09:08
    Linux的内核版本编号有点像如下的样子:<2.6.32-642.el6.x86_64主版本.次版本.发布版本-修改版本>虽然编号就是如上的方式来编写,不过依据Linux内核的发展历程,内核版本的定义有点不太相同。Linux的内核版本...

    Linux的内核版本编号有点像如下的样子:

    <

    2.6.32-642.el6.x86_64

    主版本.次版本.发布版本-修改版本

    >

    虽然编号就是如上的方式来编写,不过依据Linux内核的发展历程,内核版本的定义有点不太相同。

    bad64f4eb67cd8bd4670b416f8faf246.pngLinux的内核版本

    奇数、偶数版本分类

    在2.6x版本以前,托瓦斯将内核的发展方向分为两类,并根据这两类内核的发展分别给予不同的内核编号,那就是:

    主、次版本为奇数:开发中版本

    如2.5.xx,这种内核版本主要用于测试与发展新功能,所以通常这种版本仅有内核开发工程师会使用。如果有新增的内核程序代码,会加到这种版本当中,等到很多工程师测试没问题后,才加入下一版本的稳定内核中;

    主、次版本为偶数:稳定版本

    如2.6.xx,等到内核功能发展成熟后会加到这类版本中,主要用在一般家庭计算机以及企业版本中,重点在于提供一个用户相对稳定的Linux操作环境平台。

    至于发布版本则是在主、次版本架构不变的情况下,新增的功能累积到一定程度后新发布的内核版本。而由于Linux 的内核是使用CPL的授权,因此大家都能够进行内核程序代码的修改。因此,如果你有针对一个版本的内核修改过的部分程序代码,那么这个被修改过的新内核版本就可以加上所谓的修改版本。

    fea19ab4025bab14d673a103a8a6e435.pngLinux内核

    主线版本、长期维护版本

    不过,这种奇数、偶数的编号格式在3.0版本推出之后就不再使用了。从3.0版本开始,内核主要依据主线版本来开发,开发完毕会往下一个版本进行。例如3.10版本就是3.9的架构下继续开发出来的新线版本来开发,通常新一版的主线版本在2-3个月会被提出,之所以会有新的主线版本,是因为加入新功能之故。现在最新的主线版本已经是4.7版了。

    而旧的版本在新的版本出现之后,会有两种机制来处理。一种机制为结束开发,也就是该程序代码已经结束,不会有继续维护的状态。另外一种机制为保持该版本的持续维护,也就是长期维护版本。例如3.10也就是一个长期维护版本,这个版本的程序代码会被持续维护很长时间,若程序代码有bug或其他问题,内核程序维护者会持续进行程序代码的更新维护。

    所以,如果你想要使用Linux内核来开发你的系统,那么当然要选择长期支持的版本才行。要判断你的Linux内核是否为长期支持的版本,可以使用“uname -r”来查看内核版本,然后对照下列链接来了解其对应值。

    e1fafe13565127d5e86cd7c81130319e.png

    Linux内核版本与Linux发行版本

    Linux内核版本与发行版本的版本并不相同,很多朋友常常上网问到:“我的Linux是7.x版,请问……”之类的留言,这是不对的提问方式,因为所谓的Linux版本指的应该是内核版本,而目前最新的内核版本应该是4.7.2(2016/08)才对,并不会有7.x的版本出现。

    你常用的Linux系统则应该说明为发行版。因此,如果以CentOS这个发行版来说,你应该说:“我用的Linux是CentIS这个发行版,版本为7.x,请问……”才对。

    今天就讲到这里,下一节继续讲Linux发行版本。

    举报/反馈

    展开全文
  • 用户空间和内核空间是什么

    千次阅读 2019-03-30 09:00:00
    real:程序从开始运行到结束的全部时间,这是用户能感知到的时间,包括 CPU 切换去执行其他任务的时间。 user:程序在 User space 执行的时间 sys:程序在 Kernel space 执行的时间 user和sys之和,一般情况下,应该...
  • Linux内核获取系统时间

    千次阅读 2020-04-24 10:02:28
    在Linux内核中,常常使用do_gettimeofday()函数来得到精确的系统运行时间,尤其在嵌入式中非常常见。 很多程序运行,不需要获取到年月日等信息,但是需要获取高精度的系统时间,可以使用这个函数。 函数功能和C...
  • 鸿蒙系统的微内核什么

    万次阅读 多人点赞 2019-08-27 23:15:50
    ​最近华为高调发布了鸿蒙操作系统(Harmony OS),基于微内核的全场景分布式系统,可以按需扩展,低延时,实现更广泛的系统安全。按照发布会的PPT来看,鸿蒙OS有三层架构,第一层是微内核,第二层是基础服务,第三层...
  • 什么是内核,看这一篇就够了

    千次阅读 多人点赞 2021-07-08 10:25:24
    内核是将服务转移到进程上的一种内核模式。宏内核是一种传统的内核结构,它将进程管理,内存管理等各项服务功能都放到内核中去,通常用在通用式的内核上,如unix,linux等。 两个系统的内核是通过进程的创建FORK...
  • Jupyter notebook的内核什么?Ipython

    千次阅读 2019-12-09 10:13:06
    Ipython! Ipython! Ipython! 所以在Jupyter notebook能够使用Ipython的如: ...%timeit:获得程序执行时间 %paste:获取剪切板文件并执行,最好用%cpaste,可通过Ctrl+C中断 等魔法函数,而这些...
  • Linux 内核和 Windows 内核什么区别?

    万次阅读 多人点赞 2021-02-20 09:46:29
    对于服务器使用的操作系统基本上都是 Linux,而且内核源码也是开源的,任何人都可以下载,并增加自己的改动或功能,Linux 最大的魅力在于,全世界有非常多的技术大佬为它贡献代码。 这两个操作系统各有千秋,不分...
  • 什么是内核态和用户态

    千次阅读 2021-05-18 16:05:41
    总的来说,操作系统为了保证安全,不混乱,把CPU分成了特权模式和用户模式,也就是内核态和用户态,在操作敏感地带时,只能由内核操作,或者用户向内核请求,内核操作完了传给用户,也就是说用户的操作是受限的,仅...
  • 什么是linux内核?包括哪些模块?

    千次阅读 2020-02-04 22:06:54
    完成控制工作的软件就称为操作系统,在 Linux 的术语中被称为"内核"。 Linux 内核包含五大子模块 1、内管管理 内存管理主要完成是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存分配...
  • linux内核编译步骤

    千次阅读 2021-05-13 00:47:31
    linux内核编译步骤对于linux新手来说,编译内核相对有一些难度,甚至不知道如何入手,我通过在网上收集这方面的资料,最终编译成功.现在我归纳了一下,写出这一篇还算比较详细的步骤,希望能对各位新手有一些帮助。1...
  • 内核最近微内核的概念常常被大家提及,同时还有Google Fuchisa这样的微内核新星,这里让我们一起来认识下微内核吧。背景庞大的UNIX家族计算机技术在二战后快速发...
  • 操作系统和内核什么区别?

    千次阅读 多人点赞 2021-11-28 10:39:37
    看这篇就够了1 什么是内核2 什么是操作系统?3 操作系统和内核的区别? 1 什么是内核 内核是操作系统的核心。内核是操作系统执行的第一道程序,被率先加载到内存中开始系统行为。内核始终保持在主内存中直到系统被...
  • Linux内核发布时间

    千次阅读 2017-12-14 14:13:15
    有了这个Linux内核版本发布时间表(0.00到3.19,当然没有包含全部的版本),大家就可以看看自己用的版本是何时发布的了!做内核维护查看相关patch log时大致做个参考。 版本号 时间 发展史 0.001991.2-4两个进程分别...
  • linux内核获取当前系统时间

    千次阅读 2018-10-28 17:38:12
    获取linux内核的系统时间操作方法网上有,大多千篇一律,照着网上的做法,就会产生错误,首先是获取linux内核的系统时间: 参考: http://lhsblog01.blog.163.com/blog/static/10200451920101192410981/ 在这样一...
  • linux 内核时间打印

    千次阅读 2018-04-13 10:37:13
    struct timespec ts; ts = current_kernel_time(); printk(KERN_ALERT "i=%d, channel=%d, %ld %ld\n", i, channel, ts.tv_sec, ts.tv_nsec);.../*获取时间*/ do_gettimeofday(&amp;tv); printk(KERN_...
  • 谈华为鸿蒙内核和操作系统

    千次阅读 2021-05-12 18:09:35
    作者 | 陆首群谈到华为自研鸿蒙内核和操作系统,从华为透漏出来的信息来看,有点自相矛盾、扑朔迷离!我曾说过:真真假假,虚虚实实!这里有技术原因,也有外部原因。一开始(大概是 2016 年左右),华为的说法:其自...
  • ARM内核和架构都是什么意思?内核和架构的关系是什么?比如ARMv7架构,这个架构指的是什么? 1.ARM内核:从ARM7、ARM9到Cortex-A7、A8、A9、A12、A15再到Cortex-A53、A57等,总之不同版本 ARM 有不同的想法。比如为...
  • 什么是用户态和内核态 Kernel 运行在超级权限模式(Supervisor Mode)下,所以拥有很高的权限。按照权限管理的原则,多数应用程序应该运行在最小权限下。因此,很多操作系统,将内存分成了两个区域: 内核空间...
  • Linux | 为什么用户态和内核态的切换耗费时间

    千次阅读 多人点赞 2019-04-01 13:41:16
    经过编译,synchronized标注的函数会加一个读写锁,一般不推荐使用,因为加锁解锁设计到内核态与用户态的转换,有时转化耗时比函数体执行时间还长,所以不推荐使用。 这个观点在学操作系统的时候作为常识被认知,那...
  • 什么是内核? 微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。内核只提供最基础的服务,比如多进程调度、多进程通信(IPC)等。其中进程通信是作为...
  • 什么是内核架构设计?

    千次阅读 热门讨论 2020-12-04 13:05:14
    关于微内核架构设计现在比较热,听起来好像是操作系统内核相关的,作为Java程序员,操作系统内核那么遥远的事情,好像和我们没有什么关系。但是如果我说微内核其实就是插件化(Plug-in)架构,你一定会一脸疑惑,“你...
  • Linux内核时间获取

    千次阅读 2015-05-25 15:55:36
    内核一般通过jiffies值来获取当前时间。尽管该数值表示的是自上次系统启动到当前的时间间隔,但因为驱动程序的生命期只限于系统的运行期 (uptime),所以也是可行的。驱动程序利用jiffies的当前值来计算不同事件间的...
  • (一)浏览器的内核 a、 IE(IE浏览器) : trident 内核 -ms- b、 Firefox(火狐浏览器) : gecko 内核 -moz- c、 Safari(苹果浏览器) :webkit 内核 -webkit- d、 Opera(欧朋浏览器):以前是 presto...
  • 说说微内核与宏内核

    千次阅读 2021-05-11 14:10:09
    内核的概念与宏内核的概念是相互对立的。宏内核,一般是将系统的主要核心组件全部在内核实现。例如,内存管理器、进程管理器和I/O管理器等。可以想象,这样设计的内核各组件之间的关联很大,也就是常说的耦合性很...
  • 用户态和内核态的切换耗费时间的原因 总的来说,就是线程切换或者加锁解锁都是因为需要用户态和内核态的切换,从而导致的开销大。 应用程序的执行需要依托内核提供的资源,包括CPU、存储、IO等,因此内核提供了一个...
  • 什么是内核?   微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。内核只提供最基础的服务,比如多进程调度、多进程通信(IPC)等。其中进程...
  • 本文是由字节跳动系统部 STE 团队出品的“kernel trace tools”系列文章之一,以介绍团队自研多类延迟问题追踪工具。在实际工作中,会遇到由于内核态不调度而引发的高网络延迟...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 658,898
精华内容 263,559
热门标签
关键字:

内核时间是什么