随笔分类 -  Linux

摘要:1.Cgroup简介 cgroups(Control Groups)是Linux内核的一个特性,用于对进程组的物理资源(如CPU、内存、磁盘I/O等)进行细粒度的控制和监控。cgroups可以帮助你限制、记录和隔离资源使用,但它本身并不直接用来“拉高CPU负载”。相反,cgroups通常用于限制进程 阅读全文
posted @ 2024-11-01 13:54 Emma1111 阅读(700) 评论(0) 推荐(0) 编辑
摘要:1.systemd简介 Systemd是Linux系统工具,用来启动守护进程,已成为大多数发行版的标准配置。 历史上Linux的启动一直采用init进程,采用下面命令来启动服务: $ sudo /etc/init.d/apache2 start # 或者 $ service apache2 star 阅读全文
posted @ 2024-10-15 16:14 Emma1111 阅读(371) 评论(0) 推荐(0) 编辑
摘要:Linux本机与本机socket通信会走网卡吗? 1.127.0.0.1本机网络IO需要经过网卡吗? 不需要经过网卡,即使把网卡拔了本机网络还是可以正常使用的。 本机网络IO的内核执行流程: 跨机网络IO的流程: 2.数据包在内核中是什么走向,和外网发送相比流程上有什么区别? 本机网络 IO 和跨机 阅读全文
posted @ 2024-07-17 17:37 Emma1111 阅读(32) 评论(0) 推荐(0) 编辑
摘要:1.读取网卡mac地址 可以通过ioctl(sock,SIOCGIFHHWADDR,&ifr)读取mac地址,对任意类型的socket都适用,只需指定第三参数struct ifreq ifr的ifr.ifr_name,这个ifr_name就是网络设备的名字,如eth0,eth1,lo等,在/proc 阅读全文
posted @ 2024-07-17 17:36 Emma1111 阅读(37) 评论(0) 推荐(0) 编辑
摘要:1.Selinux简介 selinux全称(Security-Enhanced Linux)安全增强型Linux,它是一个Linux内核模块,也是Linux的一个安全子系统。 2.Selinux的作用及权限管理机制 2.1 Selinux的作用 SELinux 主要作用就是最大限度地减小系统中服务进 阅读全文
posted @ 2024-03-28 21:31 Emma1111 阅读(430) 评论(0) 推荐(0) 编辑
摘要:1.ip route命令 1.1 ip查看已有路由 ip route list # 列出默认路由表,和下面这句结果相同 ip route show table main 结果(以Ubuntu为例): zx@ubuntu:~/Desktop/codes/muduo/build/release-cpp1 阅读全文
posted @ 2024-03-24 10:02 Emma1111 阅读(1886) 评论(0) 推荐(2) 编辑
摘要:语法规则 目标 ... : 依赖 ... 命令1 命令2 ... Makefile的核心规则,类似于一位厨神做菜,目标就是做好一道菜,那么所谓的依赖就是各种食材,各种厨具等等,然后需要厨师好的技术方法类似于命令,才能作出一道好菜。 同时这些依赖也有可能此时并不存在,需要现场制作,或者是由其他厨师做好 阅读全文
posted @ 2023-10-25 16:16 Emma1111 阅读(55) 评论(0) 推荐(0) 编辑
摘要:# 内核态和用户态的理解 ## 特权级 在Unix/Linux系统中,fork的工作实际上是以系统调用的方式完成相应功能的,具体的工作是由sys_fork负责实施。其实无论是不是Unix或者Linux,对于任何操作系统来说,创建一个新的进程都是属于核心功能,因为它要做很多底层细致地工作,消耗系统的物 阅读全文
posted @ 2023-08-14 18:15 Emma1111 阅读(224) 评论(0) 推荐(0) 编辑
摘要:# 进程退出 当一个进程退出后,操作系统会释放掉这个进程的资源。包括这个进程分配的内存,打开的文件等等。所以进程退出后,不会出现内存泄漏的情况,进程一旦退出,所占的整个虚拟内存都被销毁,所有内存资源都会被系统回收 |函数|描述| | | | |exit|执行完整的C库终止过程,终止进程,并向主机环境 阅读全文
posted @ 2023-07-01 22:39 Emma1111 阅读(528) 评论(0) 推荐(0) 编辑
摘要:# tasklet特性 (1)一种特定类型的tasklet只能运行在一个CPU上,不能并行,只能串行执行 (2)多个不同的类型的tasklet可以并行在多个CPU上 (3)软中断是静态分配的,在内核编译好后,就不能再改变了。但tasklet灵活很多,可以在运行时改变 tasklet是在两种软中断类型 阅读全文
posted @ 2023-06-17 22:38 Emma1111 阅读(325) 评论(0) 推荐(0) 编辑
摘要:# 软中断 软中断是中断下半部的典型处理机制,是随着SMP的出现应运而生的,也是tasklet实现的基础,软中断的出现是为了满足中断上半部和下半部的区别,使得对时间不敏感的任务延后执行,而且可以在多个CPU上并行执行,使得总的系统效率可以更高。 **软中断有以下特性**: * 产生后并不是马上可以执 阅读全文
posted @ 2023-06-11 12:13 Emma1111 阅读(1768) 评论(0) 推荐(0) 编辑
摘要:# fd是什么? fd是File descriptor的缩写,即文件描述符,fd是一个非负证书,本质是一个索引值。 当打开一个文件时,内核向进程返回一个文件描述符(open系统调用返回得到),后续read、write这个文件时,只需要用这个文件描述符来标识这个文件,将其作为参数传入read、writ 阅读全文
posted @ 2023-06-04 16:35 Emma1111 阅读(1506) 评论(0) 推荐(0) 编辑
摘要:# Linux中断 ## Linux中断处理过程 1.使能中断,初始化相应的寄存器 2.注册中断服务函数,也就是向irqTable数组的指定标号处写入中断服务函数 3.中断发生以后进入IRQ中断服务函数,IRQ的中断服务函数在irqTable里面查找具体的中断处理函数,找到以后执行相应的中断处理函数 阅读全文
posted @ 2023-06-03 17:39 Emma1111 阅读(361) 评论(0) 推荐(0) 编辑
摘要:进程 进程,描述的是程序的执行过程,是运行着程序的代表,在操作系统中,每个进程的内存空间都是独立的,使用多进程并发有两个缺点:一是内核的管理成本高,而是无法简单地通过内存同步数据(进程运行的虚拟内存空间),很不方便,于是多线程模式就出现了。 线程 线程是操作系统能够运行运算调度的最小单位。它被包含在 阅读全文
posted @ 2023-04-29 12:25 Emma1111 阅读(97) 评论(0) 推荐(0) 编辑
摘要:mmap简介 mmap是零拷贝技术的一种实现 使用系统调用读写文件 修改一个文件的内容需要三个步骤: 1.把文件内容(File)读入内存中(page cache) 2.修改内存中的内容(在用户空间) 3.把修改后用户空间的数据写入page cache,再同步到File中 使用如下代码实现上面过程: 阅读全文
posted @ 2023-04-26 22:10 Emma1111 阅读(497) 评论(0) 推荐(0) 编辑
摘要:框架分析 框架可以分为两部分看:控制流+数据流,之前已经大概的描述了控制流,数据流部分就是video buffer,V4l2 buffer的管理是通过videobuf2来完成的,它充当于用户空间和驱动空间之间的中间层,并提供模块化的内存管理功能。 上图大体包含了videobuf2的框架 1.vb2_ 阅读全文
posted @ 2023-04-23 21:25 Emma1111 阅读(676) 评论(0) 推荐(0) 编辑
摘要:Linux进程管理包括进程调度,中断处理,信号,进程优先级,进程切换,进程状态,进程内存等等。 什么是进程 进程是在处理器上执行的一个实例,进程可使用任意资源以便Linux内核可以处理完成它的任务。在Linux上运行的所有进程都是通过task_struct结构来管理的,被称为进程描述符。一个进程描述 阅读全文
posted @ 2023-04-04 22:36 Emma1111 阅读(136) 评论(0) 推荐(0) 编辑
摘要:简介 V4L2是Video for linux2的简称,是Linux中关于视频设备的内核驱动框架。 常用结构体: 定义在include/linux/videodev2.h struct v4l2_requestbuffers // 申请帧缓冲,对应命令VIDIOC_REQBUFS struct v4 阅读全文
posted @ 2023-04-01 20:24 Emma1111 阅读(2777) 评论(0) 推荐(0) 编辑
摘要:系统信息 PS命令 ps -a:显示现行终端机下所有程序,包括其他用户的程序 ps u:已用户为主的格式来显示程序状况 ps x:显示所有程序,不以终端机来区分 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 进程拥有者 进程ID CPU 阅读全文
posted @ 2023-01-12 10:35 Emma1111 阅读(150) 评论(0) 推荐(0) 编辑
摘要:简介 工作队列(workqueue)是一种转移任务执行环境的工具,当系统产生一个中断时,可以在中断处理函数里做一些紧急地操作,然后将另外一些不那么特别紧急,而且需要一定时间的任务封装成函数交给工作队列执行,这是函数的执行环境就从中断环境变成了线程环境,这就是Linux里经常提及的中断处理“下半部”。 阅读全文
posted @ 2023-01-07 15:31 Emma1111 阅读(1688) 评论(0) 推荐(0) 编辑