自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 《深入Linux内核架构》第3章 内存管理(1)

本专栏文章将有70篇左右,欢迎+关注,订阅后续文章。

2024-04-18 13:47:43 77

原创 《深入Linux内核架构》第2章 进程管理和调度 (5)

本专栏文章将有70篇左右,欢迎+关注,订阅后续文章。

2024-04-17 09:18:08 666

原创 《深入Linux内核架构》第2章 进程管理和调度 (6)

本专栏文章将有70篇左右,欢迎+关注,订阅后续文章。

2024-04-16 14:24:14 753

原创 《深入Linux内核架构》第2章 进程管理和调度 (4)

本专栏文章将有70篇左右,欢迎+关注,订阅后续文章。

2024-04-15 14:52:42 917

原创 《深入Linux内核架构》第2章 进程管理和调度 (3)

本专栏文章将有70篇左右,欢迎+关注,订阅后续文章。

2024-04-15 09:53:01 925

原创 《深入Linux内核架构》第2章 进程管理和调度 (1)

本专栏文章将有70篇左右,欢迎+关注,查看后续文章。

2024-04-15 09:25:52 1057

原创 《深入Linux内核架构》第2章 进程管理和调度 (2)

本专栏文章将有70篇左右,欢迎+关注,订阅后续文章。

2024-04-10 15:07:43 1055

原创 《深入Linux内核架构》第1章 简洁和概述

简单介绍Linux内核,后续文章详解

2024-04-10 11:13:55 936

原创 《深入Linux内核架构》第4章 进程虚拟内存(2)

所有进程的虚拟空间总和比物理内存大得多,因此只有最常用的虚拟空间才映射到物理内存。当访问一个未映射物理内存的虚拟内存时,进行按需调页。按需调页步骤:进程访问用户空间虚拟地址,但无法通过页表找到对应物理地址。CPU触发缺页异常。通过虚拟地址对应address_space结构体,找到磁盘数据。分配物理内存页,读取磁盘数据到内存。建立正确页表,进程恢复执行。后续详解。

2024-04-09 19:52:08 540 1

原创 《深入Linux内核架构》第4章 进程虚拟内存(1)

一个进程的整个虚拟地址空间(0-3G)中只有少部分映射到物理页。其余虚拟地址在访问时通过缺页异常处理,分配物理页,并建立页表项。MMU作用:将虚拟地址转换为物理地址。内部包含TLB硬件,用于缓存页表,加快转换速度。

2024-04-09 17:07:47 974 1

原创 《深入Linux内核架构》第3章 内存管理(7)

伙伴系统(buddy)按页分配,粒度大。所以引入slab分配器。slab提供对象缓存与分配。slab对象分为:专用:task_struct,mm_struct,vm_area_struct等。普通:kmalloc-8,kmalloc-16,dma-kmalloc-96等。slab分配器优点:分配快。从预先分配好的对象池中分配。优先分配已缓存的对象,增加cache命中。伙伴系统在CPU缓存中按页对齐,造成某些缓存行过度使用,有些未使用。

2024-04-03 14:09:24 674

原创 《深入Linux内核架构》第3章 内存管理(6)

本节讲解vmalloc, vmap,kmap原理。

2024-04-03 14:01:01 813

原创 《深入Linux内核架构》第3章 内存管理(5)

系统初始化完毕后,bootmem分配器停用,伙伴系统运行并负责内存分配。伙伴系统,即buddy。特点:速率快,效率高。

2024-04-01 15:49:50 937 1

原创 《深入Linux内核架构》第3章 内存管理(4)

内核编译链接时,vmlinux.ld.S确定内核的_text段,__edata等段,以及符号函数的虚拟地址,并存储在system.map文件。如想要从结点C分配一个高端内存域的内存,查看上图的2,优先从C2中分配,C2无法满足分配需求,依次尝试C1 C0 D2 ....查看系统物理地址空间分布,包括所有硬件设备,如PCIE,RAM,SPI,PHY,RTC,flash等。若值为0xC0000000,即用户空间3GB,内核空间1GB。per-cpu变量保存在ELF文件单独的段中,如.data..percpu。

2024-03-29 09:44:47 621

原创 《深入Linux内核架构》第3章 内存管理(3)

4. page fault中断处理中,通过页置换或页换出找到可用物理页,并将该物理页映射到引起错误的虚拟地址。5. 最后更新页表项,包括设置PTE_PRESENT,也可能设置PTE_DIRTY(页被写入)。4. 根据虚拟地址算出PMD index,再结合PMD物理地址,得到PTE物理地址。定义一个页表项PTE,用于指向page物理页,并设置相应属性pgprot。eXecute Never,该页面将不允许执行指令,如堆栈,数据段页面。2. 创建页表项PTE,并标记空或者无效,并设置页表项为保护状态。

2024-03-26 11:47:54 565

原创 《深入Linux内核架构》第3章 内存管理(2)

zone和page结构体详解,包括zone的水位计算,zone冷热页机制,LRU链表等

2024-03-25 14:26:53 585

原创 《深入Linux内核架构》第3章 内存管理(1)

页帧:指物理内存的一页,通常4K。每页用struct page表示。内存管理包含:大块内存管理:伙伴系统小块内存管理:slab slub slob kmalloc物理非连续内存管理:vmalloc物理内存页帧管理:struct page进程地址空间PAE机制:(Physical Address Extension,物理地址扩展)作用:扩展32位x86 CPU的物理内存寻址范围,允许访问超过2^32(4GB)的物理内存。PAE实现原理:物理地址扩展:地址总线从32位扩展到36位。

2024-03-25 09:28:51 890

原创 《深入Linux内核架构》第2章 进程管理和调度 (6)

进程迁移:含义:把进程从一个CPU就绪队列迁移至另一个CPU就绪队列。作用:CPU负荷均衡。缺点:缓存失效,危害性能。设置进程的亲和力affinity,控制进程可在哪些CPU上运行。对应系统调用:最终设置task_struct->cpus_allowed成员然后调用rebalance_domains -> load_balance,进行负载均衡操作。比较struct rq的进程总负荷,寻找最忙CPU,执行对应调度类的load_balance函数。

2024-03-21 11:04:44 938

原创 《深入Linux内核架构》第2章 进程管理和调度 (5)

实时调度器类,即RT。作用:调度实时进程。

2024-03-20 16:37:28 412

原创 《深入Linux内核架构》第2章 进程管理和调度 (4)

本文讲解CFS实现,即完全公平调度类,用于调度普通进程。

2024-03-20 15:48:41 589

原创 《深入Linux内核架构》第2章 进程管理和调度 (2)

通过task_strcut -> stack,得到该线程的thread_info,再通过thread_info得到cpu_context,即可得到该进程上次执行时的寄存器信息,如pc,sp,r0-r12等。最终给变量start_code,end_code,start_data,end_data,start_brk brk,start_stack,arg_start,arg_end赋值。使用场景:当不同组的用户在一个共享目录下创建新文件,新文件是该目录所属组的权限,而不是创建文件的用户的组权限。

2024-03-19 15:31:49 1171

原创 《深入Linux内核架构》第2章 进程管理和调度 (3)

调度器的任务:1. 执行调度策略。2. 执行上下文切换。无论用户态抢占,还是内核态抢占,最终都调用schedule()函数,执行调度操作,实现进程切换。调度分为:主动调用,周期调度1. 主动调用:schedule()2. 周期调度:时钟中断调用一个进程一直while(1)不睡眠地执行任务,就是通过时钟中断,来调度其他进程的。

2024-03-19 15:29:36 1117

原创 《深入Linux内核架构》第2章 进程管理和调度 (1)

本章内容太多,分为两篇博文。这是第一部分(1)root用户的UID=0。两个系统调用:chroot函数:含义:更改当前进程的根目录,限制进程只能访问新根目录下文件。作用:安全隔离,即使进程被攻击,也无法访问系统的其他部分。在开发测试中,用来创建一个独立的文件系统环境,而不会影响主系统。chdir函数:含义:更改进程当前工作目录,影响了相对路径解析起点,但不限制文件访问范围。作用:简化路径解析,方便文件操作。Linux中可执行文件或共享库的标准格式。

2024-03-13 17:04:28 794

原创 《TCP/IP详解 卷一》第15章 TCP数据流与窗口管理

延迟ACK:使用场景:交互式通信中,当接收方收到数据后,延迟回复ACK,等到有数据发送时再一起携带ACK发送。优点:减少包数量。缺点:延时增大。Nagle算法:使用场景:广域网中RTT较大的环境中,采用Nagle算法,可以合并多个小数据包成一个,再发送。优点:减少包数量,降低传输开销。缺点:延时增大。延迟ACK和Nagle算法会短暂死锁,有的会禁用Nagle算法。通常延时不敏感的交互式应用可使用Nagle。当接收端的接收缓存为空,会通告窗口为0。

2024-03-07 21:43:33 1031

原创 《TCP/IP详解 卷一》第14章 TCP超时与重传

关键机制:SACK:可报告多个范围段的数据已接收。DSACK:报告哪个范围的数重复接收。

2024-03-05 21:16:34 1020

原创 《TCP/IP详解 卷一》第13章 TCP连接管理

建立连接时,通信双方通过TCP选项交换参数。某些选项只被允许在连接建立时发送。TCP头部中选项最多为40字节。ISN:初始序列号。发起方设置的随机的序列号。上图连接关闭时,四次挥手中二三次报文序列号Seq都是L,这是因为没有发送数据。TCP的SYN报文可承载应用数据。由于伯克利的socket API不支持,所以使用少。每个TCP连接基本开销是7个报文段(三次握手,四次挥手)。如果只传输少量数据,可用UDP协议,减少开销。但UDP存在拥塞管理,流量控制等问题。如下图:关闭连接时,四次挥手只完成其中两次。此时即

2024-03-05 15:06:41 966

原创 《TCP/IP详解 卷一》第12章 TCP初步介绍

目录12.1 引言12.1.1 ARQ和重传12.1.2 滑动窗口12.1.3 变量窗口:流量控制和拥塞控制12.1.4 设置重传的超时值12.2 TCP的引入12.2.1 TCP服务模型12.2.2 TCP可靠性12.3 TCP头部和封装12.4 总结关于TCP详细内容,原书有5个章节,本章是初步介绍。IP和UDP没有差错纠正功能。差错校正码:添加冗余比特,以恢复真实信息。ARQ:自动重传请求协议,许多通信协议使用,如TCP。 即超时没收到ACK的话,重传数据。序列号(Sequence Nu

2024-03-01 17:24:10 1266

原创 《TCP/IP详解 卷一》第11章 DNS

DNS:Domain Name Systemhost name可作为域名。DDNS(Dynamic Domain Name System): 作用: 即使主机IP改变时,也可用用固定域名来访问。 实现原理: IP改变时,主机DDNS客户端将新IP通知服务器,DDNS服务器就创建新IP-域名映射。 使用场景: 远程控制(如远程访问家中智能设备)。花生壳网站可提供DDNS服务。名称

2024-02-29 21:34:12 1228

原创 《TCP/IP详解 卷一》第10章 UDP 和 IP 分片

UDP是简单协议。需要组播广播时使用UDP,可避免连接开销。UDP使用场景:多媒体,P2P。

2024-02-28 21:55:54 1485 1

原创 《TCP/IP详解 卷一》第9章 广播和组播

两种IPv4广播地址:受限(255.255.255.255)定向(如192.168.1.255)IPv4组播MAC:前缀01:00:5e+组播IP地址的低23位。IPv6组播MAC:16位前缀33:33+组播IP地址的低序32。IGMP和MLD中鲁棒性变量:一个时间值。表示如果路由器在该时间内没有再收到成员报文,路由器将成员从组播组成员列表中移除。如果没有鲁棒性变量,当网络抖动或不稳定性时。不好影响:路由器过早认定主机已离开组播组,过早将主机从成员列表中删除,导致主机无法接收到组播流量。

2024-02-27 21:10:29 1142

原创 《TCP/IP详解 卷一》第8章 ICMPv4 和 ICMPv6

目录8.1 引言8.1.1 在IPv4和IPv6中的封装8.2 ICMP 报文8.2.1 ICMPv4 报文8.2.2 ICMPv6 报文8.2.3 处理ICMP报文8.3 ICMP差错报文8.3.1 扩展的ICMP和多部报文8.3.2 目的不可达和数据包太大8.3.3 重定向8.3.4 ICMP 超时8.3.5 参数问题8.4 ICMP查询/信息类报文8.4.1 回显请求 / 应答8.4.2 路由器发现:路由器请求RS和通告RA8.4.3 本地代理地址发现请求/应答8.4.4 移动前缀请求/通告8.4.5

2024-02-26 22:24:12 1408

原创 《TCP/IP详解 卷一》第7章 防火墙和NAT

代理防火墙:一种应用层网关ALG。每个应用都需要在防火墙上有自己的代理处理程序,以便修改其中载荷。对于NAT后的内网服务器,需在NAT上主动配置端口转发,以允许外网流量的主动访问。路由器收到报文后,一般先路由表查找,再NAT。如果先NAT,后查找路由表,后果:路由表查找不准确。连接追踪可能无法正确识别或跟踪连接的状态。安全问题,未授权报文可能被错误转发到网络中。

2024-02-26 17:45:04 1496

原创 《TCP/IP详解 卷一》第6章 DHCP

目录6.1 引言6.2 DHCP6.2.1 地址池和租用6.2.2 DHCP和BOOTP消息格式6.2.3 DHCP和BOOTP选项6.2.4 DHCP协议操作6.2.5 DHCPv66.2.6 DCHP中继6.2.7 DHCP认证6.2.8 重新配置扩展6.2.9 快速确认6.2.10 位置信息(LCI和LoST)6.2.11 移动和切换信息(MoS和ANDSF)6.2.12 DHCP嗅探6.3 无状态地址自动配置6.4 DHCP 和 DNS 交互6.5 以太网上的PPP6.6 与系统配置相关的攻击6.7

2024-02-23 22:21:34 1278 1

原创 《TCP/IP详解 卷一》第5章 Internet协议

TCP UDP ICMP IGMP协议都需要IP封装。IPv4头部格式:版本:IP协议版本,值为4。IHL:头长度,最大值为15,即头部最长4*15字节,一般无IP选项时值为5,即IP头为20字节。DS+ECN:最初为8位服务类型ToS,使用少,已被重新定义。即现在的6位区分服务DS和2位显示拥塞通知ECN。总长度:表示IP报文头和载荷的总长度,最大为65535字节。标识:用于分片重组,同一个报文的所有分片都一样。标志(Flag): bit0:Reserved位,一般置0。 bi

2024-02-22 21:37:53 1027

原创 《TCP/IP详解 卷一》第4章 ARP

邻居发现请求NS,邻居发现应答NA,ARP缓存,ARP帧格式,代理ARP,免费ARP,ARP相关攻击。

2024-02-20 20:46:17 1147

原创 《TCP/IP详解 卷一》第3章 链路层

LLC协议,MAC协议,IEEE802.3帧格式,多个网口绑定聚合,wol局域网唤醒, brctl和网桥, brctl和STP,WiFi,PPP协议,MTU和PMTU,隧道协议

2024-02-20 17:06:04 914

原创 《TCP/IP详解 卷一》第2章 Internet地址结构

IPv6地址结构,DNS64,NAT64,分类寻址,定向广播,有限广播,全球单播地址,任播地址,EUI-64,CIDR,聚合,VLSM,

2024-02-20 15:08:56 829

原创 《TCP/IP详解 卷一》第1章 概述

消息边界 粘包。并行,串行链路。同步,异步链路。源IP欺骗。PSTN,DSL,PON。Ethernet II,IEEE802.3。常见端口号。

2024-02-18 17:43:44 1044

原创 VLAN优先级+IP优先级+QoS+tc命令 一文全介绍

tc:traffic control,是iproute2包中内核流量控制工具。tc既可处理传出流量(egress),也可处理传入流量(ingress),但对传入流处理功能较少。通常用来处理传出流量(egress)。即使网卡本身不支持多队列特性,仍然可用tc命令在网络协议栈软件层面模拟和管理队列。因为tc不直接操作网卡硬件,而是在内核内实现队列调度。Netfilter处理对象是packet。TC处理对象是Traffic。

2024-02-01 16:37:42 1542 2

原创 IPsec原理+实现 一文全介绍

一组基于网络层,密码学的安全通信协议族。不具体指哪个协议,而是一个协议族。可用于VPN或单纯加密数据。在IP头中协议号为51。特点:只能校验数据,不能加密数据。哈希校验算法:SHA1或MD5AH在传输模式下封装:原始IP头+AH认证头+传输层+应用层AH在隧道模式下封装:新IP头+AH认证头+原始IP头++传输层+应用层。

2024-01-28 14:40:32 1106

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除