摘要: 原理 traceroute命令是一种用于显示数据包从源主机到目的主机经过的路由器和网络设备的路径的工具。traceroute命令的原理是利用IP数据报的生存时间(TTL)字段和因特网控制报文协议(ICMP)。 TTL字段是一个8位的整数,表示数据报在网络中可以经过的最大跳数。每当数据报经过一个路由器 阅读全文
posted @ 2023-03-01 16:31 yytarget 阅读(245) 评论(0) 推荐(0) 编辑
摘要: TCP的可靠性保证 TCP主要提供了检验和,序列号/确认应答,超时重传,最大消息长度,滑动窗口控制等方法实现了可靠性传输。 检验和 通过检验和的方式,接收端可以检测出来数据是否有差错和异常,假如有差错就会直接丢弃TCP段,重新发送。TCP在计算检验和时,会在TCP首部加上一个12字节的伪首部。检验和 阅读全文
posted @ 2023-03-01 16:31 yytarget 阅读(40) 评论(0) 推荐(0) 编辑
摘要: TCP UDP 连接性 面向连接 无连接 可靠性 可靠 不可靠 传输方式 面向字节流 面向报文(保留边界) 传输速度 慢 快 双工性 全双工 一对一,一对多,多对一,多对多 流量控制/拥塞控制 有 无 应用场景 对效率要求低,但对准确性要求高的场景;或要求有连接的场景,例如文件传输和发送邮件等 对效 阅读全文
posted @ 2023-03-01 16:31 yytarget 阅读(1) 评论(0) 推荐(0) 编辑
摘要: TCP标志位 TCP的标志位代表当前请求的目的。分为6种: SYN:发送/同步标志,用来建立连接,和ACK标志位搭配使用。A请求与B建立连接时,SYN=1,ACK=0;B确认与A建立连接时,SYN=1,ACK=1 ACK:确认标志,表示确认收到请求 PSH:表示推送操作,指数据包到达接收端以后,不对 阅读全文
posted @ 2023-03-01 16:29 yytarget 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 创建进程 为新进程分配一个唯一的进程标识符(pid)。 为新进程分配资源,如内存空间、文件描述符、信号处理函数等。 初始化新进程的进程控制块(PCB),包括设置初始状态、优先级、程序计数器等。 将新进程插入就绪队列,等待调度。 进程切换 时间片用完:当一个进程执行了一定时间后,如果还没有结束或阻塞, 阅读全文
posted @ 2023-03-01 16:29 yytarget 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 基本作用 加快CPU与主内存之间的数据交换。 区别 缓存类型 L1 L2 L3 位置 最靠近CPU核心 次之 再次之 容量 一般几十KB~几百KB 几百KB~几MB 几MB~几十MB 速度 几个时钟周期 十几个 几十个 类型 分为指令缓存和数据缓存; 缓存统一,同时保存指令和数据 缓存统一 阅读全文
posted @ 2023-03-01 16:29 yytarget 阅读(205) 评论(0) 推荐(0) 编辑
摘要: Linux有多种方法可以查看实时滚动日志。最常用的方法是使用tail命令,它可以显示一个文件的最后几行,并且可以跟踪文件的变化。例如,你可以输入tail -f /var/log/syslog来查看系统日志的实时输出。 另外,你也可以使用less命令来查看日志文件,并且可以按Shift+F键来进入实时 阅读全文
posted @ 2023-03-01 16:28 yytarget 阅读(538) 评论(0) 推荐(0) 编辑
摘要: 过程 用户进程通过库函数或者直接使用汇编指令(如svc)发起系统调用请求,将系统调用号和参数保存在寄存器中。 处理器切换到内核模式,根据中断向量表跳转到系统调用总入口程序,保存用户进程的现场信息。 系统调用总入口程序根据系统调用号查找对应的服务例程,执行服务例程的功能。 服务例程执行完毕后,恢复用户 阅读全文
posted @ 2023-03-01 16:28 yytarget 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 原理及其区别 Linux Virtual Server是通过ipvs内核模块和ipvsadm用户空间命令行工具来实现负载均衡的它支持三种工作模式: NAT模式:LVS调度器将请求转发给后端服务器,同时修改请求的目标地址为后端服务器的地址,后端服务器将响应返回给LVS调度器,再由LVS调度器修改响应的 阅读全文
posted @ 2023-03-01 16:28 yytarget 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 首先给出基本框架 #include <iostream> #include <thread> using namespace std; int main(){ int n = 100; int i = 0; //创建两个线程 thread newThread1([&n, &i](){ while(i 阅读全文
posted @ 2023-03-01 16:28 yytarget 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 什么是零拷贝 零拷贝描述的是在计算机操作系统中,CPU不执行将数据从一个内存区域,拷贝到另一个内存区域的任务。 通过网络传输文件时,零拷贝通常可以节省CPU周期和内存带宽。 零拷贝的好处 节省了CPU周期,空出的周期可以完成其它任务。 减少内存区域间的数据拷贝,节省内存带宽。 减少用户态和内核态之间 阅读全文
posted @ 2023-03-01 16:27 yytarget 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 一个线程从属于一个进程;一个进程可以包含多个线程。 一个线程挂掉,对应的进程挂掉,多线程也挂掉;一个进程挂掉,不影响其它进程,多进程稳定。 进程系统开销显著大于线程开销;线程需要的系统资源更少。 多进程在执行时拥有各自独立的内存单元;多线程共享进程的内存,例如.text,.data,.bss和扩展段 阅读全文
posted @ 2023-03-01 16:27 yytarget 阅读(178) 评论(0) 推荐(0) 编辑
摘要: C++多线程 C++11引入了线程类thread,头文件为 #include <thread> 创建多线程的方法: std::thread threadName(functionName, parameter1, paramater2, …); 传递参数可以传左值,右值,引用(使用std::ref) 阅读全文
posted @ 2023-03-01 16:27 yytarget 阅读(17) 评论(0) 推荐(0) 编辑
摘要: CPU 使用top命令,然后按shift+p按照CPU排序,找到占用CPU过高的进程pid。 使用top -H -p pid命令,找到进程中消耗资源最高的线程ppid。 使用echo ‘obase=16;ppid’ | bc或者print “%x\n” ppid将线程id转换为16进制(小写)。 使 阅读全文
posted @ 2023-03-01 16:27 yytarget 阅读(1175) 评论(0) 推荐(0) 编辑
摘要: 物理内存管理 物理内存有四个层次,分别为: 寄存器:速度最快,存储空间少,价格贵 高速缓存:次之 主存:再次之 磁盘:速度最慢,存储空间最多,价格便宜 操作系统通过内存管理器对物理内存进行管理,主要工作是记录哪些内存是正在使用的,在进程需要时分配内存以及在进程完成时回收内存。 地址生成过程 内部碎片 阅读全文
posted @ 2023-03-01 16:26 yytarget 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 概要 filename 文件名 dir 文件夹名 string 字符串 username 用户名 groupname 组名 regex 正则表达式 path 路径 partition 分区名 port 端口号 IP IP地址 domain 域名 PID 进程ID host 主机名 文件命令 文件系统 阅读全文
posted @ 2023-03-01 16:25 yytarget 阅读(17) 评论(0) 推荐(0) 编辑