Linux
文章平均质量分 73
CPriLuke
享受技术,‘漫漫’积累
展开
-
linux内核7-系统调用
文章目录1. 概念1.1 ABI与API1.2 系统调用与中断,异常比较1.3 调用流程1.4 调用流程优化2 实例-日志收集系统2.1 内核编译2.2 内核模块2.3 测试内核模块1. 概念1.1 ABI与API问题: 保持一个稳定的 ABI 和保持一个稳定的 API相比,谁更困难,为什么?ABI: ABI是一系列约定的集合,可以说调用惯例(calling convention)就是ABI。因此, ABI是和具体CPU架构和OS相关的。具体而言, ABI包含以下内容:1. 一个特定的处理器指令原创 2021-01-26 00:46:17 · 342 阅读 · 1 评论 -
linux杂项
文章目录1. linux工具分布1. linux工具分布原创 2021-01-24 22:10:47 · 136 阅读 · 0 评论 -
linux内核5-中断
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录概念1.1 中断机制与策略分离1.2 中断子系统1.3 中断向量和描述符表中断处理机制2.1 中断描述表初始化2.2 中断处理过程2.3 中断请求队列2.4 IRQ数据结构从异常、中断,系统调用返回代码分析中断返回中断下半部分3.1 软件中断机制3.2 时钟中断tasklet的使用概念中断是CPU对系统发生某个时间做出的一种反应(`what`), 中断的引入是为了支持CPU和设备之间的并行操作(`why`),CPU在收到中断信原创 2021-01-18 01:44:15 · 450 阅读 · 0 评论 -
mmap为什么更高效?
mmap是一种内存映射文件的方法,它将一个文件映射到进程的地址空间,建立文件磁盘地址与虚拟内存的一种对应关系,如此,读写相应的虚拟地址而直接读写对应的文件内容了,这样映射的最大好处是进程可以直接读取内存,避免了频繁的使用read,write等系统调用。这里需要注意:mmap并不是直接分配内存,它所做的最重要的工作就是为进程映射区的虚拟地址建立页表项。从下图可以看出,应用程序虚拟地址空间有多个区域构成,mmap映射的虚拟内存再heap和栈之间的空余部分。...原创 2020-12-12 17:03:13 · 735 阅读 · 0 评论 -
内存1G malloc1.6G是否成功?
在物理内存为1G的计算机中,能否malloc(1.6G)的内存,为什么?编写程序,实际验证是可以申请成功的,也支持正常读写,原因:malloc的申请的内存只有在用到的时候才会通过请页机制放入内存中,且可以只存放部分内容。此外,如果写入后面的内容是否成功会触发交换机制,腾出一部分内存,继续进行;具体原理见:https://blog.csdn.net/CPriLuke/article/details/111026195#define SIZE (int)(1.6 * 1024 * 1024 * 1024)原创 2020-12-12 13:42:51 · 682 阅读 · 0 评论 -
linux内核4-内存管理
内存管理导读一、 进程空间1.1 进程空间布局1.2 进程空间数据结构1.2.1 mm_struct1.2.2 vm_area_struct二、用户空间管理1. 创建2. 虚存映射2.1 VMA新建方法2.2 虚拟区实例2.读入数据5 总结1 参考资料导读lscpu命令查看cpu结构, 就看到linux内核缓存,[root@localhost ~]# lscpuL1d cache: 32K //1级数据缓存L1i cache: 32K //1级原创 2020-12-12 13:30:16 · 554 阅读 · 0 评论 -
linux内核1-hlist pprev为什么是二次指针
理由:这样hash数组只用占一个指针 如果不是pprev, 插入头节点就需要强转下面给出示例#include <stdio.h>struct hlist_head { struct hlist_node *first; };struct hlist_node { struct hlist_node *next, *prev; };static void hlist_add_head(struct hlist_node *n, struct hlist原创 2020-12-09 23:40:17 · 416 阅读 · 0 评论 -
linux内核2-内存寻址
查看https://blog.csdn.net/qq_34258344/article/details/95519020转载 2020-12-09 23:35:18 · 109 阅读 · 0 评论 -
linux内核3-进程管理
进程概述状态转换#define TASK_RUNNING 0#define TASK_INTERRUPTIBLE 1#define TASK_UNINTERRUPTIBLE 2#define __TASK_STOPPED 4#define __TASK_TRACED 8...进程亲属关系树形结构体real_parent 创建当前进程的进程, parent相当于养父, 比如:父进程销毁,子进程归init进程管理;线程组: 一个进程创建多个线程, 线程才是内核的调度单位, 线程原创 2020-12-09 23:27:21 · 198 阅读 · 0 评论 -
《unix环境编程》很多有用函数整理-1
超时时间, 可以使用clock_gettime但并不是所有平台都支持,所以可以使用gettimeofday’’’#include <sys/time.h>#include <stdlib.h>voidmaketimeout(struct timespec *tsp, long minutes){ struct timeval now; /* get t...原创 2020-02-08 21:50:57 · 254 阅读 · 0 评论 -
vim在不相等的多行末尾插入相同字符串
思路ctrl+v选择要插入的行, 然后按下$,再按下A末尾插入,输入需要插入的字符,然后按下ESC键,示例如下:原创 2020-01-23 20:25:32 · 1237 阅读 · 0 评论 -
vim 多行替换单词
思路先进入ctrl+v 字符视图模式后,选择需要替换的多行单词,然后按下c(剪切字符)后,写入需要替换的单词,然后再按esc原创 2020-01-23 11:45:23 · 846 阅读 · 0 评论 -
vim字母大小写转换
以下均在normal模式进行#单个字符大小写切换,使用~字符~#整个单词进行小写切换{n} + guw : u代表小写 w 代表单词 n代表几个单词#整个单词进行大写切换{n} + gUw : u代表大写#鼠标后的所有字符进行大小写切换{n} + gUU#鼠标后的所有字符进行小写切换{n} + guu ...原创 2020-01-23 10:54:32 · 725 阅读 · 0 评论 -
vim 多行合并一行
多行合并命令#两行合并,行之间带空格shift + j#两行合并,行之间没有空格g + shift + j#如果是多行合并,前面加个n{n} + shift + j{n} + g + shift + j原创 2020-01-22 11:51:18 · 6103 阅读 · 0 评论 -
vim格式化文本
使用情景比如我们需要将如下的电话号码进行格式化123456789234567891345678901#格式化后的文本为(123) 456-789(234) 567-891(345) 678-901 需要使用的命令#创建一个宏normal 宏为p:qp#结束一个命令q#运用这个命令到后面两行2@p #查看这个命令reg p具体视频链接视频教程链接....原创 2020-01-22 11:29:42 · 265 阅读 · 0 评论 -
centos7 配置永久路由
网上很多教程修改配置进行配置,本教程使用nmtui(网络管理界面)进行配置:比如环境如下:1.本地网卡ens33配置一个静态IP:192.168.10.10/24,本地网卡的网关地址为:192.168.10.1,2.远程服务器在另外一个网段其IP地址为:192.168.20.20/24那么在centos下可以这样配置:第一步:nmtui配置上述信息第二步:systemctl...原创 2019-10-27 14:42:49 · 1246 阅读 · 0 评论 -
部署DNS从服务失败,nslookup访问www.linuxprobe.com失败
现象:slaves里面同步192.168.10.arpa和linuxprobe.com,但nslookup找不到www.linuxprobe.com原因:1.从服务dns没有配置 修改:nmtui 命令添加dns地址后,重启网络nmtuisystemctl restart network2.在vim /etc/named.conf修改dns查询方式为any,如果...原创 2019-10-20 15:30:15 · 897 阅读 · 0 评论 -
Linux文件搜索
1)whereis简单快捷,从数据库中搜索,whereis 只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)$whereis -b who //只查询名为who的可执行文件 2)locate 快而全,本质通过通过“ /var/lib/mlocate/mlocate.db ”数据库查找,系统自动每天更新一次,可通过updatedb进行更新,它可以用来查找指定目录下的不同文...原创 2018-04-30 11:24:38 · 182 阅读 · 0 评论 -
tar,zip,rar命令
1)使用zip打包的典型范例$ zip -r -9 -q -l -o deskop.zip /home/destop/Desktop //$ du -h deskop.zip$ file deskop.zip$ unzip -q desktop.zip -d newDeskTop//此外,unzip经常会用到以下两个命令:$ unzip -l desktop.zip ...原创 2018-04-30 11:42:23 · 372 阅读 · 0 评论 -
常用vim命令整理
在 Linux shell模式下,我们经常需要打开文件进行编辑,因此掌握常用的vim命令,提供工作效率就显得尤为重要,以下为常用的vim命令总结: 1)大上小下,即大写字母一般朝上,小写字母一般朝下, 如: A)o插入下一行, O:插入上一行 B) p(小写)代表粘贴至光标后(下), P(大写)代表粘贴至光标前(上) ...原创 2018-04-25 21:51:19 · 301 阅读 · 0 评论 -
centos下ssh 普通用户安全密钥登陆
环境:一台为客户端,一台为服务器,两个tcp连接正常。服务器ip:192.168.10.40 普通用户名:lufoserver客户机ip:192.168.10.20 用户名:lufoclient步骤一:配置普通用户可以登陆ssh切换到root权限后,通过vim打开vim /etc/ssh/sshd_config#lufoserver为服务器的普通用户# Authenticati...原创 2019-10-03 16:32:25 · 1793 阅读 · 0 评论 -
centos将repo切换为光盘镜像iso
在没有网络情况下,通过iso镜像进行yum安装的方法第1步:确定vmware虚拟机制存在磁盘镜像,注意“已连接”和“启动时连接”要勾选第2步.把光盘中的系统镜像挂载在/media/cdrom目录[root@lufoserver lufoserver]# mkdir -p /media/cdrom[root@lufoserver lufoserver]# mount /de...原创 2019-10-03 18:00:51 · 850 阅读 · 0 评论 -
apache更改网站目录
目标:将默认网站修改成/home/wwwroot1.修改配置文件[root@lufoserver lufoserver]# [root@lufoserver lufoserver]# mkdir -p /home/wwwroot/[root@lufoserver lufoserver]# echo "this new web directory" >> /home/...原创 2019-10-03 23:59:58 · 1319 阅读 · 0 评论 -
apache添加个人用户主页
可能遇到的两个问题:1.请求返回forbidden,原因: 1)原因1:home/[user]目录没有改成755,若用户为serverchmod -Rf 755 /home/server 2)selinux中http_enable_homedirs = off,需要修改为on[lufoserver@lufoserver ~]$ getsebool -a | grep h...原创 2019-10-04 15:07:03 · 828 阅读 · 0 评论 -
shell环境变量
1.环境变量的操作1)declare :命令创建一个变量名为 tmp 的变量 其实也可以不用 declare 预声明一个变量,直接即用即创建,这里只是告诉你 declare 的作用,这在创建其它指定类型的变量(如数组)时会用到。$ declare temp 2)= :号赋值运算符,将变量 tmp 赋值为 desktop$ temp = hello_world3)echo = $ 读取变量($表示引...原创 2018-04-30 11:15:29 · 1729 阅读 · 0 评论