Linux内核笔记-VFS
Linux 文件系统有着复杂的结构,仅仅概念就有file,dentry,inode,vfsmount,super_block等等,还有他们之间的关联,细节虽然繁多,但只要抓住主干框架,其他的细节通过阅读源码都可顺理成章的理解。这里Linux …
分类
软件技术文集:Linux 内核、编程语言、工程实践与算法。按标签可进一步筛选具体方向。
Linux 文件系统有着复杂的结构,仅仅概念就有file,dentry,inode,vfsmount,super_block等等,还有他们之间的关联,细节虽然繁多,但只要抓住主干框架,其他的细节通过阅读源码都可顺理成章的理解。这里Linux …
在程序中打印变量地址时,往往在不同的程序中都可能打印相同的地址,显然它们并不是占用相同的物理空间,它们之所以地址相同,得益于内核提供的虚拟地址空间的机制。
中断和异常的定义 中断和异常其实都属于中断,中断分为同步中断和异步中断,同步中断指处理器发生的异常,如除0错误;异步中断指CPU外部事件引发,如IO设备中断,因为中断可以发生在任何时刻,与当前CPU时钟周期没有任何关系。
UML调试Linux内核 最近看了些Linux内核源码,之前认为调试内核源码最好的方式是使用Qemu虚拟机,结合GDB调试,虽然在网上也看到一些这种调试方式的弊端,但感觉虚拟机支持调试是最完美的事情,虽然Bochs更为灵活甚至内置调试器,但 …
slab 介绍 内存分配与释放向来是程序设计中的难点,在C语言中有malloc可以方便使用,但还是有更多的针对具体业务的实现。内存分配需要考虑分配效率和内存使用率的平衡,当用户申请一块内存,程序需要在空闲内存中查找合适的内存块返回,这里可以 …
内核链表 Linux内核有一些基本的数据结构,这些数据结构是Linux实现的基础,对于链表相信大家都不陌生,但是Linux内核中的链表与平常我们所使用的链表略有不同,第一次遇到或许会感到困惑。
操作系统管理软硬件资源,用户进程只能直接或间接的通过系统调用访问系统资源,而用户进程与内核运行于不同的权限空间,需要进行用户态到内核态的转变,这一转变是通过系统中断实现。现以getpid为例:
Linux系统下网络模型数select最为常用,当然,select只是检测文件系统数据状态,并不只局限于网络编程,select的功能需要底层驱动提供支持,其中核心应用即为等待队列,其他模型,如poll和epoll,对驱动来说并无区别,驱动只 …
在阅读Tun驱动时看到,有一些类似 add_wait_queue 的函数,这些函数正是执行等待队列的相关操作,要说等待队列还得从内核进程调度说起,内核调度系统内的进程、为它们分配时间片,但是有些进程如从网卡中读数据,在网卡有数据到达之前进程 …
select/poll模型一直是Linux长期以来使用较多的服务器模型,自从2.6内核引入epoll模型以后,我们又有了一种更加有效的服务器模型,一直以来都耳闻epoll模型对比select模型的优点,赞誉之声一片,它如何高效,高效到什么程 …