- 博客(8)
- 资源 (5)
- 收藏
- 关注
原创 RCU机制学习
RCU是一组Linux内核API,实现了一种同步机制,允许多个读者与写者并发操作而不需要任何锁,这种同步机制可以用于保护通过指针访问的数据。RCU读者只需要很低的额外成本,在典型的服务器内核配置下甚至是0成本。如果可能有多个写者,写者之间需要其他同步机制,除了使用RCU API直接访问指针数据,更多的使用方式是封装API使其用于链表访问。RCU适用于读取数据量大而且可以接收读取到旧数据的场景。...
2019-10-25 17:56:50 969
转载 谈乱序执行和内存屏障
本文转载自:https://blog.csdn.net/dd864140130/article/details/56494925 10多年前的程序员对处理器乱序执行和内存屏障应该是很熟悉的,但随着计算机技术突飞猛进的发展,我们离底层原理越来越远,这并不是一件坏事,但在有些情况下了解一些底层原理有助于我们更好的工作,比如现代...
2019-10-24 20:00:41 455
原创 指令寻址方式(8086/8088CPU)
数据操作数是数据有关的操作数,即指令中操作的对象是数据、数据操作数根据其存放的位置又可以分为:立即数操作数,即指令重要操作的数据包含在指令中。寄存器操作数,指令中要操作的数据存放在指定寄存器中。存储器操作数:指令要操作的数据存储在指定的存储单元中。IO操作数:即指令要操作的数据来自或者送到IO端口。地址操作数:地址操作数是程序转移地址相关的操作数。即指令中操作的对象不是数据,而是要转...
2019-10-21 13:09:22 1914
原创 VFS剖析
VFS:为各种文件系统提供了一个通用的接口,它使得上层进程在进行与文件系统相关的操作时可以使用同一组系统调用,但是系统调用在内核中可以根据不同的文件系统执行不同的操作。在一个Linux操作系统中,存在多种的文件系统,例如ext2,ext3,ext4等,每种文件系统都有自己的组织方式,和操作方法,对于用户来说,不可能所有的文件系统都了解,所以在Linux中在应用程序和各种文件系统之间添加了一层称为虚...
2019-10-13 21:33:10 1261
原创 微机原理学习--笔记微处理器的内部结构
8086/8088内部结构从功能上可以分为总线接口单元BIU和内部执行单元EU。总线接口单元负责完成CPU和存储器以及IO接口之间的数据传送。总线接口单元内有4个16位段寄存器,即代码寄存器CS,数据段寄存器DS,堆栈段寄存器SS和附加数据段寄存器ES,一个16位的指令寄存器IP,一个20位的地址加法器。一个6字节指令队列缓冲区,一个EU通信的内部寄存器和总线控制电路等。段寄存器...
2019-10-09 19:39:38 942
原创 LevelDb源码之跳跃列表学习及C++11实现
跳跃列表是一种数据结构。他允许快速查询一个有序连续元素的数据链表。平均查找和插入的事件复杂度为O(log(n)),优于普通链表O(n)。快速查询是通过维护一个多层次的链表,并且每一层链表中的元素是前一层链表元素的子集。具体描述:在levelDb中跳跃列表每个节点的数据结构如下所示: template <typename Key, class Comparator> st...
2019-10-07 13:30:07 460
原创 键值数据库的设计实现总结(SDS)
写这个数据库也已经有段时间了,在我心中此项目的第一个版本算是完成了,所以做一下小结,更多的功能以后再继续迭代即可!1. 引言1.1 编写目的学习搭建rpc框架,自己阅读了部分redis实现源码,想实现一个加深印象,将学习的网络方面的知识学以致用。等等…1.2 项目概述客户端和服务器协议:Google Protocol bufferRPC部分实现的功能:序列化和反序列化,发送远程命令...
2019-10-05 21:56:57 2632
原创 虚拟内存原理
虚拟内存:为了更加高效并且少出错,现代操作系统提供了一种对主存的抽象概念,叫做虚拟内存。虚拟内存是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互,他为每个进程提供了一个大的,一致和私有的地址空间,虚拟内存提供三个能力:他将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在主存和磁盘之间来回传送数据,通过这种方式高效使用了主存他为每个进程提供了一致的...
2019-10-05 13:13:11 7274
Linux c++实现哈夫曼编码实现文件压缩器与解压器
2019-01-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人