
内核基础
文章平均质量分 80
菜鸟别浪
联系方式:hzj_smile@126.com
展开
-
Linux 系统调用的实现(x86_64)
系统调用从用户态到内核全流程解析原创 2023-01-15 20:32:20 · 2204 阅读 · 1 评论 -
softlockup/hardlockup原理详细介绍
主体涉及到了3个机制:kernel watchodog线程,高精度定时器(时钟中断),基于PMU硬件perf event的NMI(不可屏蔽中断)。基本思想: 1.)(soft lockup):抢占被长时间关闭而导致其余进程无法调度 2.)(hard lockup):中断被长时间关闭而导致softlockup基本原理: 1)SoftLockup 检测首先需...原创 2019-08-24 17:01:15 · 2923 阅读 · 0 评论 -
内核模块的加载与卸载
1: 内核源码存放的位置 /usr/src/linux 或者 /usr/src/kernel2: 内核模块存放的位置 /lib/modules/($uname -r)/kernel3: 模块的依赖性:检查 /lib/modules/($uname -r)/modules.dep文件,它记录了内核支持模块的依赖关系。 .dep文件的制作:通过depmod命令 eg:...原创 2019-08-19 18:46:11 · 2298 阅读 · 0 评论 -
preempt_disable宏
1.相关数据结构及函数如下:struct thread_info中{ unisgned int preempt_count;//线程抢占引用计数器,为0才能被抢占}2.preempt_disable的定义#define preempt_disable() \do{ \ inc_preempt_count(); \//增加preempt_cou...原创 2019-08-18 22:11:10 · 2760 阅读 · 0 评论 -
grub2使用详解(官方手册)
https://www.cnblogs.com/f-ck-need-u/archive/2017/06/29/7094693.html原创 2019-07-25 20:27:47 · 1521 阅读 · 0 评论 -
kernel命令行参数(grub启动项参数)
https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html原创 2019-07-25 19:06:51 · 2074 阅读 · 0 评论 -
Linux内核基础--事件通知链(notifier chain)
内核通知链1.1. 概述 Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,就必须使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施。为满足这样的需求,内核实现了事件通知链机制(notificationchain)。 ...转载 2018-09-30 16:25:24 · 453 阅读 · 0 评论 -
x86体系Linux内核进程切换原理(64位和32位)
首先简单提一下这个宏和函数的被调用关系:   schedule() --> context_switch() --> switch_to --> __switch_to() 这里面,schedule是唯一调用switch_to的函数,涉及到一些调度算法,这里转载 2018-09-20 14:47:57 · 1269 阅读 · 0 评论 -
C语言汇编-函数调用栈
函数调用--函数栈 函数调用大家都不陌生,调用者向被调用者传递一些参数,然后执行被调用者的代码,最后被调用者向调用者返回结果,还有大家比较熟悉的一句话,就是函数调用是在栈上发生的,那么在计算机内部到底是如何实现的呢? 对于程序,编译器会对其分配一段内存,在逻辑上可以分为代码段,数据段,堆,栈代码段:保存程序文本,指令指针EIP就是指向代码段...转载 2018-09-19 19:09:10 · 728 阅读 · 0 评论 -
C语言汇编-函数调用堆栈的过程
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/zhuoya_/article/details/80516246 本篇来分析函数调用的过程:通过下面一个简单的例子来进入话题:#include<stdio.h&g...转载 2018-09-19 18:49:04 · 1578 阅读 · 0 评论 -
select系统调用
就最近解决业务socket通信的问题时,发现业务端出现收包卡死的问题;经过业务调试打印,内核打点,查看套接字匹配情况,业务模型场景模拟等一系列操作,最后整理下select的流程和使用; 在网络程序中,一个进程同时处理多个文件描述符是很常见的情况。select()系统调用可以使进程检测同时等待的多个I/O设备,当没有设备准备好时,select()阻塞,其...原创 2018-08-10 08:54:05 · 3588 阅读 · 0 评论 -
c与汇编的故事
1 int add(int a, int b) {2 int result;34 result = a + b;56 return result;7 }89 int main(int argc, char *argv[]) {10 int a,b,result;1112 a = 1;13 b = 2...原创 2018-08-09 19:16:15 · 217 阅读 · 0 评论