操作系统OS
文章平均质量分 58
INGNIGHT
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
OS-案例-52 | 案例篇:服务吞吐量下降很厉害,怎么分析?
原创 2024-05-11 15:03:53 · 188 阅读 · 0 评论 -
brpc profiler
【代码】brpc mac安装profiler。原创 2024-05-04 20:42:59 · 633 阅读 · 0 评论 -
brpc中http2 grpc协议解析
这个是固定长度的9字节帧头部,length是,3*8bit(3字节),type8bit,flags8bit,streamid(最高32位置,应该是个0,所以&0x8000000是0)解析完9字节帧头部,按照帧头中的type去解析,playload中的内容,假设type类型是header帧类型。playload是Header类型的帧,是hpack编码的。具体解析是Decode函数,按照hpack规则解析。先看下前4个bit为header类型帧哪种编码格式,如果是。解析frame header信息。原创 2024-05-03 21:26:30 · 591 阅读 · 0 评论 -
哈夫曼huffman
【代码】哈夫曼huffman。原创 2024-05-02 22:47:10 · 262 阅读 · 0 评论 -
grpc stream发送
在这个示例中,客户端创建了一个类,并在GetNumbers方法中发送了一个消息,要求服务器端返回 5 个消息。客户端使用接收服务器端返回的流式消息,并在循环中打印出每个结果。最后,客户端调用Finish方法来完成整个 RPC 调用。这个示例展示了如何在 gRPC C++ 中实现服务器端流式 RPC,客户端可以根据需要修改请求的参数和处理返回结果的逻辑。原创 2024-05-03 16:07:13 · 492 阅读 · 0 评论 -
数据库不用mmap
但是当操作系统检索页面的时候,他会意识到内存中没有关联的物理页面,所以它需要触发一个页面错误才能从磁盘上获取它,然后OS向页面添加物理地址映射到虚拟地址的条目,映射也将被存储在称为转译后备缓冲区或TLB的特殊cpu缓存中,这将有助于加速未来的重复访问,所以我们不总是在页表中进行查找内容。其次是同步页表的开销,以及高竞争下关联的数据结构(本例中100个并发线程),TLB shootdowns(TLB缓存存储的是CPU中的页表条目),当页边被逐出时,这些条目需要删除,这需要昂贵的处理器间中断。原创 2024-04-06 15:18:46 · 454 阅读 · 0 评论 -
内存-虚拟地址到物理内存地址转换
512个2MB是1GB,第二层,每一项是512GB。512个4KB是2MB,第一层,每一项是1GB。512个526GB是256TB,第三层,每一项。第零层,每一项是4KB。原创 2023-10-27 20:07:46 · 649 阅读 · 0 评论 -
tcp拥塞控制原理
我们在向对端发送数据时,并不是一股脑子任意发送,因为TCP建立连接后,就是建立了一根管道,这跟管道上,实际上有很多的工作设备,比如路由器和交换机等等,他们都会对接收到的TCP包进行缓存,以便实现排序,然后发送,但是这些设备并不是只为一个TCP连接中转数据包,大量的网络包也许会耗尽存储空间,从而导致TCP连接的吞吐量急剧下降。原创 2023-10-03 16:02:00 · 829 阅读 · 1 评论 -
tcp滑动窗口原理
另外,你需要知道网络上有个MTU,对于以太网来说,MTU是1500字节,除去TCP+IP头的40个字节,真正的数据传输可以有1460,这就是所谓的MSS(Max Segment Size)注意,TCP的RFC定义这个MSS的默认值是536,这是因为 RFC 791里说了任何一个IP设备都得最少接收576尺寸的大小(实际上来说576是拨号的网络的MTU,而576减去IP头的20个字节就是536)。要知道,我们的TCP+IP头有40个字节,为了几个字节,要达上这么大的开销,这太不经济了。原创 2023-10-03 15:38:02 · 312 阅读 · 0 评论 -
cpu和net和disk命令查询
w可以查看上下文切换(主动切换,不主动切换:上下文切换:进程间切换[包括内核栈,寄存器,虚拟内存的保存和恢复],线程间切换,影响:频繁切换影响,cpu的TLB缓存被更新,CPU缓存命中率变低)。vmstat 1 1,可以查看系统上下文切换情况(查看cpu,内存(剩余内存,系统缓存磁盘/文件,swap换入/唤出速度),cpu的idl,以及等待io使用率iowait)mpstat 1 1或者mpstat -P ALL查看每个cpu使用状态,(用户态cpu是用来,内核态cpu使用率,等待IO使用率)原创 2023-08-12 19:24:45 · 432 阅读 · 0 评论 -
堆栈框架实现
原创 2023-05-20 17:31:08 · 132 阅读 · 0 评论 -
链路追踪设计
原创 2023-07-30 09:22:26 · 180 阅读 · 0 评论 -
多线程模型
一、什么是线程1.在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”2.一切进程至少都有一个执行线二、进程与线程1.进程是资源竞争的基本单位2.线程是程序执行的最小单位3.线程共享进程数据,但也拥有自己的一部分数据 线程ID,一组寄存器,栈,errno,信号状态,优先级三、fork和创建新线程的区别1.当一个进程执行一个fork调用的时候,会创建出进程的一个新拷贝,新进程将拥有它自己的变量和它...原创 2020-09-12 12:27:01 · 1035 阅读 · 0 评论 -
OS-08-事件驱动:C10M是如何实现的?
你好,我是陶辉。上一讲介绍了广播与组播这种一对多通讯方式,从这一讲开始,我们回到主流的一对一通讯方式。早些年我们谈到高并发,总是会提到C10K,这是指服务器同时处理1万个TCP连接。随着服务器性能的提升,近来我们更希望单台服务器的并发能力可以达到C10M,也就是同时可以处理1千万个TCP连接。从C10K到C10M,实现技术并没有本质变化,都是用事件驱动和异步开发实现的。介绍过的协程,也是依赖这二者实现高并发的。原创 2023-07-29 18:09:07 · 392 阅读 · 0 评论
分享