精华内容
下载资源
问答
  • 内核时间子系统的配置

    千次阅读 2016-06-02 13:26:30
    内核中的时间子系统主要向上层提供两种功能,一个就是时间功能,另一个就是timer定时器功能。时间功能: 时间功能是由内核中的timekeeper模块来负责维护,该模块需要clocksource的支持。内核中的模块划分为如下: ...

    内核中的时间子系统主要向上层提供两种功能,一个就是时间功能,另一个就是timer定时器功能。

    时间功能:
    时间功能是由内核中的timekeeper模块来负责维护,该模块需要clocksource的支持。内核中的模块划分为如下:
    Timekeeper—>clocksource—>hardware

    定时器功能:
    从原理上说,定时器需要有一个定期到来的tick来驱动它运行,每个tick到来时检查一下定时器是否到时,由此来实现定时器的功能。所以定时器的实现可以分为tick device设备和基于tick device的上层timer定时器实现。在内核中的模块划分如下所示:
    timer—>tick device—>clockevent—>hardware

    基于tick device的timer定时器还分为两种类型,一种是低精度timer,一种是高精度timer。
    低精度timer是旧的内核中的实现,一直延续至今,也就是我们熟悉的基于jiffies系统滴答来实现的,旧的内核中只有这种定时器实现。
    高精度timer是为了满足新的需求而诞生的hrtimer。高精度基本可以满足任何情况下的需求了,但是由于历史原因低精度timer不能直接从内核中删除,必须保持兼容性。
    一个CPU内可能有多个local clock硬件,但是只会有一个被设置为该CPU的tick设备,每个CPU有且只有一个tick设备。

    内核配置

    1、通用clock source和clock event的内核配置

    (1)clock event是为tick设备提供支持的模块,它分为了新版和旧版两种架构。新架构采用的是通用模型,旧架构采用的是平台相关的实现。
    相关的配置项为:CONFIG_GENERIC_CLOCKEVENTS和CONFIG_GENERIC_CLOCKEVENTS_BUILD。
    如果配置了这两个选项,就会使用新的时间子系统的构架,如果不配置,将使用旧的时间子系统架构。 这一项的配置一般是在arch中选择的。比如arch/arm/Kconfig中,而其余的需要根据情况在menuconfig中配置,对应的Kconfig为kernel/kernel/time/Kconfig。

    arch/arm/Kconfig
    config ARCH_OMAP1
        bool "TI OMAP1"
        depends on MMU
        select ARCH_HAS_CPUFREQ
        select ARCH_HAS_HOLES_MEMORYMODEL
        select ARCH_OMAP
        select ARCH_REQUIRE_GPIOLIB
        select CLKDEV_LOOKUP
        select CLKSRC_MMIO
        select GENERIC_CLOCKEVENTS---选择通用时间框架
        select GENERIC_IRQ_CHIP
        select HAVE_CLK
        select HAVE_IDE
        select IRQ_DOMAIN
        select NEED_MACH_IO_H if PCCARD
        select NEED_MACH_MEMORY_H
        help
          Support for older TI OMAP1 (omap7xx, omap15xx or omap16xx)
    

    如上所示,定义ARCH_OMAP1的时候就已经select GENERIC_CLOCKEVENTS作为时间子系统的框架。

    (2)clocksource是为timekeeper提供支持的模块,目前的内核都是使用新的通用框架。不过为了兼容性考虑,kernel也保留了CONFIG_ARCH_USES_GETTIMEOFFSET这个配置项.

    2、tick device的配置

    如果选择了新的时间子系统的软件架构(配置了CONFIG_GENERIC_CLOCKEVENTS),那么内核会打开Timers subsystem的配置选项,主要是和tick以及高精度timer配置相关。

    tick相关的配置:

    CONFIG_HZ_PERIODIC
    

    无论何时,都启用周期性的tick,即便是在系统idle的时候。

    CONFIG_NO_HZ_IDLE
    

    Idle dynticks system (tickless idle)。在系统idle的时候,停掉tick。使能该选项会自动使能CONFIG_NO_HZ_COMMON选项。

    CONFIG_NO_HZ_FULL
    

    Full dynticks system (tickless)。即便在非idle的状态下,也就是说cpu上还运行在task时,也可能会停掉tick,这个选项和实时应用相关。使能该选项会自动使能CONFIG_NO_HZ_COMMON选项。

    上面的三个选项只能是配置其一,上面描述的是新的内核配置方法。对于旧的内核,只有CONFIG_NO_HZ一个配置项,用来配置idle dynticks system(非idle时有周期性tick,idle时无周期性tick),为了兼容旧的系统,新的内核仍然支持了这个选项。

    除此之外还有一个用来配置tick模式的选项:

    CONFIG_TICK_ONESHOT
    

    如果配置了这个选项,就决定了系统中所有的tick设备都是oneshot mode,否则就是periodic mode。
    当配置了CONFIG_NO_HZ_COMMON或者CONFIG_HIGH_RES_TIMERS的时候,这个选项就会一起被配置上,也就是说采用了dynticks或者hrtimer的系统中,它的tick设备模式必须是oneshot类型的。

    3、timer模块的配置

    CONFIG_HIGH_RES_TIMERS
    

    和高精度timer相关的配置只有一个的配置项。如果配置了高精度hrtimer,那么就会自动配置上CONFIG_TICK_ONESHOT,表示系统只支持one-shot类型的tick device。

    4、 time配置示例

    选择一个时间子系统的构架:
    (1)新的通用时间子系统软件框架(配置了CONFIG_GENERIC_CLOCKEVENTS)
    (2)传统时间子系统软件框架(不配置CONFIG_GENERIC_CLOCKEVENTS,配置CONFIG_ARCH_USES_GETTIMEOFFSET)
    除非维护一个旧的系统,否则建议用新的通用时间子系统框架了,这时候可能的配置包括如下几种情况:
    (1)使用低精度timer和不停的tick(HZ_PERIODIC)
    这种是旧的处理方式
    (2)使用低精度timer和dynamic tick(CONFIG_NO_HZ_IDLE)
    (3)使用高精度timer和不停的tick(HZ_PERIODIC)
    (4)使用高精度timer和dynamic tick(CONFIG_NO_HZ_IDLE)
    这种是时下较流行的配置
    注:上面描述的dynamic tick指的是Idle dynticks system。我们不考虑Full dynticks system的情况。
    采用了dynticks或者hrtimer的系统中,它的tick设备模式必须是oneshot类型的,也就是说上面4种情况,只有第1种情况下的tick 是周期模式的,其他三种都是oneshot mode。

    展开全文
  • 什么是内核

    千次阅读 2019-08-09 15:24:03
    内核(英语:Microkernel,μ-kernel),又称为微核心,是一种内核的设计架构,由一群尽可能将数量最小化的软件程序组成,它们负责提供、实现一个操作系统所需要的各种机制与功能。这些最基础的机制,包括了底层...

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

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

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

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

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

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

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

    展开全文
  • 什么是内核

    千次阅读 2007-10-25 22:19:00
    它是为众多应用程序提供对计算机硬体的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬体操作多长时间。直接对硬体操作是非常覆杂的,所以内核通常提供一种硬体抽象的方法来完成...
    在计算机科学中,内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬体的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬体操作多长时间。直接对硬体操作是非常覆杂的,所以内核通常提供一种硬体抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。 
    

    严格地说,内核并不是计算机系统中必要的组成部分。程序可以直接地被调入计算机中执行,这样的设计说明了设计者不希望提供任何硬件抽象和操作系统的支持,它常见于早期计算机系统的设计中。最终,一些辅助性程序,例如程序加载器和调试器,被设计到机器核心当中,或者固化在只读存储器里。这些变化发生时,操作系统内核的概念就渐渐明晰起来了。 
    展开全文
  • 什么是Windows内核编程

    千次阅读 2018-11-09 02:54:38
    什么是Windows内核编程

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   
    什么是Windows内核编程?

    上述文字由《天书夜读:从汇编语言到Windows内核编程》作者  谭文  提供

        Linux的内核编程大家都是比较熟悉的。而Windows内核编程则不大为一般读者所熟悉。常常有这样的问题:

        “你又没有Windows的代码,你如何搞内核编程?”

        “除了微软的人,难道还有人做Windows内核吗?”

        “Windows内核编程有用吗?”

        其实Windows内核编程不但有用,而且常用。很多我们每天都使用的软件,就毫无疑问的使用了Windows内核编程的技术。最典型的就是实时监控的杀毒软件。此外还有防火墙、虚拟光驱、以及90%的驱动程序。这些程序的有一个共同的特点,他们的一部分组件,是作为Windows的一部分,能对Windows上运行的所有的应用程序起作用。

        因此内核编程的应用,往往给传统软件带来更强的功能,实现技术上的飞跃。

        举个例子。我们常常听说,对文件进行加密,可以使文档更加安全。对文件加密并不需要任何内核组件。我们可以写一个应用程序,读入文件,加密数据,然后重写为一个加密文件。解密也可以同样如此。

        但是实际上这并不满足一般的用户需求。对一个公司的员工来说,那些“重要的文档”很可能就是每天工作所用的文件。想象一下,他必须要每天从服务器上下载加密的文件,然后用解密工具解密。然后用Office开始工作。工作完毕后,用加密工具加密,再上传,然后删除工作文档。且不说大部分时间文档是以解密的方式保存在硬盘上的不安全性,这个工作流程是可以接受的吗?没有人会接受的。

        比较“人性化”的方式就是让Office可以直接打开已经加密的文档。保存的时候,直接就保存成加密的文档。硬盘上,这个文档始终是加密的。而且对合法的用户透明。对非法的用户,则只能看见密文,从而无法编辑也无法阅读。而且也不仅仅Office,还有AutoCAD、Visual Studio、Photoshop等等用户可能用于编辑机密文件的所有的工具。这是可以实现的吗?如果我们不能去修改Office和其他的工作软件。

        这当然是可以实现的。既然我们编写Windows内核程序,当然可以让Windows的文件系统从硬盘读取文件的时候,对特定的进程进行特别的解密。等这些软件读取到数据的时候,它们读到的已经是正常的数据了。这个过程和实时扫描病毒的原理是一样的,使用一个文件过滤驱动程序。这就是读者可能已经听到过的文件透明加密技术。

        在和《天书夜读:从汇编语言到Windows内核编程》一书同一系列的《寒江独钓——Windows内核编程与信息安全》(预计明年出版)中,对键盘过滤、硬盘过滤、文件过滤、网络过滤等安全相关的内核编程,都有详尽的讲解和例子。

        内核编程的另一个特点是:这些代码运行在R0级。R0级别是最高特权级别。对CPU有完全控制的能力。这非常的适合一些安全软件,当然也适合做破坏的工作。因为内核程序有最高(也就是根)权限,这样的技术在安全领域(或者破坏领域)被称为rootkit技术。rootkit技术是当前安全领域最热门的技术之一。

        许多病毒使用了rootkit技术。用来隐藏病毒文件,窃取密码、发送攻击包等等。rootkit病毒感染后极难清除,在感染前提前防范是最有效的办法。

        Windows内核确实没有公开源代码。但是MS提供Windows内核程序的开发包:WDK。WDK实际上主要用于开发驱动程序。而驱动程序基本上都是内核程序。WDK提供的头文件以及部分源代码,实际上就是Windows内核的代码的一部分。有部分驱动程序(比如FAT32文件系统)的代码是完全公开的。我们也可以在这里看到Windows内核开发者的代码风格。同时,微软也提供了所有Windows版本的符号表在网上供研究者下载。并提供了功能无比强大的调试器WinDbg。有了它们,你就可以轻松的调试Windows内核了。无论是你自己写的代码的部分,还是Windows内核开发者们编写的部分。虽然看到的是汇编语言,但是函数名和全局变量名都是存在的。而且,所有的这些(WDK、WinDBG,符号表)都是免费的。

        那您还在等什么呢?欢迎进入Windows内核编程的世界!

    13164110_200810161135191.jpg本书购买地址:http://www.china-pub.com/209258


    【书 名】天书夜读:从汇编语言到Windows内核编程
    【作 者】 谭文,邵坚磊 著
    【ISBN】 978-7-121-07339-7
    【出版社】 电子工业出版社
    【出版日期】2008年12月
    【宣传语】
    从貌似天书的汇编代码中,一探Windows底层的核心实现。
    在开发中出现的问题,能从Windows自身找到答案!
                

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • Linux内核时间获取

    千次阅读 2015-05-25 15:55:36
    内核一般通过jiffies值来获取当前时间。尽管该数值表示的是自上次系统启动到当前的时间间隔,但因为驱动程序的生命期只限于系统的运行期 (uptime),所以也是可行的。驱动程序利用jiffies的当前值来计算不同事件间的...
  • Linux 内核和 Windows 内核什么区别?

    千次阅读 多人点赞 2021-02-20 09:46:29
    对于服务器使用的操作系统基本上都是 Linux,而且内核源码也是开源的,任何人都可以下载,并增加自己的改动或功能,Linux 最大的魅力在于,全世界有非常多的技术大佬为它贡献代码。 这两个操作系统各有千秋,不分...
  • 内核最近微内核的概念常常被大家提及,同时还有Google Fuchisa这样的微内核新星,这里让我们一起来认识下微内核吧。背景庞大的UNIX家族计算机技术在二战后快速发...
  • 鸿蒙系统的微内核什么

    万次阅读 多人点赞 2019-08-27 23:15:50
    ​最近华为高调发布了鸿蒙操作系统(Harmony OS),基于微内核的全场景分布式系统,可以按需扩展,低延时,实现更广泛的系统安全。按照发布会的PPT来看,鸿蒙OS有三层架构,第一层是微内核,第二层是基础服务,第三层...
  • 有了这个Linux内核版本发布时间表(0.00到3.19,当然没有包含全部的版本), 大家就可以看看自己用的版本是何时发布的了!做内核维护查看相关patch log时大致做个参考。 版本号 时间 发展史 0.00 1991....
  • linux内核时间管理(一) : 时间概念和延迟操作
  • 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(&tv); printk(KERN_...
  • Linux内核启动显示时间信息

    千次阅读 2017-05-13 16:31:02
    它在打印内核启动信息之前都会先打印一个时间信息出来! 下面来看看怎么配置Linux内核: 首先在Linux内核文件下,执行make menuconfig 命令,进入配置界面。 点击Kernel hacking选项,选择Show timing
  • 什么是内核架构设计?

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

    千次阅读 2019-08-05 16:52:08
    ktime时间函数 基于ktime_t格式的时间 ktime_t ktime_get(void); 获取基于CLOCK_MONOTONIC的当前时间,返回ktime_t格式的数据类型。 ktime_t ktime_get_boottime(void); 获取基于CLOCK_BOOTTIME的当前时间,返回...
  • 用户空间和内核空间是什么

    千次阅读 2019-03-30 09:00:00
    real:程序从开始运行到结束的全部时间,这是用户能感知到的时间,包括 CPU 切换去执行其他任务的时间。 user:程序在 User space 执行的时间 sys:程序在 Kernel space 执行的时间 user和sys之和,一般情况下,应该...
  • 后者又称为内核支持的线程或轻量级进程.用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。内核线程: 由操作...
  • Linux内核学习笔记(1)—— 什么是Linux内核? 1. 什么是操作系统? 操作系统是负责完成整个系统中最基本功能和系统管理,包括内核、设备驱动程序、启动引导程序、命令行shell或其它种类的用户界面、基本的文件...
  • 下面的函数get_time_str实现了在内核中获取本地时间的功能。 他首先获取utc时间,然后根据系统的时区timezone转换成本地时间, 最后将时间以“2014-11-02 21:14:08”的字符串的形式输出到output缓冲区中。 函数的...
  • ARM内核和架构都是什么意思?内核和架构的关系是什么?比如ARMv7架构,这个架构指的是什么? 1.ARM内核:从ARM7、ARM9到Cortex-A7、A8、A9、A12、A15再到Cortex-A53、A57等,总之不同版本 ARM 有不同的想法。比如为...
  • 很多朋友提问:ARM内核和架构都是什么意思?内核和架构的关系是什么?比如ARMv7架构,这个架构指的是什么?小编选出了几个精彩回答!希望对嵌友们在选择设计电路时有所帮助~ 1.ARM内核:从ARM7、ARM9到Cortex-A7、A8、...
  • 内核函数时间获得

    千次阅读 2018-07-25 13:26:59
    功能:此函数用于返回当前内核时间,该时间是距离1970开始的秒和纳秒 返回值: timespec结构体包含秒和纳秒 头文件: #include void getnstimeofday(struct timespec *tv) 功能:此函数用于返回当前内核时间,该时间...
  • 什么是linux内核?包括哪些模块?

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

    千次阅读 2014-06-01 00:42:52
    linux内核
  • linux内核版本的分类 Linux内核版本有两种:稳定版和开发版 ,Linux内核版本号由3组数字组成:第一个组数字.第二组数字.第三组数字 第一个组数字:目前发布的内核主版本。 第二个组数字:偶数表示稳定版本;...
  • Linux内核版本发布时间整理

    千次阅读 2015-05-30 23:39:49
    有了这个Linux内核版本发布时间表(0.00到3.19,当然没有包含全部的版本), 大家就可以看看自己用的版本是何时发布的了! 或许有同学会大吃一惊,哇(⊙0⊙)我用的版本10年前就有了啊! 发展史我也没写全,有时间和...
  • Linux | 为什么用户态和内核态的切换耗费时间

    千次阅读 多人点赞 2019-04-01 13:41:16
    经过编译,synchronized标注的函数会加一个读写锁,一般不推荐使用,因为加锁解锁设计到内核态与用户态的转换,有时转化耗时比函数体执行时间还长,所以不推荐使用。 这个观点在学操作系统的时候作为常识被认知,那...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 582,234
精华内容 232,893
关键字:

内核时间是什么