- 博客(78)
- 收藏
- 关注
转载 说说Makefile那些事儿
工作至今,一直对Makefile半知半解。突然某天幡然醒悟,觉得此举极为不妥,只得洗心革面从头学来,以前许多不明觉厉之处顿时茅塞顿开,想想好记性不如烂笔头,便来说说Makefile那些事儿。
2016-10-17 17:36:10
3806
1
原创 32位保护模式学习小结(4)---分页机制概述
简单的分页模型分页的内存管理模式是我们再熟悉不过的了,因为这是我们一贯的工作方式.在处理器中有负责分段管理的段部件.每个程序或任务都有自己的段,这些段都用段描述符定义.随着程序的执行,当要访问内存时,就用段地址上偏移量,段部件就会输出一个线性地址.在单纯的分段模式下,线性地址就是物理地址.然而一旦决定采用页式内存管理,就应当把4GB内存分为大小相同的页.但是,页在物理内存中位置是有讲究的,并不是在内
2016-08-31 19:00:52
1299
1
原创 c++11实现一个半同步半异步线程池
在处理大量并发任务的时候,如果按照传统的方式,一个请求一个线程来处理请求任务,大量的线程创建和销毁将消耗过多的系统资源,还增加了线程上下文切换的开销,而通过线程池技术就可以很好的解决这些问题,线程池技术通过在系统中预先创建一定数量的线程,当任务请求到来时从线程池中分配一个预先创建的线程去处理任务,线程在完成任务之后还可以重用,不会销毁,而是等待下次任务的到来.
2016-08-18 15:15:05
1505
1
原创 32位保护模式学习小结(2)---任务的隔离和特权级保护
任务,任务的LDT和TSS 程序是记录在载体上的指令和数据,其正在执行中的一个副本,叫做任务(Task)。而用户程序就是任务,内核程序就是操作系统的缩影。LDT我们把所有的段描述符都放在GDT中。
2016-08-02 23:05:36
1346
原创 32位保护模式学习小结(1)
在最近的学习中,我试着把自己学习的知识点先记录在本子上,然后总结所学。1.由实模式进入保护模式2.程序的动态加载和执行
2016-07-28 17:37:09
1255
转载 GDT(全居描述符表)和LDT(局部描述符表)
GDT的由来:在Protected Mode下,一个重要的必不可少的数据结构就是GDT(Global Descriptor Table)。为什么要有GDT?
2016-07-28 16:59:28
17588
4
转载 x86 实模式与保护模式
0386开始,CPU有三种工作方式:实模式,保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到操作系统运行起来以后就切换到protected-mode。实模式只能访问地址在1M以下的内存称为常规内存,我们把地址在1M 以上的内存称为扩展内存。在保护模式下,全部32条地址线有效,可寻址高达4G字节的物理地址空间; 扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为
2016-07-26 16:25:47
6744
1
原创 TCP协议详解
TCP协议是TCP/IP协议族中一个重要的协议。和IP协议相比,TCP协议更靠近应用层,因此在应用程序中具有更强的可操作性。一些重要的socket选项都和TCP协议相关。
2016-07-21 08:25:53
807
原创 DNS 工作原理
我们通常使用机器的域名来访问这台机器,而不是直接使用其IP地址。那么如何将机器的域名转换成IP地址呢?这就需要使用域名查询服务。
2016-07-20 16:18:28
1532
原创 sed常用的用法
sed 常用用法总结sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。
2016-07-20 10:59:42
1637
原创 正则表达式
从根本来看,正则表达式是由两个基本组成部分所建:一般字符与特殊字符。一般字符指的是任何没有特殊意义的字符,正如下表中所定义的。在某些情况下,特殊字符也可以视为一般字符。特殊字符常称为源字符。 字符 模式含义 \ 通常用以关闭后续字符的特殊意义。有时则是相反地打开后续字符的特殊意义,例如\(...\)与{...\}。 . 匹配任何单个字符,但NULL除外。独立程序也可以不允许匹配
2016-07-20 08:33:51
1082
原创 编写主引导扇区
在看《x86汇编语言从实模式到保护模式》这本书时,因为我是用fedora进行学习的,所以书上的很多工具是用不了的,只能用另外的方法来创建硬盘了:nasm mbr.asmqemu-img create -f qcow disk.img 128Mdd if=mbr of=./disk.imgqemu disk.img我们知道处理器加电或复位之后,如果硬盘是首选的启动设备,那么,ROM
2016-07-17 11:24:57
1132
2
原创 内中断
任何一个通用的的CPU,比如8086,都具备一种能力,可以在执行完当前正在执行的指令之后,检测到从cpu外部发来的或内部产生的一种特殊信息,并且可以立即对所接受到的信息进行处理。这种特殊的信息,我们可以称为:中段信息。
2016-06-19 22:06:30
1096
原创 标志寄存器
CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都有可能不同)具有以下三种作用:用来存储相关指令的某些执行结果;用来为CPU执行相关指令提供行为依据;用来控制CPU的相关工作方式。
2016-06-19 16:57:12
814
原创 汇编小结
指令和数据 指令和数据是应用上的概念。在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。CPU在工作的时候把有的信息看作指令,有的信息看作数据,为同样的信息赋予不同的意义。
2016-05-25 14:07:41
346
转载 存储器层次结构
我们知道,一个简单的计算机系统模型是CPU执行指令,而存储器为CPU存放指令和数据。 在简单模型中,存储器系统是一个线性的字节数组,CPU能够在常数时间范围内访问每个存储器位置。这样的一个简单模型并不能有效地反映现代系统实际工作的方式。实际上,存储器系统是一个具有不同容量,成本和访问时间的存储设备的层次结构。CPU寄存器保存着最常用的数据。靠近CPU的小的快速的高速缓存存储器作为一部分
2016-05-15 22:26:29
1819
转载 Glibc 内存管理知识点总结
这几天在看Glibc 内存管理模块的内容,感觉收获颇多,在此做个简单的总结,以便知识点回顾。先介绍一下相关的背景。有个项目组在研发一个类似数据库的NoSql 系统时,遇到了Glibc 内存暴增问题。据此,在经过一系列排查过后,他们提出了几个问题,分别是:1.Glibc 在什么情况下不会将内存归还给操作系统系统?2.Glibc 的内存管理方式有哪些约束?适合什么样的内
2016-05-15 22:24:34
585
原创 Hash_map()类
FDB_Hash_map.h类的声明与作用哈希数据结构的真正实现的类类开发的必要性,唯一性向对于伪哈希,真正的哈希在数据量大的情况下可以更快的进行操作
2016-04-10 06:46:02
329
转载 vector的内存释放
原文地址:http://www.cnblogs.com/summerRQ/articles/2407974.htmlvector : C++ STL中的顺序容器,封装数组 1. vector容器的内存自增长 与其他容器不同,其内存空间只会增长,不会减小。先来看看"C++ Primer"中怎么说:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素
2016-04-07 14:59:02
436
原创 epoll 函数
epoll是Linux特有的I/O复用函数。它在现实和使用上与select,poll由很大的差异。首先,epoll使用一组函数来完成任务,而不是单个函数。其次,epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中,从而无须像select和poll那样每次调用都要重复传入文件描述符集或事件集。但epoll需要使用一个额外的文件描述符,来唯一标识内核中的这个事件表,这个文件描述符使用使用如
2016-03-17 22:37:51
534
原创 UNIX网络编程 poll函数
poll提供的功能于select类似,不过在处理流设备的时候,它能提供额外的信息.#includeint poll(struct pollfd *fdarray, unsigned long nfds, int timeout);第一个参数:struct pollfd {int fd; //文件描述符short events;//请求的事件short
2016-03-17 16:32:33
382
原创 unix网络编程 select函数和shutdown函数
select函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或多个事件发生或经历一段指定的时间 去唤醒它。
2016-03-15 12:10:46
446
原创 UNIX网络编程 I/O模型
一个数入操作通常包括两个不同的阶段:(1)等待数据准备。(2)从内核项进程复制数据。对于一个套结字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待的数据从网络中到达。当所等待分组到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用进程缓冲区。一. I/O模型1.阻塞性I/O模型进程调用recvfrom,其系统调用直到数据报到达且
2016-03-14 17:02:53
346
原创 简单字符驱动程序
mycdev.c:#include#include#include#include#include#include#include#include#include#includeMODULE_LICENSE("GPL");#define MYCDEV_MAJOR 231 //cat /proc/devices查看系统中未使用的字符
2016-01-26 14:46:45
1014
原创 打印super_block结构中的一些域的值
#include#include#include#include#include#include#define SUPER_BLOCKS_ADDRESS 0xffffffff81c77670#define SB_LOCK_ADDRESS 0xffffffff820137b0 static int __init my_init(void){ st
2016-01-24 23:16:37
931
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人