- 博客(5)
- 收藏
- 关注
原创 浅谈内存分配原理——Linux(纯白话简单易懂)
划分为不同大小的块,并将相同大小的块排列组合成一个链表,当程序申请内存时,会从链表中查找合适的内存块,并将其从链表中删除,如果这个块比申请的大,它会被分割成更小的块,并将其存放在合适的链表中,直至满足程序需求;由于Buddy System每次分配的内存大小为1页,最小也就是4KB,那么,当内核向伙伴系统申请大小为5KB的内存时,如果让Buddy System来分配的话,会分配至少2页内存(8KB),会造成大量内存碎片,严重浪费内存资源。,此时,就需要引入另一个概念,Slab分配器。
2024-02-07 18:06:31 312 1
原创 Linux扩容报错:NOCHANGE: partition 1 could only be grown by -33 [fudge=2048]
再仔细查看自己分区的过程,由于在分区时,First sector这里,也就是起始磁柱,由于自己马大哈写了+20G,那么也就是我们是由20G的磁柱开始划分,后面Last sector这里选择了默认,也就是直接到最后一块磁柱,因此,系统以为我们从20G的标志位开始划分,一直到磁柱末尾为结束,给我们划分了50G,而由于growpart时,是将磁柱后的剩余所有部分纳入已有容量,而磁盘后面已经没有空余的磁柱了,因此扩容失败。后来fdisk -l查看到,起始磁柱为什么是从这里开始的?一般起始位置不都是2048吗?
2024-01-13 03:05:21 1090
原创 tcp_recycle与tcp_reuse的简易理解(个人记录用)
由于tcp四次挥手断开时,为保证数据传输完毕与断开时最后的ack请求,能准确到达服务器,因此会等待2msl(为了更好理解time wait状态,附上大佬的图对照下),这个msl是指在客户端收到FIN开始,发出ACK开始计时的,如果客户端发出ACK后,服务端2msl内没有收到ACK,那么服务端会继续发送FIN,这就是重传;是的,tcp_recycle是根据客户端最后一次挥手时,发出ACK的时间戳作为标志位,时间戳超过这个点,那么就认为这个链接已经处于确认ACK中,无需等待了。也就是根据什么作为标志位?
2024-01-13 01:46:29 2221
原创 ssh链接断开:Socket error Event: 32 Error: 10053.Connection closing…Socket close…..
Linux会话断开连接(xshell)
2022-09-21 18:38:54 1741 1
原创 结构化命令if-then-else
例如下图代码,使用了-f与布尔运算的AND形式,先检查test3是否是一个文件,再通过-x检查这个文件是否可执行,检查成功通过则输出“This is a file and it’s can execute”这个语法格式也非常简单,因为在结构化命令中if-then-else语句是基础语句,接下来举例语句的正确用法,以便我们更好的了解结构化命令。shell执行了if行中的pwd命令,由于退出状态码为0(执行成功),所以会继续执行then部分的echo语句,并输出对应结果。这样是不是十分友好呢?
2022-09-21 18:22:26 2830
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人