
linux内功
文章平均质量分 73
内核
_李白_
内外兼修,方是正途;外是架构,内是数学。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
linux:MSI 与 MSI-X
MSI是一种基于消息的中断机制,设备通过内存写操作发送中断请求,避免了传统中断引脚的限制,提升了系统扩展性和中断处理效率。MSI-X是MSI的扩展版本,提供更多中断向量、更强的控制灵活性,尤其适用于高性能设备中,以支持更高并发和更复杂的中断需求。原创 2024-10-26 17:29:57 · 734 阅读 · 0 评论 -
linux:NAPI
NAPI 是一种灵活且高效的网络处理机制,特别适用于高吞吐量、高并发的场景,如数据中心和高速路由器。通过结合中断和轮询,NAPI 能够在不同负载下优化网络设备的数据包处理效率,减轻中断风暴对系统性能的影响。原创 2024-10-21 22:47:06 · 1333 阅读 · 0 评论 -
linux:DMA( Direct Memory Access,直接内存访问)
DMA是一种重要的硬件机制,能够让设备直接与内存通信,减少 CPU 的参与,提高数据传输速度和系统整体性能。通过不同的工作模式(如突发模式、循环窃取模式等)和类型(内存到内存、设备到内存等),DMA 能够适应不同的应用场景,广泛应用于磁盘 I/O、网络传输、多媒体处理等领域。原创 2024-10-21 21:32:13 · 1504 阅读 · 0 评论 -
Linux内核:系统调用大全(持续更新中)
1. sys_brk()是用于更改进程的堆空间大小。2. dup2用于创建一个新的文件描述符,这个新的文件描述符与指定的旧文件描述符指向同一个文件.原创 2023-08-01 12:43:03 · 979 阅读 · 0 评论 -
Linux内核源码分析-进程调度(六)-PELT(per-entity load tracking)
什么叫负载?per-entity load tracking如何记录负载信息runnable_avg_yN_invdecay_loadstruct sched_avg调度实体se初始化函数是init_entity_runnable_average计算当前负载贡献计算公式代码实现accumulate_sumdecay_load__accumulate_pelt_segments调度实体更新负载贡献就绪队列更新负载贡献per-entity load tracking有什么好处呢?原创 2023-06-09 00:20:25 · 2327 阅读 · 2 评论 -
Linux内核源码分析-进程调度(五)-组调度
系统启动后默认有一个root_task_group,管理系统中最顶层CFS就绪队列cfs_rq(即cpu rq对应的CFS就绪队列)。cfs组进程调度:pick_next_task_fair; 组进程抢占:task_tick_fair调度组的时间分配原创 2023-05-24 20:58:05 · 5221 阅读 · 7 评论 -
Linux内核源码分析-进程调度(四)-进程周期性调度和如何选择下一个运行进程
周期性调度是指Linux周期性地检查当前任务是否耗尽当前进程的时间片,并检查是否应该抢占当前进程。判断一下curr比起红黑树最左边的是否已经运行满一个时间片(这个时间片是指curr进程自身在一个调度周期内可以运行的时间片),满了就回就绪队列等待下一次运行,这样每一个进程都会尽快运行,且权重小的进程更容易被抢占。 if (delta > ideal_runtime)resched_curr(rq_of(cfs_rq)); // 设置抢占flag原创 2023-05-16 23:59:03 · 1038 阅读 · 4 评论 -
Linux内核源码分析-进程调度(三)-从进程创建到唤醒的过程去了解CFS调度器
从进程创建到唤醒的过程去了解CFS调度器原创 2023-05-09 23:26:15 · 1455 阅读 · 1 评论 -
Linux内核源码分析-进程调度(二)-常用数据结构
但是,每一个调度类并不是直接管理task_struct,管理的是调度实体,从而引入调度实体的概念。CFS调度器的就绪队列,简称cfs就绪队列,管理就绪态的struct sched_entity调度实体,后续可以通过pick_next_task接口从cfs就绪队列中选择最适合运行的调度实体(虚拟时间最小的调度实体)。// 每个CPU都有一个全局的运行队列,它是per-cpu类型,即每个cpu上都会有一个struct rq结构体。rq中包含cfs就绪队列、rt就绪队列、dl就绪队列。原创 2023-04-26 01:11:57 · 1368 阅读 · 0 评论 -
Linux内核源码分析-进程调度(一)-调度器初识
调度器的主要工作就是选择就绪的进程来执行。目前Linux支持的调度器有五种:stop scheduler、Deadline scheduler、RT scheduler、CFS scheduler、Idle scheduler。从Linux2.6.23开始,Linux引入scheduling class的概念,目的是为了将调度器模块化。这样提高了扩展性,添加一个新的调度器也变得简单起来。调度器的抽象基类为struct sched_class;原创 2023-04-23 08:34:28 · 2393 阅读 · 0 评论 -
Linux内核源码目录简介
【代码】Linux内核源码目录简介。原创 2023-01-31 21:13:51 · 369 阅读 · 0 评论 -
linux信号:SIGINT、SIGKILL、SIGSTOP、SIGCONT
linux信号:SIGINT、SIGKILL、SIGSTOP、SIGCONT原创 2022-12-13 00:46:19 · 7990 阅读 · 0 评论 -
linux源码分析之list的实现
linux内核中list的实现原创 2022-09-11 01:20:15 · 755 阅读 · 0 评论 -
linux:cc与gcc
我们在makefile中总是能看到cc和gcc,其实两者从本质来讲是两个完全不一样的东西,cc是unix系统下的概念(ccompiler),而gcc是linux下的概念(GNUcompilercollection)。但是我们在linux系统中的makefile中能看到大量使用cc,是因为linux为了兼容unix,unix下开发的项目可以直接在linux下进行编译链接,所以使用了软链接,cc->gcc。...原创 2022-07-17 22:31:16 · 590 阅读 · 0 评论 -
linux:硬链接和软链接
linux硬链接和软链接原创 2022-06-16 00:14:01 · 9861 阅读 · 0 评论 -
linux下线程的同步:互斥锁、自旋锁、读写锁、原子操作(进程也可用原子操作)
1、多线程中的i++问题我们来看一个经典的多线程i++出现的问题/*================================================================* Copyright (C) 2021 baichao All rights reserved.* * 文件名称:iaddadd.cpp* 创 建 者:baichao* 创建日期:2021年04月01日* 描 述:*====================.原创 2021-04-05 22:31:22 · 816 阅读 · 0 评论 -
linux五种io模型:阻塞IO、非阻塞IO、多路复用IO、异步IO、信号驱动IO
1、阻塞IO(blocking IO)在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程如下:当用户调用了read这个系统调用,kernel就开始了IO的第一个阶段:准备数据。对于network io来说,很多时候数据在一开始还没有达到(比如,还没有收到一个完整的数据包),这个时候kernel就要等待足够的数据到来。而在用户进程这边,整个进程会被阻塞。当kernel一直等到数据准备好了,它就会将数据从kernel中拷贝到用户内存,然后kernel返回结果,用户原创 2021-02-23 22:44:14 · 698 阅读 · 0 评论 -
I/O多路复用之select、poll、epoll实例
1、select/* Access macros for `fd_set'. */#define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp)#define FD_CLR(fd, fdsetp) __FD_CLR (fd, fdsetp)#define FD_ISSET(fd, fdsetp) __FD_ISSET (fd, fdsetp)#define FD_ZERO(fdsetp) __FD_ZERO (fds原创 2021-02-22 18:01:28 · 7785 阅读 · 3 评论 -
linux信号:signal和sigaction
/* Set the handler for the signal SIG to HANDLER, returning the old handler, or SIG_ERR on error. By default `signal' has the BSD semantic. */__BEGIN_NAMESPACE_STD#ifdef __USE_MISCextern __sighandler_t signal (int __sig, __sighandler_t __handler.原创 2021-02-16 23:21:17 · 1892 阅读 · 0 评论