首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux系统内核笔记

一、课程介绍 UNIX/Linux环境C语言,借助学习操作系统接口方法来学习、理解操作系统 运行机制以及一些网络协议 C/C++、数据结构和算法 与平台无关,重点是算法逻辑 Uinx/Linux...,它指的是系统内核,凡是使用这种内核操作系统都叫作 Linux系统(发行板),严格意义上讲Linux指的是内核,隶属于GNU工程。...UNIX系统、免费开源,而Linux之父就是在参照这款操作 ,才写出第一个版本Linux内核代码 GNU工程:是自由软件基金会所创立一个开源组织,基本原则就是共享,主旨是发展出 一个有别于商业UNIX...mmap/munmap Linux 调用内核 Kmalloc/vmalloc 内核 调用驱动 get_free_page 驱动 … 四、进程映像 程序是保存在磁盘上可执行文件,加载到内存中被操作系统调用执行程序叫进程...… UNIX/Linux系统调用都封装成了C函数形式,但它们并不是标准C一部分 标准库中函数绝大部分时间都工作在用户态,但部分时间也需要切换到内核 (进行了系统调用),比如:fread/fwrite

1.6K20

Linux 内核系统架构

这篇文章从进程调度,内存管理,设备驱动,文件系统,网络等方面讲解Linux内核系统架构。...Linux系统架构是一个经典设计,它优秀分层和模块化,融合了数量繁多设备和不同物理架构,让世界各地内核开发者能够高效并行工作。先来看看Linus在多年前公开Linux邮件。...Linux系统架构图 架构非常清晰,从硬件层,硬件抽象层,内核基础模块(进程调度,内存管理,网络协议栈等)到应用层,这个基本上也是各类软硬件结合系统架构基础设计,例如物联网系统(从单片机,MCU等小型嵌入式系统...在早期Linux操作系统中,主要采用是时间片轮转算法(Round-Robin),内核在就绪进程队列中选择高优先级进程运行,每次运行相等时间。...TASK_SIZE可以配置,Linux系统默认配置3:1,应用程序使用3GB空间,内核使用1GB空间,这个划分并不依赖实际RAM大小。

5.1K72
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux系统内核升级

    /releases.html Linux kernel版本状态说明 mainline mainline指由Linus Torvalds亲自制作内核发布版,是官方当前最新版本kernel source...Prepatch Prepatch 或 “RC” 内核是主要内核预发行版本,主要针对内核开发人员和 Linux 爱好者。必须从源代码进行编译,并且通常包含必须在可以放入稳定版本之前进行测试新功能。...,开启文本界面的编译选项菜单窗口,可以对内核加载模块编译选项进行调整,如修改编译后内核名称、新添加之前系统缺少模块等。...,-j后边数字表示并发编译,一般等于CPU core 数量 [root@boy linux-5.15.26]# make -j$(nproc) # 安装内核modules,实际上就是把编译好module...0 #0表示 /boot/grub2/grub.cfg 文件中排在第一位 menuentry 段 # 重启系统 [root@boy ~]# reboot # 查看重启后内核版本 [root@boy

    3.8K30

    Linux 内核】编译 Linux 内核 ⑦ ( 安装内核模块 | 安装内核 | 重启系统 | 查看当前内核版本 )

    文章目录 一、安装内核模块 二、安装内核 三、重启系统 四、查看当前内核版本 一、安装内核模块 ---- 确保 Linux 内核编译完成 , 没有任何报错之后 ; 参考 【Linux 内核】编译 Linux...内核 ⑥ ( 安装 OpenSSL | 安装其它依赖库 | 内核编译完成 ) 博客 ; 进入 Linux 内核源码根目录 , 执行 sudo make modules_install 命令 , 安装编译好内核模块...; 下面的内核安装过程会持续很长时间 ; 内核安装过程 : root@ubuntu:~# cd kernel/linux-5.6.14 root@ubuntu:~/kernel/linux-5.6.14...-5.6.14# 三、重启系统 ---- 执行 reboot 命令 , 重启 Ubuntu 操作系统 ; 四、查看当前内核版本 ---- 重启之后 , 在命令行终端执行 uname -a 命令 ,...查看当前内核版本 , 发现当前内核版本已经

    16.1K50

    Linux系统内核如何升级

    有些小伙伴在使用Linux系统时可能会遇到网卡不能使用,亮度不能调节,触摸板不能识别,等等问题,这些都是内核版本过低而导致,只需要把内核升级一下就可以, 下面为大家分享一下Linux系统内核升级方法。...下载内核 目前下载有很多地址,我主要使用以下两个: github上下载linux kernel ubuntu仓库中下载linux kernel 内核需要下载那些文件?...查看当前系统安装内核  dpkg --get-selections| grep linux1  console-setup-linux install  libselinux1:amd64 install...卸载内核 可以看到系统已经安装了多个内核版本,包括 headers 和 image ,可以删除这些来卸载旧内核。...总结 至此关于Linux内核升级教程已经全部完成,大家如果在内核升级过程中遇到问题可以通过评论区将问题提交给我们。

    8.6K30

    Linux系统手动更换内核

    至于linux内核什么时候开始原生支持,网上说法真的是五花八门,很多人文章感觉就是互相抄,连2.6.* 说法都能蹦出来(我怀疑是一些采集站)。...更新软件包 $ yum update -y ELRepo项目 这里我们需要用到Repo项目Enterprise Linux软件包RPM存储库。...https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm 安装新内核啦 查看ELRepo仓库下,在当前系统支持内核包 ELRepo...install kernel-ml 更改grub配置 在安装完新 Kernrl 之后,系统是不会帮你切换到新内核,重启也不行,需要我们自己设置,将新内核设置为默认启动选项。...我们可以看到,安装完之后,内核没有切换过去,通过查看得知,新安装内核位于第一个位置,标记为 0。这是我们需要修改/etc/default/grub文件,以便于让系统在启动时让新内核成为默认选项。

    5.7K10

    Linux 内核】宏内核与微内核架构 ( 操作系统需要满足要素 | 宏内核 | 微内核 | Linux 内核动态加载机制 )

    文章目录 一、操作系统需要满足要素 二、宏内核 三、微内核 四、Linux 内核动态加载机制 一、操作系统需要满足要素 ---- 电脑上运行 操作系统 , 是一个 软件 ; 设备管理 : 操作系统需要...要为 应用程序 执行 提供配套环境 ; 虚拟性支持 : 支持多进程 , 每个运行应用程序进程 , 都可以感觉到有专门处理器提供系统服务 ; 并发性支持 : 操作系统需要有 执行多个线程能力...; 四、Linux 内核动态加载机制 ---- Linux 内核模块动态加载 : Linux 内核 使用了 模块设计 , 可以进行 动态加载 内核模块 ; Linux 内核 核心实现 , 设备驱动实现..., 可以 编译成一个独立模块 , 这些独立模块可以被编译成 独立目标文件 , 可以在运行时 , 动态 加载 / 卸载 内核模块 ; 开发简单 : Linux 内核模块引入 , 带来了很多便利 , 很多内核驱动...与 平台无关 模块 , 如 : 文件系统 ;

    4.4K30

    Linux内核-tmpfs文件系统

    我们Linux进阶部分,到目前为止,已经讲过:硬件,日常运维,基础软件,日志,进阶命令,防火墙,Shell编程,以及本章将要讲解内核相关内容,和最后一章Linux系统。...让我们了解和熟悉基本Linux内核相关信息,Linux内核我们主要从以下几个方面来讲解: Linux内核-什么是内核 Linux内核-内核模块&参数 Linux内核-proc文件系统 Linux内核...-sys文件系统 Linux内核-tmpfs文件系统(本章节) 前面讲了2个虚拟文件系统,一个是主要是针对内核,一个主要是针对cgroup,而tmpfs则是第三个虚拟文件系统,那它是主要针对什么呢?...还有名字比较类似的devtmpfs又是做什么呢? devtmpfs devtmpfs是一种在 Linux 内核中用于管理设备文件临时文件系统。...tmpfs tmpfs是一种基于内存和交换空间临时文件系统,在 Linux 系统中被广泛应用。

    7810

    浅谈 Linux 内核无线子系统

    浅谈 Linux 内核无线子系统 Linux 内核是如何实现无线网络接口呢?数据包是通过怎样方式被发送和接收呢?...1 全局概览 在开始探索 Linux 无线具体细节之前,让我们先来把握一下 Linux 无线子系统整体结构。如图1,展示了 Linux 无线子系统各个模块之间抽象关系。 ?...现阶段大部分无线设备都是软件实现软 MAC 设备。 通常我们把 Linux 内核无线子系统看成两大块: cfg80211 和 mac80211 ,它们连通内核其他模块和用户空间应用程序。...Linux 内核无线子系统统一各种 WiFi 设备,并处理 OSI 模型中最底层 MAC 、 PHY 两层。 若进一步划分, MAC 层可以分为 MAC 高层和 MAC 底层。...刚才这些发生在图一中 Data Application 模块中,最终应用程序陷入系统调用,随后在内核空间进行接下来工作。

    3.3K31

    Linux系统内核态和用户态

    大家好,又见面了,我是你们朋友全栈君。 一、 Unix/Linux体系架构   如上图所示,从宏观上来看,Linux操作系统体系架构分为用户态和内核态(或者用户空间和内核)。...系统调用是操作系统最小功能单位,这些系统调用根据不同应用场景可以进行扩展和裁剪,现在各种版本Unix实现都提供了不同数量系统调用,如Linux不同版本提供了240-260个系统调用,FreeBSD...IntelX86架构CPU提供了0到3四个特权级,数字越小,特权越高,Linux操作系统中主要采用了0和3两个特权级,分别对应就是内核态和用户态。...注意:系统调用本质其实也是中断,相对于外围设备硬中断,这种中断称为软中断,这是操作系统为用户特别开放一种中断,如Linux int 80h中断。...三、总结   本文仅是从宏观角度去理解Linux用户态和内核设计,并没有去深究它们具体实现方式。

    2.1K10

    Linux内核-proc文件系统

    我们Linux进阶部分,到目前为止,已经讲过:硬件,日常运维,基础软件,日志,进阶命令,防火墙,Shell编程,以及本章将要讲解内核相关内容,和最后一章Linux系统。...让我们了解和熟悉基本Linux内核相关信息,Linux内核我们主要从以下几个方面来讲解: Linux内核-什么是内核 Linux内核-内核模块&参数 Linux内核-proc文件系统(本章节) Linux...内核-sys文件系统 Linux内核-tmpfs文件系统 我们上一小节里面修改内核参数时候,还有在Linux入门-目录介绍时候也说过/proc是虚拟目录。...在 Linux 系统中,“/proc” 目录是一个虚拟文件系统,它提供了关于系统运行状态和进程信息动态视图。...虚拟性 它并不占用实际磁盘空间,而是通过内核机制来呈现系统各种信息。

    6410

    Linux内核-sys文件系统

    我们Linux进阶部分,到目前为止,已经讲过:硬件,日常运维,基础软件,日志,进阶命令,防火墙,Shell编程,以及本章将要讲解内核相关内容,和最后一章Linux系统。...让我们了解和熟悉基本Linux内核相关信息,Linux内核我们主要从以下几个方面来讲解: Linux内核-什么是内核 Linux内核-内核模块&参数 Linux内核-proc文件系统 Linux内核...-sys文件系统(本章节) Linux内核-tmpfs文件系统 在讲sys文件系统系统之前,我们先思考一个问题?...在 Linux 系统中,/sys 目录是一个虚拟文件系统,它提供了关于系统设备、内核参数以及硬件状态等信息接口。...三、cgroup介绍 控制组(cgroup)是 Linux 内核提供一种可以限制、记录和隔离进程组所使用物理资源(如 CPU、内存、磁盘 I/O 等)机制。

    8910

    查看Linux系统版本内核命令方法

    image.png Linux系统内核、发行版本有很多,那么如何查看当前Linux系统内核信息、Linux系统发行版本等信息呢?...在此分享查询Linux系统详细信息方法: 命令一:查看当前系统发行版本详细信息 LSB是Linux Standard Base缩写,lsb_release命令用来显示LSB和特定版本相关信息 执行命令...:lsb_release -a,即可查看当前系统版本详细信息 命令二:查看当前系统内核信息 执行命令:uname -a,查看当前操作系统内核信息 命令三:查看当前系统版本信息 执行命令: cat /...proc/version,查看当前操作系统版本信息 命令四:查看CPU相关信息 执行命令:cat /proc/cpuinfo,可以查看LinuxCPU相关信息,包括型号、主频、内核等信息。...补充说明: /proc文件系统,它不是普通文件系统,而是系统内核映像,也就是说,该目录中文件是存放在系统内存之中,它以文件系统方式为访问系统内核数据操作提供接口。

    2.7K30

    Linux 内核0.11 系统调用详解(上)

    https://blog.csdn.net/u014688145/article/details/50608829 备注:本文通过三个问题,引出Linux 内核0.11系统调用。...由图可以看出,从操作系统角度来看,一台计算机主要分为两级:用户级以及内核级,系统调用主要作用就是连接用户级和内核“插座”。...对底层操作,如果不通过系统调用限制,会发生用户应用程序修改系统内核等误操作,造成操作系统运行瞬间奔溃,考虑到系统稳定性、安全性等问题,我们需要向上提供接口,限制应用层连入内核权限。...因此,自然而然一个想法就是,通过对与内核模块代码段,数据段和对用户区代码数据段做区分来阻止用户直接访问内核模块。Linux内核通过建立段级保护机制来完成上述区分核心与用户态区域功能。...这就顺理成章跳了过去! 系统调用,基本结束了,剩下即是内核代码编写。在下一节中,我们将在实际操作系统编写两段内核代码函数,让用户程序能调用系统函数。尽请期待!o(∩_∩)o

    1.7K31

    Linux 内核 内存管理】Linux 内核内存布局 ③ ( Linux 内核 动态分配内存 系统接口函数 | 统计输出 vmalloc 分配内存 )

    文章目录 一、Linux 内核 动态分配内存 系统接口函数 二、统计输出 vmalloc 分配内存 一、Linux 内核 动态分配内存 系统接口函数 ---- Linux 内核 " 动态分配内存 "...是通过 " 系统接口 " 实现 , 下面介绍几个重要 接口函数 ; ① 以 " 页 " 为单位分配内存 : alloc_pages , __get_free_page ; ② 以 " 字节 " 为单位分配..." 虚拟地址连续内存块 " : vmalloc ; ③ 以 " 字节 " 为单位分配 " 物理地址连续内存块 " : kmalloc ; 注意 该 " 物理地址连续内存块 " 是以 Slab 为中心...; 二、统计输出 vmalloc 分配内存 ---- 执行 grep vmalloc /proc/vmallocinfo 命令 , 可以统计输出 通过 vmalloc 函数分配 " 虚拟地址连续内存块

    5.2K30

    Linux动态为内核添加新系统调用

    本文主题依然不是劫持系统调用,而是添加系统调用,并且是动态添加系统调用,即在不重新编译内核前提下添加系统调用,毕竟如果可以重新编译内核的话,那实在是没有意思。...我问题是: Linux系统中如何获取以及修改当前进程名字??...// 这是可行,不然呢?内核自己ftrace或者live kpatch怎么办?!...至于说为什么系统调用号必须是逐渐递增,请看: callq *-0x7e9b2c40(,%rax,8) 上述代码含义是: call index * 8 + disp32_offset 这意味着内核是按照数组下标的方式索引系统调用...封堵模块加载接口即可咯,反正不加载内核模块,谁也别想看到当前系统内核被hack成了什么样子,哦,对了,把/dev/memmmap也堵死哦... ....不过这是下面文章主题了。

    1.7K30
    领券