![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
内核
文章平均质量分 95
禾仔仔
那些不记得过去的⼈, 注定要重复过去。
展开
-
Linux系统调用之二——调用机制
无论是GUI(用户图形接口)、应用程序,还是命令行接口最终都需要使用系统调用来实现。当我们要打开文件(open)然后进行写入(write)或者分配内存(malloc)时,此时将会切换到内核态,虽然我们并察觉不到;之后内核对调用进行检查,如果通过,则按照指令执行相应的操作,分配相应的资源。原创 2022-01-09 15:47:34 · 1598 阅读 · 0 评论 -
Linux系统调用之一——概述导论
内核提供了用户进程和内核交互的一组接口;做过Linux开发的人应该也清楚系统调用的流程:应用->陷入内核、系统调用->驱动->硬件;然后也有不少人讲到0x80的中断。但系统调用的讲解有些片面,原理并不清晰,细节更是一笔带过,看了并不能让人耳目一新,大都新瓶旧酒,**比如0x80中断是怎么创建,又是怎么识别的**等,后面会介绍。所以,我想分享一些自己的学习,以及自己的理解原创 2022-01-03 16:34:46 · 1759 阅读 · 2 评论 -
Linux系统查看内存使用情况
常用命令查看内存使用情况:free显示进程信息(包括CPU、内存使用等信息):top、ps查看驱动占用内存:lsmod原创 2021-10-13 16:31:15 · 133263 阅读 · 0 评论 -
goto的理解与使用
Goto记得学C语言时,老师就有讲过:"不要使用goto, 这是一个坏习惯,而且很危险!"各类书籍上也是这么说,所以之前写的代码几乎从来没有使用过goto。现在工作在搞Linux硬件驱动,内核源码里却有大量goto,看了些论坛大神的讨论,确实goto不应该多用,不然逻辑会搞得混乱。但是自己也得会,不然内核代码也是看的稀里糊涂。功能:goto语句可以使程序在没有任何条件的情况下跳转到指定的位置#include <stdio.h>int main(void){ char a;原创 2020-11-26 19:06:32 · 2538 阅读 · 0 评论 -
内核空间和用户空间简介以及两者之间的数据拷贝
1、内核空间和用户空间的概念简介在Linux中,操作系统和驱动程序运行在内核空间,应用程序运行在用户空间。两者不能简单的使用指针传递数据,因为Linux使用的虚拟内核机制,当内核空间使用用户空间指针时,对应的数据可能不在内存中(数据已被换出)。用户空间的内存采用段页式,内核空间也有自己的规则。32位的Linux内核虚拟地址空间,一般低3G的地址(0-3G)划分为用户空间,高1G的地址(3~4G)划为内核空间,也就是说内核空间可以使用的线性地址只有1G。另外也可以自行配置内核空间和用户空间的界限(大小原创 2020-10-11 22:29:53 · 3494 阅读 · 0 评论 -
Linux字符设备驱动从helloworld认识内核
字符设备是内核的接口的一种,用户空间和内核空间的交互的方式之一,这里侧重讲下字符设备,对模块知识略微提及,后面会单独发相关的帖。1、模块化Linux 内核整体结构很庞大,包含了很多的组件,目前最多的也是最好的处理方式:将需要的功能编译成模块,在需要的时候动态地加载,包含进内核当中。这也就是所谓的模块化。常用操作:insmod 将模块添加进内核rmmod 将模块从内核卸载lsmod 查看已安装到内核的模块modprobe 载入指定的个别模块,或是载入一组相依赖的 模块。 modprobe原创 2020-10-08 22:35:23 · 571 阅读 · 0 评论 -
Linux系统开机流程简介
前端时间跟着团队在搞Linux系统的内核移植,涉及到很多模块的加载顺序问题,就学习了些Linux系统开机的基本流程,就算给刚刚入手的小伙伴些学习参考吧。大致流程:原创 2020-08-29 19:22:53 · 422 阅读 · 0 评论