上一页 1 2 3 4 5 6 7 8 9 ··· 16 下一页
摘要: 定时器都知道吧?个人认为是linux最核心的功能之一了!比如线程sleep(5000),5s后再唤醒执行,cpu是怎么知道5s的时间到了?还有nginx这种反向代理每隔一段时间都要检测客户端的是否还在,如果掉线了就没必要再分配资源维护连接关系啦。那么间隔固定时间检测心跳的定时机制是怎么实现的了? 1 阅读全文
posted @ 2022-01-28 19:42 第七子007 阅读(1109) 评论(0) 推荐(0) 编辑
摘要: 1、简单介绍一下epoll的出现的背景:这里以java代码为例,最原始的server代码如下: while(true){ ServerSocket ss = new ServerSocket(8888); System.out.println("启动服务器...."); Socket s = ss. 阅读全文
posted @ 2022-01-21 21:57 第七子007 阅读(1818) 评论(0) 推荐(0) 编辑
摘要: 1、linux内核中利用红黑树增删改查快速、稳定的特性来管理的还有另一个非常重要的功能:虚拟内存管理!前面介绍了buddy和slab算法是用来管理物理页面的。由于早期物理页面远比虚拟页面小很多,而且只需要分配和回收合并,所以也没用树形结构来组织,简单粗暴地用链表来管理!但是虚拟内存不一样了:以32位 阅读全文
posted @ 2022-01-19 20:19 第七子007 阅读(1572) 评论(0) 推荐(0) 编辑
摘要: 1、在现代的操作系统中,进程调度是最核心的功能之一;linux 0.11的调度算法简单粗暴:遍历task_struct数组,找到时间片counter最大的进程执行;显然这种策略已经不适合越来越复杂的业务场景需求了,所以后来逐步增加了多种调度策略,目前最广为人知的调度策略有5种:cfs、idle、de 阅读全文
posted @ 2022-01-15 21:29 第七子007 阅读(1130) 评论(1) 推荐(0) 编辑
摘要: 1、红黑树是一种非常重要的数据结构,有比较明显的两个特点: 插入、删除、查找的时间复杂度接近O(logN),N是节点个数,明显比链表快;是一种性能非常稳定的二叉树! 中序遍历的结果是从小到大排好序的 基于以上两个特点,红黑树比较适合的应用场景: 需要动态插入、删除、查找的场景,包括但不限于: 某些数 阅读全文
posted @ 2022-01-13 21:42 第七子007 阅读(1672) 评论(0) 推荐(0) 编辑
摘要: 要想在计算机里干点事,权限肯定是越高越好的。正常情况下,cpu硬件层面保证了运行在0环的操作系统和运行在3环的用户app互相隔离,3环app要想进入0环执行代码只能通过中断或系统调用的形式,执行最多代码的应该就是硬件的驱动了,常见的屏幕打印、磁盘读写、网卡/wifi收发数据都要执行硬件驱动。因为需要 阅读全文
posted @ 2022-01-08 17:13 第七子007 阅读(1314) 评论(0) 推荐(0) 编辑
摘要: 中断是整个计算机体系最核心的功能之一,关于中断硬件原理可以参考文章末尾的链接1(https://www.cnblogs.com/theseventhson/p/13068709.html),这里不再赘述;中断常见的种类如下: 硬件中断:键盘、鼠标、网卡等输入 软件中断:int 3、int 0xe(p 阅读全文
posted @ 2022-01-05 20:58 第七子007 阅读(1294) 评论(0) 推荐(1) 编辑
摘要: 为了提高cpu的使用率,硬件层面的cpu和软件层面的操作系统都支持多进程/多线程同时运行,这就必然涉及到同一个资源的互斥/有序访问,保证结果在逻辑上正确;由此诞生了原子变量、自旋锁、读写锁、顺序锁、互斥体、信号量等互斥和同步的手段!这么多的方式、手段,很容易混淆,所以这里做了这6种互斥/同步方式要点 阅读全文
posted @ 2021-12-24 15:26 第七子007 阅读(666) 评论(0) 推荐(0) 编辑
摘要: 上文介绍了buddy和slab内存管理的思路,本文看看这些算法的关键代码都是怎么写的,这里用的是4.9版本的源码;重新把这个图贴出来,方便后续理解代码! 1、如上图所示,slab算法的入口就是kmem_cache结构体了,和其他重要结构体管理的方式类似,这里也统一采用数组的形式管理所有的kmem_c 阅读全文
posted @ 2021-12-21 16:32 第七子007 阅读(917) 评论(0) 推荐(0) 编辑
摘要: cpu硬件管理内存是以页(4KB)为最小颗粒度的,因为页描述符设置内存属性就是按照页为单位设置的!这个颗粒度是非常大的,用户如果只要几十Byte的内存也分配4KB的话,再多的内存也会很快被败光,同时带来了内存碎片化的问题,所以迫切需要小颗粒度的内存分配方式!buddy和slab孕育而生! 1、先看看 阅读全文
posted @ 2021-12-19 20:20 第七子007 阅读(2119) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 16 下一页