06 2021 档案

摘要:选择排序: template <typename Container> void sort_selectSort_up(Container& container) { typedef typename Container::iterator Iterator; Iterator iterBegin 阅读全文
posted @ 2021-06-15 07:36 呵哈呵 阅读(12) 评论(0) 推荐(0) 编辑
摘要:priority_deque 优先队列,STL中的优先队列实现基于完全二叉树数据格式,且对于每个父节点,他的键值都大于等于其两个子节点;由于完全二叉树的从上到下,从左向右的树节点是连续的,因此可以使用一个向量,或者队列这样的序列式容器进行数据存储,对于存储在序列式容器中的索引n节点,其父节点索引位置 阅读全文
posted @ 2021-06-14 23:10 呵哈呵 阅读(15) 评论(0) 推荐(0) 编辑
摘要:distance模板函数的功能就是获取两个迭代器之间的元素个数,源码如下: template<typename _InputIterator> inline typename iterator_traits<_InputIterator>::difference_type distance(_Inp 阅读全文
posted @ 2021-06-12 11:39 呵哈呵 阅读(34) 评论(0) 推荐(0) 编辑
摘要:模板函数代码如下: template<typename _Container, typename _Iterator> inline insert_iterator<_Container> inserter(_Container& __x, _Iterator __i) { return inser 阅读全文
posted @ 2021-06-12 10:40 呵哈呵 阅读(17) 评论(0) 推荐(0) 编辑
摘要:红黑树,作为一个为了二叉树平衡性而提出的一种二叉树结果,他是STL中的set和map的基础数据结构; 那么对于一个红黑树,规则如下: 性质1:每个节点要么是黑色,要么是红色。性质2:根节点是黑色。性质3:每个叶子节点(NIL)是黑色。性质4:每个红色结点的两个子结点一定都是黑色。性质5:任意一结点到 阅读全文
posted @ 2021-06-11 00:28 呵哈呵 阅读(26) 评论(0) 推荐(0) 编辑
摘要:整个deque的数据结构是以数据块作为基础的,一个缓冲块限制为512 byte,实际使用过程中根据对象需要空间大小去判断该缓冲块可以容纳多少个对象,然后返回对应一个数据块的需要使用空间大小;以下是计算一个缓冲块可容纳对象的数量以及申请一个缓冲块的实现: inline size_t __deque_b 阅读全文
posted @ 2021-06-08 10:26 呵哈呵 阅读(36) 评论(0) 推荐(0) 编辑
摘要:首先,在使用STL中的list数据结构的时候,会使用#include <list>进行相应头文件的引入,而后创建list对象,使用remove等成员函数,如果你突发奇想,抱着既然template模板函数必须在构建的时候对使用位置可见,不能模板类函数定义在一个单独的目标文件中这种想法,去点开他的声明位 阅读全文
posted @ 2021-06-07 09:22 呵哈呵 阅读(23) 评论(0) 推荐(0) 编辑
摘要:系统调用,就是int 0x80;函数定义一般使用三个宏来进行定义: #define _syscall0(type,name) \ type name(void) \ { \ long __res; \ __asm__ volatile ("int $0x80" \ : "=a" (__res) \ 阅读全文
posted @ 2021-06-06 13:01 呵哈呵 阅读(35) 评论(0) 推荐(0) 编辑
摘要:分页,这个东西,首先就是实模式和保护模式的概念;然后就是就是逻辑地址、线性地址和物理地址的概念,之后就是页目录和页表的概念; 首先,实模式,这种模式下的寻址方式就是通常意义上的"段左移4bit然后叠加偏移量"作为最后地址进行寻址;且这种模式下兼容以前的处理器,只能寻址1M空间; 然后就是保护模式,保 阅读全文
posted @ 2021-06-05 22:14 呵哈呵 阅读(52) 评论(0) 推荐(0) 编辑
摘要:linux 0.11中的等待队列比较有意思,他并不是直接创建一个链表,然后使用next指向下一个链表阶段这个样子,他是基于任务调度而进行的链表结构搭建: 就是说对于一个等待队列wait,他先指向任务A,而当需要新增一个等待任务B的时候,先将本身进行阻塞,即设置任务状态为不可中断睡眠状态,然后主动执行 阅读全文
posted @ 2021-06-04 23:35 呵哈呵 阅读(11) 评论(0) 推荐(0) 编辑
摘要:块设备读取,linux 0.11中有三种块设备:软盘、硬盘和内存虚拟盘,这里只描述整体架构逻辑,具体实际读取和硬件相关,而硬件操作只是大体理解,并不是太懂; 首先,Linux中一切皆文件,而对于一个文件,整体操作无非就是open,增删修改、close: 对于块设备的话,整体模型分为三层,一层是用户层 阅读全文
posted @ 2021-06-04 23:24 呵哈呵 阅读(35) 评论(0) 推荐(0) 编辑
摘要:在head设置了页表、GDT和IDT之后,然后就进入了main程序,这里首先介绍一些参数: ORIG_ROOT_DEV,该参数是读取0x901FC的两个byte读取的数据,这两个byte就是bootsect模块的0x509、0x510两个byte的数据,该参数的设置经过了两个步骤,第一个就是直接bo 阅读全文
posted @ 2021-06-04 15:14 呵哈呵 阅读(66) 评论(0) 推荐(0) 编辑
摘要:对于linux 0.11文件系统,是直接沿用MINIX文件系统的,整体上这种类型的文件系统由以下几个部分内容组成:引导块+超级块+i节点位图+逻辑块位图+i节点+数据区(逻辑块); 首先,在MINIX文件系统的超级块中,每个文件最终都是一个i节点,而i节点中存储着该文件的文件类型,文件权限,文件大小 阅读全文
posted @ 2021-06-01 16:44 呵哈呵 阅读(59) 评论(0) 推荐(0) 编辑
摘要:经过setup初始化后,控制流转移到该文件起始位置,进入该文件需要留意一点就是此时已经切换到分段模式,因此这里的寻址的段寄存器的意义变为了分段状态下的段,也就是段选择符;因此一开始的段寄存器设置0x10段,该段就是GDT表中的第一个段,该段段基址为0x0,段长为8M(setup中设置), 然后指向一 阅读全文
posted @ 2021-06-01 15:31 呵哈呵 阅读(23) 评论(0) 推荐(0) 编辑

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