扫码加入

linux内核

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰 Linus Torvalds为尝试在英特尔x86架构上提供自由的类Unix操作系统而开发的。该计划开始于1991年,在计划的早期有一些 Minix 黑客提供了协助,而如今全球无数程序员正在为该计划无偿提供帮助。

Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰 Linus Torvalds为尝试在英特尔x86架构上提供自由的类Unix操作系统而开发的。该计划开始于1991年,在计划的早期有一些 Minix 黑客提供了协助,而如今全球无数程序员正在为该计划无偿提供帮助。收起

查看更多
  • 为什么说搞嵌入式是个系统化的活
    DMA_BUF是一种Linux内核机制,允许CPU、GPU、NPU等硬件设备直接共享同一块物理内存,降低系统开销和提高处理速度。它通过文件描述符(fd)机制实现跨进程、跨子系统的内存共享,分为导出者和导入者两部分。导出者负责内存分配和操作回调,导入者通过API映射IO地址实现直接访问。DMA_BUF适用于AI推理、图像处理等高数据量应用场景,通过fd实现零拷贝共享,配合fence和CPU同步确保数据一致性,是构建高效异构计算系统的关键技术。
  • 【Linux内核设计思想】四、进程管理(二)
    进程创建涉及fork()和exec()系统调用,fork()用于创建子进程,exec()用于替换进程执行目标程序。fork()采用写时拷贝机制,子进程与父进程共享大部分资源,但各自拥有独立的内存空间。vfork()允许子进程在父进程地址空间运行,父进程在此期间被阻塞。进程终止时,do_exit()负责清理资源并通知父进程,父进程可通过wait()等待子进程结束。
    【Linux内核设计思想】四、进程管理(二)
  • Rust正式成为Linux永久核心语言
    Rust 成为 Linux 内核永久核心语言,标志着其在长期维护中的重要地位。Debian APT 和 Android 采用 Rust 开发,表明其在实际工程中的可行性。对于嵌入式工程师而言,了解 Rust 对于未来工作至关重要,尤其是涉及 Linux BSP、驱动和系统层的工作。学生和转型工程师应掌握 Rust 基础知识,以便在未来工作中更好地适应新技术。
    706
    01/05 13:30
  • Linux内核日志玩明白了吗?printk调试神器全解析
    前言: 做Linux驱动开发或内核调试的朋友,一定对printk不陌生,但你真的会用它吗?为什么同样是调试RK3588内核,别人能精准捕捉关键错误,你却被海量日志淹没?今天就带大家吃透printk的日志等级机制,从参数配置到实战用法一次讲透~ 一、printk与printf的差异 用户态的printf大家都熟,直接打印内容,简单粗暴。但内核场景更复杂,系统崩溃或是debug调试细节,不同信息的重要
  • 【Linux内核设计思想】四、进程管理(一)
    进程是处于执行期的程序及其资源的总称,包括代码段、文件、信号、内核数据等。Linux内核通过task_struct结构描述进程,该结构包含了进程的各种信息,如状态、地址空间、线程等。进程通过fork()系统调用复制现有进程创建新进程,新进程可通过exec函数族加载新程序。进程描述符保存在任务队列中,通过slab分配器高效管理。进程状态包括运行态、可中断态、不可中断态、僵死态和停止态。进程间存在父子关系,通过遍历子进程链表或递归查找祖先进程可以构建进程家族树。进程上下文涉及系统调用和异常处理,所有进程都是init进程的后代。
    【Linux内核设计思想】四、进程管理(一)
  • 浅谈Linux内核的实时性优化
    什么是实时操作系统?接触过嵌入式的小伙伴可能会知道,实时操作系统是指在嵌入式领域广泛应用的各类RTOS(Real Time Operating System)。其中最具代表性的有国外的μC/OS-III、FreeRTOS、Vxworks等,国内的代表有RT-Thread和LiteOS。 
    浅谈Linux内核的实时性优化
  • 玩转内核链表list_head,教你管理不同类型节点的实现,建议收藏
    在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head。虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作list_head 的通用接口很容易实现代码的重用,有点类似于C++的继承机制(希望有机会写篇文章研究一下C语言的面向对象机制)。
  • 需要多久才能看完linux内核源码?
    Linux内核分为CPU调度、内存管理、网络和存储四大子系统,针对硬件的驱动成百上千。代码的数量更是大的惊人。先说说最早的内核linux 0.11,这本书《Linux内核完全剖析》可以说很多驱动工程师都学习过,我花了大概1个半月,勉强看了一遍。
  • Linux内核源码下载及阅读指南,想学习嵌入式Linux的同学可以参考
    有很多同学想入门Linux内核,这是Linux最核心的部分,也是学习驱动和软件流程最好的资料。今天给大家说下如何下载Linux内核,并开始阅读学习。本文主要分为两部分:Linux内核源码下载方法;Linux内核源码阅读以及工具详解
  • Linux内核并发同步机制:自旋锁、信号量、互斥体
    在Linux系统中有大量的临界资源需要保护,如何让各个任务有条不紊的访问这些资源,这涉及到Linux中并发访问的保护机制设计相关知识。后面会详细介绍这几个机制。
    Linux内核并发同步机制:自旋锁、信号量、互斥体
  • 【内存管理】页表映射基础知识
    现在Linux内核中支持四级页表的映射,我们先看下内核中关于页表的一些术语:全局目录项,PGD(Page Global Directory)上级目录项,PUD(Page Upper Directory)中间目录项,PMD(Page Middle Directory)页表项,(Page Table)大家在看内核代码时会经常看的以上术语,但在ARM的芯片手册中并没有用到这些术语,而是使用L1,L2,L3页表这种术语。
    【内存管理】页表映射基础知识
  • 【操作系统】内存管理概述
    常见的内存分配函数有malloc,mmap等,但大家有没有想过,这些函数在内核中是怎么实现的?换句话说,Linux内核的内存管理是怎么实现的?内存管理的目的是管理系统中的内存,俗称内存桥,换成专业属于叫DDR。我们有必要先了解下计算机对内存管理的硬件结构。我们先看下关于地址的一些概念。
    【操作系统】内存管理概述
  • 不再惧怕Linux内核panic (二) 认识DWARF
    当内核发生panic之后,事后要想根据debug信息,推导源码位置/行号等调试信息时,就不得不提到 DWARF 格式的调试信息,依稀记得曾经我们就碰过一次因DWARF版本适配不对导致调试信息不全,阻塞了panic问题分析,出现进而阻塞了项目进度的情况。今天就了解一下 DWARF。
    不再惧怕Linux内核panic (二) 认识DWARF
  • 不再惧怕Linux内核panic (一)
    曾经我看到Linux kernel panic,我也会很panic,感觉无从下手,但经过不断学习和摸索积累后,目前的我已经不再panic了,其实内核panic后打印的信息通常都会包含一系列关键信息,会帮助我们进一步分析诊断导致系统崩溃的根本原因。
    6641
    2024/05/05
  • 如何将ubuntu的Linux内核升级到最新版本
    当我们的开发环境使用的是ubuntu ,但因其Linux内核版本太低已经满足不了新的开发和调试需求时,此时又不想大动干戈升级整个系统,就可以考虑在该版本上只升级Linux内核即可。
    如何将ubuntu的Linux内核升级到最新版本
  • linux内核中打印cpumask的方法总结
    在Linux内核中,CPU掩码(cpumask)用于表示一组CPU编号,常用于描述进程或任务的亲和性、中断或定时器的分配范围等场景。
    linux内核中打印cpumask的方法总结
  • Linux内核模块加载顺序(二)
    严格来说*模块加载顺序*这一概念主要适用于动态加载的内核模块,而非静态编译到内核中的模块。因为静态编译到内核中的模块已经作为内核代码的一部分直接编译进了内核映像。可以理解为在系统启动过程中,这些模块实际上已经处于“已加载”状态,无需再经历独立的加载过程,跟随Linux内核启动流程,走正常初始化即可。
    Linux内核模块加载顺序(二)
  • Linux内核模块加载顺序(一)
    在Linux系统中,无论是ko形式的动态加载模块还是buildin形式的静态编译模块,加载顺序的控制都是相当重要的。虽然Linux内核本身并不直接控制模块的加载顺序,但是可以通过一些方法和策略来间接地实现。
  • linux内核initcall放置在各个section中函数执行流程
    linux以及嵌入式一些代码,我们看到core_initcall、device_initcall等等需要链接器分配各个section,并且在启动该模块时候执行。下面我们详细追溯一下执行过程。
    linux内核initcall放置在各个section中函数执行流程

正在努力加载...