linux内核那些事
文章平均质量分 70
闲聊一下
6月的夕夕
这个作者很懒,什么都没留下…
展开
-
IO端口复用之epoll的底层实现
介绍 解说中存在一些函数和数据结构,具体出处可以参照上一篇关于select的分析 《IO端口复用之select的底层实现》,里面提及了一些储备知识点,本篇不再赘述。 由于tcp过于复杂,取个巧,全篇以udp连接来说明一下,内核版本依旧对应2.6.32。本篇在加上之前的《IO端口复用之poll的底层实现》,算是集齐了linux系统常用的端口复用技术三贱客。 从上述两篇可以看出,select和poll在底层轮训技术上没有本质的区别,而epoll则有了很大的改进,使用了事件触发机制。...原创 2021-07-19 19:55:20 · 465 阅读 · 1 评论 -
IO端口复用之poll的底层实现
介绍 poll前部分的内容是从select底层实现篇拷贝过来的,可直接跳转到poll内核实现部分进行阅读。 由于tcp过于复杂,取个巧,全篇以udp连接来说明一下,内核版本对应2.6.32。 poll说到底是和网络套接字打交到的,从网络套接字创建的过程(socket和bind系统调用),来了解一下socket、sock、inet_sock等数据结构之间的联系,以及创建一个监听套接字之后到底发生了哪些变化。储备知识点 此处是一些琐碎的知识点,以便更好的理解poll系统...原创 2021-03-20 17:00:39 · 577 阅读 · 0 评论 -
IO端口复用之select的底层实现
不同的文件描述符file中的文件操作结构ops其实指向的是不同的函数,从网络通信套接字来说,tcp协议SOCK_STREAM创建的套接字的ops是inet_stream_ops结构,而udp协议SOCK_DGRAM创建的套接字的ops使用的是 inet_dgram_ops,原始套接字SOCK_RAW创建的套接字的ops使用的是inet_sockraw_ops。 可以从socket系统调用,通过关注struct socket *sock的赋值来进行追溯,此处不做描述。...原创 2021-03-19 20:19:43 · 711 阅读 · 0 评论 -
一个简单的linux驱动模块
如何编写一个简单的驱动模块,我们这里可以使用vim编辑一个hello_world.c文件。#include <linux/module.h>//模块装载时初始化函数static int __init hello_init(void){ printk("this is a hello world module\n"); return 0;}//模块卸载时清理函数static void __exit hello_exit(void){ return;}原创 2021-02-26 19:52:57 · 197 阅读 · 0 评论 -
linux内核模块装载问题
问题做好了linux内核模块,装载的时候经常遇到 “could not insert module *.ko: Invalid module format”情况,此时通过dmesg查看会报错误信息,“disagrees about version of symbol module_layout”原创 2021-02-26 19:19:13 · 653 阅读 · 0 评论 -
红帽&麒麟 v7.*系列系统升级内核3.10.0的问题记录
现象 红帽、centos以及中标麒麟v7系列系统的内核版本基本都是3.10.0-*,因业务需要将某v7系列系统的内核升级成3.10.0版本。前后内核版本基本一致,感觉应该是没什么问题的,官网下载3.10内核源码,按照编译流程进行编译、安装,一切顺利。 重启系统后,在grub启动引导阶段,选择新安装内核版本3.10启动,均启动失败。 先后在vmware虚拟机和物理机中试了centos系统和麒麟系统,各自会报不同的错误“A start job is running for dev-...原创 2021-02-19 16:59:29 · 1897 阅读 · 0 评论