- 博客(9)
- 收藏
- 关注
原创 Linux内核驱动的调用过程
的内存管理支持虚拟内存,即在计算机中运行的程序, 其代码,数据,堆栈的总量可以超过实际内存的大小,操作系统只是把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中。由于linux内核的内存管理用到的是虚拟内存,不能直接操作寄存器,故ioremap可以将实际的物理内存地址映射到虚拟地址空间中,让程序员可以直接通过指针访问硬件寄存器。4.根据 inode 中成员 i_rdev 确定设备号,根据设备号可以找到 cdev 结构体(内核。隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,
2024-10-07 17:21:02 735
原创 C++常见问题
什么是内存泄露:我们的程序除了用到静态内存和栈内存,每个程序还拥有一个内存池,我们把他叫做自由空间或者堆。在C++中,动态内存的管理是通过一对运算符来完成的:new,在动态内存中为对象分配空间并返回一个指向该对象的指针,我们可以选择对对象进行初始化:delete,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极其困难的。有时我们会忘记释放内存,在这种情况下就会产生内存泄漏;1)使用IDE。
2024-09-25 22:41:51 548
原创 Linux网络通信
我们使用应用程序有两种模型。b/s模型(Browser/Server) c/s模型(client/server)C/S :传统的网络应用设计模式,客户机(client)/服务器(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。B/S :浏览器(Browser)/服务器(server)模式。只需在一端部署服务器,而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输。选用C/S模型的优点: 1. 协议选用灵活。(可以在标准协议的基础上根据需求裁剪及定制。
2024-08-14 10:51:36 1062
原创 Linux IO模型(结合linux内核字符驱动)
在linux内核字符驱动的框架理解输入输出的读写。字符设备文件操作集file_operations可以重写read、write、epoll。类型涉及:阻塞、非阻塞、异步通知、IO多路复用。
2024-08-13 15:46:44 637
原创 Linux内核中共享资源竞争的互斥机制
当共享的资源同时被多个需要这个资源的主体访问时(并发),会产生竞态。这里的主体可能有:中断、另一个进程、另一个cpu。需要用互斥的方式来解决竞态。
2024-08-12 20:12:37 760
原创 Linux下字符设备驱动框架
四个部分:头文件、两个入口函数初始化、注册入口函数、模块信息描述有一些头文件没加,可以通过sourceinsight搜索函数查看头文件地址。
2024-08-12 14:20:25 375
原创 vscode ssh无法连接
第二步:在拓展的ssh中的Extension Settings 填写路径,ctrl+s保存。已经确定ip和服务器名可以没问题,可以ping通,防火墙也关闭,还是无法连接。第三步: 重新连接即可(删除的配置会重新加载)
2024-08-12 11:43:48 547
原创 交叉编译环境
一般使用apt-get去获取安装包的。就跟自己去官网下载一样,apt-get有一个下载源的配置我们可以进入http://mirrors.aliyun.com/ubuntu/网站看阿里云提供的工具包代码。sudo apt-get install 软件包名 --- 下载并安装指定的软件包 *sudo apt-get remove 软件包名 --- 卸载指定的已安装的软件包 *sudo apt-get update --- 刷新软件源清单 *下载时需要配置虚拟机的网络1.虚拟网卡。
2024-08-09 18:16:28 570
原创 printf输出打印一连串自增/自减/本身(ubuntu20.04)
函数(printf)是在内存中是存在栈中的,c语言是从左往右执行的,故运算从右往左执行。前++(--)和a计算完之后取,后++在寄存器中取;在ubuntu20.04的反汇编生成的步骤是将内存中的数值调到寄存器中,再将自增的值返回内存(前++和后++都一样)首先打印两个题目来讨论。
2024-02-21 09:00:22 224 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人