
操作系统
梦江河
聊聊高并发,数据库,存储
展开
-
Redis RDB持久化原理
RDB触发方式1)save2)bgsave3)后台触发,配置文件2和3都是通过fork子进程来处理fork本身是系统调用,会阻塞父进程,主要是复制页表耗时,理论上内存越大,越耗时;如果子进程生成rdb过程中,父进程大量修改或者删除key,因为fork是写时复制的原因,会导致父进程必须申请新的内存页,然后拷贝数据到新的内存页进行修改,会产生大量的缺页中断异常...原创 2022-06-12 19:04:16 · 99 阅读 · 0 评论 -
Linux内核--思考问题
1)为什么每个进程都有自己的页表,如果多个进程映射到同一个物理页呢?2)中断的过程?3)系统调用的原理是软中断int 80,执行中断处理程序需要进入内核态,比单纯的中断多了哪些步骤?4)系统调用的两种方式:int 80 与 sysenter5)系统调用怎么进行参数传递的?6) 进程的内存信息:代码段、数据段、堆段、栈段,用mm_struct表示7)Linux的线程是轻量级进程,拥有独立的task_struct结构,但是mm_struct是共享的,那多个线程的多个函数栈不会冲突吗?其实线程的函数栈原创 2022-06-03 17:30:38 · 121 阅读 · 0 评论 -
Linux命令--查看进程/线程上下文切换情况
1)使用pidstat命令常用的参数:-u 默认参数,显示各个进程的 CPU 统计信息-r 显示各个进程的内存使用情况-d 显示各个进程的 IO 使用-w 显示各个进程的上下文切换-p PID 指定 PID2)cat /proc/5598/statusvoluntary_ctxt_switches: 40469351 主动切换nonvoluntary_ctxt_switches: 2268 被动切换cpu上下文切换包括三种情况1)进程、线程切换;2)系统调用;3)中断;...原创 2022-04-10 16:53:44 · 2519 阅读 · 0 评论 -
计算机字节存储顺序-Big-Endian和Little-Endian
如果数据需要用多个字节来存储就要考虑用大端存储还是小端存储,注意这里指字节的存储顺序而不是位的存储顺序,位的存储顺序是固定的,直接取出来就行,即问题是多个字节的数据的高字节放在地址低位还是高位的问题,放在低位的是大端存储,放在高位的是小端存储...原创 2020-09-20 20:20:31 · 402 阅读 · 0 评论 -
IO模型
UNIX系统下的I/O模型有5种:同步阻塞I/O、同步非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O。什么是I/O?为什么需要这些I/O模型?所谓的I/O就是计算机内存与外部设备之间拷贝数据的过程I/O就是计算机内存与外部设备之间拷贝数据的过程。我们知道CPU访问内存的速度远远高于外部设备,因此CPU是先把外部设备的数据读到内存里,然后再进行处理。请考虑一下这个场景,当你的程序通过CPU向外部设备发出一个读指令时,数据从外部设备拷贝到内存往往需要一段时间,这个时候CPU没事干了,你的程序是主原创 2020-09-15 09:37:58 · 135 阅读 · 0 评论 -
操作系统-线程
原创 2020-08-22 11:11:38 · 98 阅读 · 0 评论