- 博客(61)
- 资源 (9)
- 收藏
- 关注
原创 Linux中网卡收发包的流程
进来在一个RTOS上移植开发网卡驱动,最终DMA收发包流程打通之后,在使用过程中觉得RTOS的处理逻辑太差了,因此有想法来梳理下Linux中对收发包流程处理,来给一些参考。
2024-08-13 19:30:38
484
原创 gdb命令总结
前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息。导入环境变量和显示环境变量:set environment和show environment。
2024-01-20 15:27:57
926
原创 脏页刷新机制总结
一句话解释:Page Cache用于缓存文件的页数据,Buffer Cache用于缓存块设备(磁盘)的块数据。但由于磁盘都是由文件系统管理的,所以会导致数据会被缓存两次,因此现在Linux已经不再使用Buffer Cache。
2023-11-24 14:16:12
1470
原创 linux 的swap、swappiness及kswapd原理【转+自己理解】
我们一般所说的swap,指的是一个交换分区或文件。从功能上讲,交换分区主要是在内存不够用的时候,将部分内存上的数据交换到swap空间上,以便让系统不会因内存不够用而导致oom或者更致命的情况出现。所以,当内存使用存在压力,开始触发内存回收的行为时,就可能会使用swap空间。内核对swap的使用实际上是跟内存回收行为紧密结合的。为什么要进行内存回收?哪些内存可能会被回收呢?回收的过程中什么时候会进行交换呢?具体怎么交换?下面我们就从这些问题出发,一个一个进行分析。为什么要进行内存回收?
2023-08-17 21:00:11
649
转载 hung task机制
其实进程长期处于D状态肯定是不正常的,内核中设计D状态的目的是为了让进程等待IO完成,正常情况下IO应该会顺利完成,然后唤醒相应的D状态进程,即使在异常情况下(比如磁盘离或损坏、磁阵链路断开等),IO处理也是有超时机制的,原理上不会存在永久处于D状态的进程。长期以来,处于D状态(TASK_UNINTERRUPTIBLE状态)的进程都是让人比较烦恼的问题,处于D状态的进程不能接收信号,kill不掉。在一些场景下,常见到进程长期处于D状态,用户对此无能为力,也不知道原因,只能重启恢复。
2023-08-15 16:07:19
200
原创 笔记本外接2K显示器问题记录(集显Intel HD Graphic 3000)
笔记本外接2K显示器问题记录(集显Intel HD Graphic 3000)
2022-10-12 17:25:41
7889
4
原创 字符设备驱动总结
01、入学测验①、在linux上安装一个软件常用的方式有(A、B、C、D)A、make install B、通过rpm和deb文件 C、通过yum和apt-get D、下载压缩包
2022-09-07 17:09:10
540
原创 趣谈Linux操作系统
开篇:分为六个阶段:熟练使用Linux命令行、学会Linux程序设计、了解Linux内核机制(目前自己处于这个阶段)、阅读Linux内核代码、实验定制Linux组件、实践没有终点。入学测验题:①、在linux上安装一个软件常用的方式有(ABCD).A、make install B、通过rpm和deb文件 C、通过yum和apt-get D、下载压缩包设置PATH②、下列过程在实模式下运行有(不知道).A、BIOS加载启动扇区 B、启动扇区加载Grub的...
2022-04-09 22:40:00
1819
原创 内存脏页参数介绍
1、参数介绍:[root@ecs-262232 ~]# sysctl -a| grep dirtyvm.dirty_background_bytes = 0vm.dirty_background_ratio = 10vm.dirty_bytes = 0vm.dirty_ratio = 30vm.dirty_expire_centisecs = 3000vm.dirty_writeback_centisecs = 500vm.dirty_background_ratio...
2022-04-02 17:33:35
1582
原创 MySQL学习总结
一、常用命令1、进入MySQL mysql -u username -p密码 修改密码 mysqladmin -u username -p旧密码 password 新密码2、SHOW DATABASES; --显示所有的数据库3、USE Databasename; --进入数据库4、CREATE DATABASE Databasename; --创建数据库 DROP DATABASE Databasename;--直接删除数据库,不需要提示 mysqladmin DROP
2022-03-28 20:15:18
746
原创 Effective C++改善程序与设计的55个具体做法笔记
让自己习惯C++Item1:将C++视为federation of languagesItem2:用consts、enums和inlines取代#define 限定作用于,会放在常量区,但枚举不占用对象的存储空间,除非是枚举变量。Item3:尽可能的使用const const成员函数,相当于const this对象,可以操作const对象和不改变对象,两个成员函数如果只是常量性不同可以重载。 const写在类型之前或者类型之后都是可以的,.........
2021-12-07 11:31:57
691
原创 C++四种强制转换总结介绍
C++语言中新增了四个关键字static_cast、const_cast、reinterpret_cast和dynamic_cast,下面介绍对应四种转换的特点。1)static_cast静态类型转换,是良性的,一般不会有风险。用法:static_cast <类型说明符> (变量或表达式)int b = 2;double a = static_cast<double>(b);主要有以下几种用法: ①、用于基...
2021-11-30 23:33:37
2310
原创 Docker基本介绍
一简介。 Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。二Docker与OS。 内核支持:Docker需要内核支持,3.10+。 Docker进程:'/usr/bin/docker'既是server端也是clientdocker进程:/usr/bin/docker daemon --storage-driver=overlay -H fd://docker不制定dameon参数时作为客户端dock...
2021-11-16 15:27:19
5512
1
原创 C++ Primer第五版 第十五章习题答案
C++ Primer第五版 第十五章习题答案3、4、5、3、#include<iostream>#include<string>class Quote{public: Quote(const std::string &book,double sales_price):bookNo(book),price(sales_price){ } std::string isbn() const { return bookNo; } virtual doub
2021-10-17 10:14:49
243
原创 数据结构分类总结
文章目录树树的构建树树的构建树类型的定义:typedef struct node{ int value; struct node * lchild; struct node * rchild;}BSTNodebool InsertBST( BSTNode *& tree, int value ){ if ( tree == NULL ){ tree = new BSTNode(); tree->value = value; tree->lchild
2021-09-14 13:49:42
115
原创 网络知识总结
目录一、MTU和MSS二、MTU和MSS三、MTU和MSS一、MTU和MSSMTU (Maximum Transmission Unit)二、MTU和MSSMTU (Maximum Transmission Unit)三、MTU和MSSMTU (Maximum Transmission Unit)
2021-08-19 20:25:52
107
原创 C++Primer第五版 十六章课后习题答案
C++ Primer第五版 第十6章习题答案16.116.1template <typename T> int campare(const T&v1,const T&v2){//T表示一个类型,而T的实际类型在编译时根据实际情况决定 if (v1>v2) { return 1; } else { return -1; } return 0;}...
2021-01-27 14:02:02
254
原创 new和::new
#include<iostream>#include<cstdlib>#include<new>using namespace std;class T{ public: T(){ cout << "构造函数。" << endl; } ~T(){ cout << "析构函数。" << endl; } void * operator new(size_t sz){ .
2020-11-05 21:44:11
718
原创 Git的使用学习
一、创建自己的repository。二、安装git1、从https://git-scm.com/download/win下载下来和你电脑对应的git软件,然后点击默认选项到自己制定的目录,在制定目录下就可以打开git_bash了。2、①由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密,所以必须要让GitHub仓库认证你的SSH key,因此需要先生存SSH key。在git控制台输入如下命令:ssh-keygen –t rsa –C kwdeemail@163.com如果有询问输
2020-10-21 23:35:57
636
1
原创 STL源码剖析-1.9 可能领你困惑的C++语法。
STL源码剖析-1.9 可能领你困惑的C++语法组态3: __STL_STATIC_TEMPLATE_MEMBER_BUG组态3: __STL_STATIC_TEMPLATE_MEMBER_BUG#include <iostream>using namespace std;
2020-10-14 20:26:01
132
原创 C++Primer第五版 第十五章习题答案
C++ Primer第五版 第十五章习题答案3、3、#include<iostream>#include<string>class Quote{public: Quote(const std::string &book,double sales_price):bookNo(book),price(sales_price){ } std::string isbn() const { return bookNo;
2020-10-12 19:26:26
349
原创 清华大学计算机系统课程笔记-第十一讲和第十二讲
文章目录第十一讲 进程和线程11.1 进程的概念第十一讲 进程和线程11.1 进程的概念以下统称为PCB
2020-09-27 23:56:27
518
基于C/S的一个文件传输
2018-09-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人