12 2021 档案

摘要:为了提高cpu的使用率,硬件层面的cpu和软件层面的操作系统都支持多进程/多线程同时运行,这就必然涉及到同一个资源的互斥/有序访问,保证结果在逻辑上正确;由此诞生了原子变量、自旋锁、读写锁、顺序锁、互斥体、信号量等互斥和同步的手段!这么多的方式、手段,很容易混淆,所以这里做了这6种互斥/同步方式要点 阅读全文
posted @ 2021-12-24 15:26 第七子007 阅读(815) 评论(0) 推荐(0) 编辑
摘要:上文介绍了buddy和slab内存管理的思路,本文看看这些算法的关键代码都是怎么写的,这里用的是4.9版本的源码;重新把这个图贴出来,方便后续理解代码! 1、如上图所示,slab算法的入口就是kmem_cache结构体了,和其他重要结构体管理的方式类似,这里也统一采用数组的形式管理所有的kmem_c 阅读全文
posted @ 2021-12-21 16:32 第七子007 阅读(1123) 评论(0) 推荐(0) 编辑
摘要:cpu硬件管理内存是以页(4KB)为最小颗粒度的,因为页描述符设置内存属性就是按照页为单位设置的!这个颗粒度是非常大的,用户如果只要几十Byte的内存也分配4KB的话,再多的内存也会很快被败光,同时带来了内存碎片化的问题,所以迫切需要小颗粒度的内存分配方式!buddy和slab孕育而生! 1、先看看 阅读全文
posted @ 2021-12-19 20:20 第七子007 阅读(2726) 评论(0) 推荐(0) 编辑
摘要:1、计算的内存和磁盘都是用来存储数据的,作用上没有本质区别,但是这两种存储介质的特性却差异巨大: 内存需要上电才能存储数据,一旦掉电数据就没了,磁盘却不需要用电也能保存数据 内存的速度很快,大约100ns就能读写数据,而磁盘是毫秒级别的,理论速度差了几万倍; 所以计算机运行时为了追求速度,会尽量把数 阅读全文
posted @ 2021-12-15 21:46 第七子007 阅读(1723) 评论(0) 推荐(0) 编辑
摘要:1、windows中可执行文件是PE格式的,以exe作为后缀结尾(当然驱动sys和动态链接dll也是PE格式的,但普通用户用不上);用户使用也很方便,直接双击exe文件就能开始运行了;linux也类似,可执行文件是ELF格式的,用户双击也能运行;这么方便的功能在底层是怎么实现的了?先阐述一下大概的流 阅读全文
posted @ 2021-12-12 21:25 第七子007 阅读(1565) 评论(0) 推荐(0) 编辑
摘要:linux的设计理念:万物皆文件!换句话说:所有的设备,包括但不限于磁盘、串口、网卡、pipe管道、打印机等统一看成是文件。对于用户来说,所有操作都是通过open、read、write、ioctl、close等接口操作的,确实很方便;但是对于linux,底层明明是不同的硬件设备,这些设备怎么才能统一 阅读全文
posted @ 2021-12-09 12:15 第七子007 阅读(1831) 评论(0) 推荐(0) 编辑
摘要:对于普通用户,平时使用操作系统是肯定涉及到创建、更改、删除文件(比如mkdir、rmdir、rm、chmod、ln等);有些文件是高权限用户建的,低权限用户甚至都打不开,也删不掉;为了方便管理不同业务类型的文件,还需要在不同的逻辑分区建文件夹,分门别类各种文件;linux下用ls -l命令还可以查看 阅读全文
posted @ 2021-12-07 18:17 第七子007 阅读(1915) 评论(1) 推荐(0) 编辑
摘要:对于普通用户而言,日常用的都是windows操作系统。windows把整个物理硬盘分成C、D、E、F.....等逻辑分区,用户可以随意在各个逻辑分区存放数据文件;逻辑分区之间是独立互不影响的,格式化某个逻辑分区,不会影响其他逻辑分区的数据,所以C、D、E、F.....等逻辑分区就是磁盘的根目录;如果 阅读全文
posted @ 2021-12-03 21:43 第七子007 阅读(1345) 评论(0) 推荐(1) 编辑
摘要:众所周知,计算机系统在掉电后也能存储数据的就是磁盘了,所以大量数据大部分时间是存放在磁盘的;现在新买的PC,磁盘从数百G到1TB不等;服务器的磁盘从数十TB到上百TB,这么大的存储空间,该怎么高效地管理和使用了?站在硬件角度,cpu的分页机制把虚拟内存切割成大量4KB大小的块,所以4KB也成了硬件层 阅读全文
posted @ 2021-12-02 20:28 第七子007 阅读(3913) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示