精华内容
下载资源
问答
  • Linux 内核和 Windows 内核什么区别?

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

    微信搜索「小林coding」,更多图解系、网络文章等你来撩哦!

    Windows 和 Linux 可以说是我们比较常见的两款操作系统的。

    Windows 基本占领了电脑时代的市场,商业上取得了很大成就,但是它并不开源,所以要想接触源码得加入 Windows 的开发团队中。

    对于服务器使用的操作系统基本上都是 Linux,而且内核源码也是开源的,任何人都可以下载,并增加自己的改动或功能,Linux 最大的魅力在于,全世界有非常多的技术大佬为它贡献代码。

    这两个操作系统各有千秋,不分伯仲。

    操作系统核心的东西就是内核,这次我们就来看看,Linux 内核和 Windows 内核有什么区别?


    内核

    什么是内核呢?

    计算机是由各种外部硬件设备组成的,比如内存、cpu、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了,所以这个中间人就由内核来负责,让内核作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。

    内核

    内核有哪些能力呢?

    现代操作系统,内核一般会提供 4 个基本能力:

    • 管理进程、线程,决定哪个进程、线程使用 CPU,也就是进程调度的能力;
    • 管理内存,决定内存的分配和回收,也就是内存管理的能力;
    • 管理硬件设备,为进程与硬件设备之间提供通信能力,也就是硬件通信能力;
    • 提供系统调用,如果应用程序要运行更高权限运行的服务,那么就需要有系统调用,它是用户程序与操作系统之间的接口。

    内核是怎么工作的?

    内核具有很高的权限,可以控制 cpu、内存、硬盘等硬件,而应用程序具有的权限很小,因此大多数操作系统,把内存分成了两个区域:

    • 内核空间,这个内存空间只有内核程序可以访问;
    • 用户空间,这个内存空间专门给应用程序使用;

    用户空间的代码只能访问一个局部的内存空间,而内核空间的代码可以访问所有内存空间。因此,当程序使用用户空间时,我们常说该程序在用户态执行,而当程序使内核空间时,程序则在内核态执行。

    应用程序如果需要进入内核空间,就需要通过系统调用,下面来看看系统调用的过程:

    内核程序执行在内核态,用户程序执行在用户态。当应用程序使用系统调用时,会产生一个中断。发生中断后, CPU 会中断当前在执行的用户程序,转而跳转到中断处理程序,也就是开始执行内核程序。内核处理完后,主动触发中断,把 CPU 执行权限交回给用户程序,回到用户态继续工作。


    Linux 的设计

    Linux 的开山始祖是来自一位名叫 Linus Torvalds 的芬兰小伙子,他在 1991 年用 C 语言写出了第一版的 Linux 操作系统,那年他 22 岁。

    完成第一版 Linux 后,Linux Torvalds 就在网络上发布了 Linux 内核的源代码,每个人都可以免费下载和使用。

    Linux 内核设计的理念主要有这几个点:

    • MutiTask,多任务
    • SMP,对称多处理
    • ELF,可执行文件链接格式
    • Monolithic Kernel,宏内核
    MutiTask

    MutiTask 的意思是多任务,代表着 Linux 是一个多任务的操作系统。

    多任务意味着可以有多个任务同时执行,这里的「同时」可以是并发或并行:

    • 对于单核 CPU 时,可以让每个任务执行一小段时间,时间到就切换另外一个任务,从宏观角度看,一段时间内执行了多个任务,这被称为并发。
    • 对于多核 CPU 时,多个任务可以同时被不同核心的 CPU 同时执行,这被称为并行。

    SMP

    SMP 的意思是对称多处理,代表着每个 CPU 的地位是相等的,对资源的使用权限也是相同的,多个 CPU 共享同一个内存,每个 CPU 都可以访问完整的内存和硬件资源。

    这个特点决定了 Linux 操作系统不会有某个 CPU 单独服务应用程序或内核程序,而是每个程序都可以被分配到任意一个 CPU 上被执行。

    ELF

    ELF 的意思是可执行文件链接格式,它是 Linux 操作系统中可执行文件的存储格式,你可以从下图看到它的结构:

    ELF 文件格式

    ELF 把文件分成了一个个分段,每一个段都有自己的作用,具体每个段的作用这里我就不详细说明了,感兴趣的同学可以去看《程序员的自我修养——链接、装载和库》这本书。

    另外,ELF 文件有两种索引,Program header table 中记录了「运行时」所需的段,而 Section header table 记录了二进制文件中各个「段的首地址」。

    那 ELF 文件怎么生成的呢?

    我们编写的代码,首先通过「编译器」编译成汇编代码,接着通过「汇编器」变成目标代码,也就是目标文件,最后通过「链接器」把多个目标文件以及调用的各种函数库链接起来,形成一个可执行文件,也就是 ELF 文件。

    那 ELF 文件是怎么被执行的呢?

    执行 ELF 文件的时候,会通过「装载器」把 ELF 文件装载到内存里,CPU 读取内存中的指令和数据,于是程序就被执行起来了。

    Monolithic Kernel

    Monolithic Kernel 的意思是宏内核,Linux 内核架构就是宏内核,意味着 Linux 的内核是一个完整的可执行程序,且拥有最高的权限。

    宏内核的特征是系统内核的所有模块,比如进程调度、内存管理、文件系统、设备驱动等,都运行在内核态。

    不过,Linux 也实现了动态加载内核模块的功能,例如大部分设备驱动是以可加载模块的形式存在的,与内核其他模块解藕,让驱动开发和驱动加载更为方便、灵活。

    分别为宏内核、微内核、混合内核的操作系统结构

    与宏内核相反的是微内核,微内核架构的内核只保留最基本的能力,比如进程调度、虚拟机内存、中断等,把一些应用放到了用户空间,比如驱动程序、文件系统等。这样服务与服务之间是隔离的,单个服务出现故障或者完全攻击,也不会导致整个操作系统挂掉,提高了操作系统的稳定性和可靠性。

    微内核内核功能少,可移植性高,相比宏内核有一点不好的地方在于,由于驱动程序不在内核中,而且驱动程序一般会频繁调用底层能力的,于是驱动和硬件设备交互就需要频繁切换到内核态,这样会带来性能损耗。华为的鸿蒙操作系统的内核架构就是微内核。

    还有一种内核叫混合类型内核,它的架构有点像微内核,内核里面会有一个最小版本的内核,然后其他模块会在这个基础上搭建,然后实现的时候会跟宏内核类似,也就是把整个内核做成一个完整的程序,大部分服务都在内核中,这就像是宏内核的方式包裹着一个微内核。


    Windows 设计

    当今 Windows 7、Windows 10 使用的内核叫 Windows NT,NT 全称叫 New Technology。

    下图是 Windows NT 的结构图片:

    Windows NT 的结构

    Windows 和 Linux 一样,同样支持 MutiTask 和 SMP,但不同的是,Window 的内核设计是混合型内核,在上图你可以看到内核中有一个 MicroKernel 模块,这个就是最小版本的内核,而整个内核实现是一个完整的程序,含有非常多模块。

    Windows 的可执行文件的格式与 Linux 也不同,所以这两个系统的可执行文件是不可以在对方上运行的。

    Windows 的可执行文件格式叫 PE,称为可移植执行文件,扩展名通常是.exe.dll.sys等。

    PE 的结构你可以从下图中看到,它与 ELF 结构有一点相似。

    PE 文件结构


    总结

    对于内核的架构一般有这三种类型:

    • 宏内核,包含多个模块,整个内核像一个完整的程序;
    • 微内核,有一个最小版本的内核,一些模块和服务则由用户态管理;
    • 混合内核,是宏内核和微内核的结合体,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序;

    Linux 的内核设计是采用了宏内核,Window 的内核设计则是采用了混合内核。

    这两个操作系统的可执行文件格式也不一样, Linux 可执行文件格式叫作 ELF,Windows 可执行文件格式叫作 PE。


    巨人的肩膀
    1. https://en.wikipedia.org/wiki/Monolithic_kernel
    2. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
    3. https://en.wikipedia.org/wiki/Windows_NT
    展开全文
  • Linux内核开发-入门篇

    千次阅读 2019-01-09 19:17:18
    如何入门 Linux 内核 首先,让我们看看如何获取、构建并...在我们开始对 Linux 内核做些什么之前,我们首先需要先获取它。根据你目的的不同,有两种方式可以做到这一点。如果你只是想更新一下你电脑上的 Linux 内...

    如何入门 Linux 内核

    首先,让我们看看如何获取、构建并运行 Linux 内核。你可以通过两种方式来运行你自己定制的内核:

    在虚拟机里运行 Linux 内核;
    在真实的硬件上运行 Linux 内核。
    

    我会对这两种方式都展开描述。在我们开始对 Linux 内核做些什么之前,我们首先需要先获取它。根据你目的的不同,有两种方式可以做到这一点。如果你只是想更新一下你电脑上的 Linux 内核版本,那么你可以使用特定于你 Linux 发行版的命令。

    快捷键

    • 加粗 Ctrl + B
    • 斜体 Ctrl + I
    • 引用 Ctrl + Q
    • 插入链接 Ctrl + L
    • 插入代码 Ctrl + K
    • 插入图片 Ctrl + G
    • 提升标题 Ctrl + H
    • 有序列表 Ctrl + O
    • 无序列表 Ctrl + U
    • 横线 Ctrl + R
    • 撤销 Ctrl + Z
    • 重做 Ctrl + Y

    Markdown及扩展

    Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]

    使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。

    本编辑器支持 Markdown Extra ,  扩展了很多好用的功能。具体请参考Github.

    表格

    Markdown Extra 表格语法:

    项目价格
    Computer$1600
    Phone$12
    Pipe$1

    可以使用冒号来定义对齐方式:

    项目价格数量
    Computer1600 元5
    Phone12 元12
    Pipe1 元234

    ###定义列表

    Markdown Extra 定义列表语法:
    项目1
    项目2
    : 定义 A
    : 定义 B

    项目3

    定义 C

    定义 D

    定义D内容

    代码块

    代码块语法遵循标准markdown代码,例如:

    @requires_authorization
    def somefunc(param1='', param2=0):
        '''A docstring'''
        if param1 > param2: # interesting
            print 'Greater'
        return (param2 - param1 + 1) or None
    class SomeClass:
        pass
    >>> message = '''interpreter
    ... prompt'''
    

    ###脚注
    生成一个脚注1.

    目录

    [TOC]来生成目录:

    数学公式

    使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.

    • 行内公式,数学公式为: Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN
    • 块级公式:

    x = − b ± b 2 − 4 a c 2 a x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} x=2ab±b24ac

    更多LaTex语法请参考 这儿.

    UML 图:

    可以渲染序列图:

    张三 李四 嘿,小四儿, 写博客了没? 李四愣了一下,说 忙得吐血,哪有时间写。 张三 李四

    或者流程图:

    Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
    • 关于 序列图 语法,参考 这儿,
    • 关于 流程图 语法,参考 这儿.

    离线写博客

    即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。

    用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。

    博客发表后,本地缓存将被删除。

    用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。

    **注意:**虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱

    ##浏览器兼容

    1. 目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
    2. IE9以下不支持
    3. IE9,10,11存在以下问题
      1. 不支持离线功能
      2. IE9不支持文件导入导出
      3. IE10不支持拖拽文件导入


    1. 这里是 脚注内容. ↩︎

    展开全文
  • Linux内核开发工具介绍

    千次阅读 2017-08-08 13:16:00
    这里所说的“Linux内核开发”仅仅是指嵌入式Linux产品开发中内核和驱动相关开发工作,与Linux所领导的内核开发团队的内核开发有很大不同。 俗话说“工欲善其事,必先利其器”,面对几百兆的Linux内核代码...

    进行嵌入式Linux产品开发,往往需要对内核进行裁剪和定制,以满足嵌入式产品的功能和性能需求。本文介绍几种阅读Linux内核源码的工具和方法。

    这里所说的“Linux内核开发”仅仅是指嵌入式Linux产品开发中内核和驱动相关开发工作,与Linux所领导的内核开发团队的内核开发有很大不同。

    俗话说“工欲善其事,必先利其器”,面对几百兆的Linux内核代码,要阅读、查看或者搜索其中的代码,大部分初次接触到Linux内核代码的开发人员,都有无从下手的感觉。下面推荐几个源码阅读和索引工具,能为后续内核开发提供一些便利。

    1、Source Insight

    Source Insight是Windows平台下一款流行度极高的源码阅读和编辑工具。不少Linux开发人员还是习惯于在Windows下进行源码编辑,甚至查看和编辑Linux内核源码,依然在Source Insight中完成。

    说明:Source Insight是一款版权软件,需要自行解决版权问题。

    安装Source Insight软件后,新建一个工程,取名并指定数据存放位置,如图 1.1所示。

    Linux内核开发工具介绍

    图 1.1 新建工程

    Linux内核开发工具介绍

    图 1.2 工程设置

    点击OK按钮,进入工程设置界面,如图 1.2所示。

    然后添加源码。浏览选中Linux内核源码文件夹后,点击“Add Tree”按钮,将内核源码树的全部文件添加到工程中,如图 1.3所示。

    Linux内核开发工具介绍

    图 1.3 添加内核源码

    添加完成,即可在Source Insight中进行源码阅读和编辑了,如图 1.4所示。

    Linux内核开发工具介绍

    图 1.4 在Source Insight中阅读源码

    2、Eclipse

    Eclipse是一个跨平台IDE,既能运行于Windows平台,也能在Linux下运行。不少习惯于图形界面操作的开发人员,在Linux下则习惯于用Eclipse来查看和编辑Linux源码。

    如果仅仅是在Eclipse中查看Linux内核源码,则可以不必事先安装交叉编译器,否则则须事先安装好交叉编译器。

    创建内核源码工程。点击FileàNewàProject,开始创建工程,在工程创建界面选择创建C工程,如图 1.5所示。

    Linux内核开发工具介绍

    点击Next,在C Project界面的Project name栏中填写工程名称,去掉“Use default locaTIon”的勾,点击Browse将LocaTIon设置为Linux内核源码目录,如图 1.6所示。如果不在Eclipse中编译内核,则使用Linux GCC即可,否则请使用安装好的Cross GCC。

    Linux内核开发工具介绍

    图 1.6 导入Linux内核源码

    然后点击Finish,完成Linux内核源码导入,在Eclipse中即可进行代码阅读和编辑了,如图 1.7所示。

    Linux内核开发工具介绍

    图 1.7 在Eclipse中浏览内核源码

    在Eclipse中进行源码跟踪,只需选择函数、变量或者宏定义后按F3即可。更多的操作可在Navigate中找到。

    3、vim+ctags+cscope

    Vi/Vim是一个文本编辑器,在Vim中能高效的实现代码编辑。但Vim的功能不仅仅是一个文本编辑器,借助ctags和cscope的配合,Vim能实现堪比图形IDE环境的源码编辑和阅读功能,在某种程度上甚至比图形IDE更方便。

    Vi/Vim的安装不再介绍了。如果不是通过远程登录在远程服务器上工作,而是在本地桌面系统操作,还可以用gvim启动Vi编辑器。

    l Taglist

    Taglist是Vim的一个源码浏览插件,可从http://www.vim.org网站获得。下载到压缩包后,在本地解压,然后将解压得到目录中的plugin目录复制到~/.vim目录。如果用户主目录下没有.vim目录,则建立一个这样的目录即可。

    l Ctags

    Ctags是一个用于产生tags文件的软件,可以下载源码进行编译安装,在Ubuntu下,可通过apt-get进行安装:

    $ sudo apt-get install exuberant-ctags

    l 源码阅读和跟踪

    进入准备查看的源码所在目录,首先生成tags文件:

    $ ctags -R

    执行时间长短取决于源码数量的多少,执行完毕,在当前目录下可看到一个tags文件。源码越多,执行时间越长,产生的tags文件也越大。

    注意:如果修改了源码,代码行号发生了变化,需要重新生成tags文件。

    (1)查看函数等定义。用Vi/Vim打开一个C文件。若想知道某个函数、变量、结构或者宏定义在什么地方定义,先将光标移动到函数(变量、结构或者宏定义)上,然后按CTRL+]即可。查看后,按CTRL+o可回到原来所在位置。

    (2)查看文件函数列表。打开C文件后,在Vi/Vim的命令状态下输入:TlistToggle(Vi/Vim的命令输入支持补全),在Vi/Vim左边就会出现函数列表侧栏,如图 1.8所示。按CTRL+ww(2次w),可在列表和代码查看区间切换。

    Linux内核开发工具介绍

    图 1.8 Vi/Vim的函数列表侧栏

    如果在本地桌面,用Gvim打开C文件,使用起来比较接近IDE集成环境。用鼠标双击函数即可跳转到函数定义的地方,CTRL+鼠标右键即可回退到原来所在位置。更多实用特性,还需要在实际操作中体验。

    4、LXR

    LXR是Linux Cross Referencer的缩写,是一个比较流行的Linux源码查看工具,当然也不仅仅局限于查看Linux源码。LXR的下载地址为:http://lxr.sourceforge.net,参考该网站的安装说明,很容易在本机搭建一个本地LXR用于源码查看。

    如果不想搭建本地LXR,可以直接浏览已经搭好的LXR网站,推荐两个网站:一个是开源中国网站提供的Linux源码在线阅读http://lxr.oss.org.cn,另一个是http://lxr.free-electrons.com网站,前者速度较快,但是提供的Linux内核版本较少,后者则提供的版本较多。网站提供了源码阅读、关键字搜索和自由文本搜索功能。两者的网页快照分别如图 1.9和图 1.10所示。

    Linux内核开发工具介绍

    图 1.9 lxr.oss.org.cn网页快照

    Linux内核开发工具介绍

    图 1.10 lxr.free-electrons.com网页快照





    本文作者:佚名
    来源:51CTO
    展开全文
  • vscode搭建linux内核开发环境

    千次阅读 2021-02-20 18:13:43
    而且没有原生linux版本,要是想在纯linux环境下进行linux驱动开发,就只能wine+Source insight,而wine版的不好用容易卡死而且cpu占用还高,我就想到用开源跨平台的vscode进行linux内核开发,体验能否和source ...

    vscode在linux下搭建内核驱动开发环境

    一、前言

    Souce insight是一个阅读、开发linux内核驱动模块的好工具,但是Source insight是收费的软件,而且没有原生linux版本,要是想在纯linux环境下进行linux驱动开发,就只能wine+Source insight,而wine版的不好用容易卡死而且cpu占用还高,我就想到用开源跨平台的vscode进行linux内核开发,体验能否和source insight一样好呢?

    二、实践

    经过搜索和自己亲身实践,最后发现vscode+global插件,可以实现和source insight相媲美的体验

    三、准备工作

    • linux内核源代码文件夹
    • linux下安装好vscode

    四、安装global软件包和vscode global插件

    我用的是deepin-linux操作系统,在终端输入apt命令安装global

    sudo apt install global

    Shell

    Copy

    在vscode的插件商店里搜索安装global插件

     

    五、打开linux源码文件夹

    利用vscode的打开文件夹的功能,打开linux内核源码的文件夹

     

    提示无法在这个工作区中监视文件更改,按照网页的提示,修改最大文件监控数就可以了,不改对开发也没什么影响

     

    六、安装c/c++扩展

    随便打开一个c文件,右下角会提示你安装c/c++扩展,点安装就可以自动安装了

     

    安装完毕,又会提示你配置 IntelliSense 设置以帮助查找缺少的标头,点配置即可,这里我配置了一个交叉编译器的地址,这个其实也没什么用,不配置也可以

     

    关闭配置页面,这个页面不配置也不影响,这个时候下面会有问题输出,不用管

     

    七、生成global数据库

    在vscode下Ctrl+Shift+P进入命令行模式,输入gl,选择Global: Rebuild Gtags Database执行

     

    过几分钟生成完毕,就会在linux源码目录下生成GTAGS、GRTAGS、GPATH三个tag数据库文件

     

     

    接着,就可以用F12愉快的跳转定义啦,输入代码的时候也会有给力的代码提示

     

    备注:global的版本要注意

    又备注:目前在使用过程中,有自定义的结构体成员比如u32这种类型的无法识别无法提示的问题,不知大家有无方法解决,可以在下方评论我

    展开全文
  • 学完C语言之后,最终是要应用到某个领域的,比如后端开发,应用开发或者Linux内核开发等。本文将介绍一下Linux内核相关的内容,Linux内核开发是相对比较难的领域,主要是门槛相对较高。虽然门槛较高,但有它的好处,...
  • 使用 Eclipse 搭建 Linux 内核开发环境

    千次阅读 2017-08-02 17:06:54
    正文 ...Linux内核的学习曲线可能陡峭了一点,如果没有点定力的话,是不会有什么进步的。   当把几十MB的tar包下载到本地后,打开方式便成了困扰我的一个问题,前前后后使用过好多工具,但都有一...
  • 如何参与linux内核开发

    千次阅读 2016-05-02 22:43:05
    关于补丁是什么以及如何将它打在不同内核开发分支上的好介绍 内核还拥有大量从代码自动生成的文档。它包含内核内部API的全面介绍以及如何 妥善处理加锁的规则。生成的文档会放在 Documentation/DocBook/目录下...
  • WpfCefBrowser 控件封装了好多浏览器常用的功能函数,比如前进后退等,还支持用C#调用JS函数等好多功能,然后我们就可以根据UI设计师设计的界面进行改造界面了。函数封装截图       本文章根据原作者...
  • 很好的数据库内核系列文章,用简洁的样例描述数据库内核的众多原理。虽然后面优化器的算法难以理解,但是在其他章节我相信你一定也会有收获。 数据库内核杂谈(二):存储“演化论” 数据库内核杂谈(三):索引...
  • linux 内核驱动开发

    千次阅读 2016-03-06 16:23:15
    一、为什么要学习内核? 有些人要学习内核,而有些人则可以不学习它。你如果以后要从事系统研发或驱动开发的话,就要学习内核。 刚刚接触内核,主要学习内核的接口函数。不要深入的去读内核,因为你读也读不懂,内核...
  • windows内核开发(一)环境搭建

    千次阅读 2016-06-06 11:29:17
    因为大部分 Windows驱动程序都...专注于较通用的内核程序的开发,并不介绍针对某种类硬件的,比如声卡、显卡、USB 等的等各种驱动程序的开发。 参考资料: 《寒江独钓:Windows内核编程与信息安全》 《天书夜读-从
  • 树莓派-内核开发-说明 下载代码 编译 替换内核

    千次阅读 多人点赞 2017-11-08 20:31:59
    原文地址:...树莓派运行linux系统,内核代码开源,我们可以自己修改内核代码、编写驱动。 本文介绍如何获取linux内核代码,并完成编译、内核替换。
  • 什么是Windows内核编程

    千次阅读 2018-11-09 02:54:38
    什么是Windows内核编程
  • Linux内核开发常见的函数

    千次阅读 2019-06-18 14:06:05
    做Linux驱动开发经常要使用到内核相关的函数,本篇只要介绍在做驱动开发的过程中用到的内核函数,为以后开发查询提供方便。 本篇覆盖函数如下 copy_from_user与copy_to_user函数 down_interruptible与down函数 ...
  • [14本经典Android开发教程] 8 Linux内核阅读心得体会 读核感悟 2 读核感悟 Linux内核启动 内核的生成 2 读核感悟 Linux内核启动 从hello world说起 3 读核感悟 Linux内核启动 BIOS 5 读核感悟 Linux内核启动 setup...
  • 使用VSCode进行linux内核代码阅读和开发现状新的方法安装与配置1.安装VSCode2.安装Remote - SSH插件3.添加远程主机4.安装clangd5.在远程服务器安装bear6.配置clangd7.触发clangd工作效果遇到的问题总结参考链接 现状...
  • 这是一个好的功能,扩展了操作系统的内核功能,却不需要重新启动系统,是一种动态加载的技术。 特点:动态加载,随时载入,随时卸载,扩展功能 2、内核模块的加载作用  内核模块只是向linux内核预先注册自己,以...
  • Linux内核社区在2016年庆祝了成立二十五周年纪念,许多人来问我们这个项目经久不衰和成功的秘诀。我一般会先笑笑,然后开玩笑地说,我真的不知道已经经历了25年。这个项目一直都面临着分歧和挑战。但是,严肃地说,...
  • webkit内核浏览器

    2016-04-19 11:09:24
    1. 这是一个基于webkit内核的浏览器。它只有简单的功能,直接调用一个html文件。 2. 使用windown sdk封装的webkit浏览器。 3. demo出自 http://blog.csdn.net/x931100537/article/details/39320149 此demo直接调用...
  • C++内核驱动开发笔记<1>

    千次阅读 2018-12-07 14:06:07
    C++内核驱动开发笔记&lt;1&gt;0x1环境0x2代码0x3问题0x4解决 0x1环境 Visual Studio 2017 WDK&amp;Windows SDK: 10.0.17763.0 OS:Windows 7 模板:Kernel Mode Driver,Empty(KDMF) 0x2代码 #include...
  • Linux驱动开发1-内核入门之hello模块

    万次阅读 2018-03-21 19:59:36
    一、Linux内核简介 现在我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构。如下图所示,最上面是用户(或应用程序)空间,这是用户应用程序执行的地方。用户空间之下是内核空间,Linux 内核正是位于...
  • Linux网络内核分析与开发

    热门讨论 2015-03-13 22:12:50
    2.6.8.1的内核讲解(2.6是现代Linux系统的经典)。这本书名气不是很大,远远比不上国外的那本大部头以及源代码情景分析啥的,封面也是略略有点土,但绝对是我目前能发现的最好的分析Linux网络协议栈实现的书。难度...
  • Android内核开发 学习笔记

    千次阅读 2017-02-27 09:20:10
    Android内核开发:序Android内核开发:开发板选购Android内核开发:理解和掌握repo工具下载manifest仓库 repo init -u https://android.googlesource.com/platform/manifest 如果要选择特定版本的Android源码,...
  • 译者序:这是一篇很重要的文档,它介绍了内核开发的方方面面。这篇文档已被加入到内核源码树的 Documentation 文档里(名字为 HOWTO ),你可以在最新的内核树里找到它。尽管已经有网友翻译过这篇文档,但是我还是...
  • 什么内核

    万次阅读 多人点赞 2018-06-14 06:06:38
    内核是操作系统的内部核心程序,它向外部提供了对计算机设备的核心管理调用。 我们将操作系统的代码分成2部分。内核所在的地址空间称作内核空间。而在内核以外的统称为外部管理程序,它们大部分是对外围设备的管理...
  • 鸿蒙系统的微内核什么

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

    千次阅读 2016-11-27 21:30:04
    postgresql内核开发从哪开始?如何在postgresql内核增加新功能?本文给大家来个postgresql版的HelloWorld!
  • Linux内核模块简介Linux内核的整体结构已经非常庞大,而其包含的组件也非常多。...有没有一种机制使得编译出的内核本身并不需要包含所有功能,而在这些功能需要被使用的时候,其对应的代码被动态地加载到内核中呢?
  • 编写Java程序调用内核模块 功能为向内核模块虚拟设备写字符串,再从内核模块虚拟设备读出字符串长度。 编译加载内核模块 见《 Android内核开发 Linux C编程调用内核模块设备驱动》
  • 本文目的为Linux系统环境下:1、编写内核模块程序并编译 2、加载内核模块 3、编写C程序调用内核模块 功能为向内核模块虚拟设备写如字符串,再从内核模块虚拟设备读出字符串长度。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 278,863
精华内容 111,545
关键字:

内核开发什么功能

友情链接: icpi.zip