- 博客(18)
- 资源 (1)
- 收藏
- 关注
原创 实地址模式和保护模式的理解
在微处理器的历史上,第一款微处理器芯片4004是由Intel推出的,那是一个4位的微处理器。在4004之后,intel推出了一款8位处理器8080,它有1个主累加器(寄存器A)和6个次累加器(寄存器B,C,D,E,H和L),几个次累加器可以配对(如组成BC, DE或HL)用来访问16位的内存地址,也就是说8080可访问到64K内的地址空间。另外,那时还没有段的概念,访问内存都要通过绝对地址,因此程
2014-04-23 16:46:03 4424 1
原创 虚拟文件系统VFS的内核数据结构及联系
VFS:Linux支持各种各样的文件系统格式,如ext2、ext3、reiserfs、FAT、NTFS、iso9660等等,不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式,然而这些文件系统都可以mount到某个目录下,使我们看到一个统一的目录树,各种文件系统上的目录和文件我们用ls命 令看起来是一样的,读写操作用起来也都是一样的,这是怎么做到的呢?Linux内核在各种不同的文件系统格
2014-04-20 23:35:44 931
原创 编程之美中有关阶层的算法
①给定一个整数,求N!末尾有多少个0思路:假如想把N!算出来之后再对其求末尾0的个数只有在N比较小的时候才能行得通。换种思路,任何一个大于1的正整数都可以唯一的写为两个或者多个素数的乘积,其中素数因子以非递减的顺序出现。举个例子,比如100 = 2*2*5*5 = 2的平方乘以5的平方 ,那N!同样可以表示成这种形式,如果N!的末尾有0,那N!的因子里至少包含一个2和1个5,现在求末尾有多
2014-04-20 19:47:13 2381
原创 gdb调试器的原理
上次实习生面试问道GDB的问题,现在来总结下。当运行gdb,接着通过命令行去run一个程序的时候,gdb会执行如下几个操作:① 通过fork()系统调用创建一个新的进程,一开始是gdb的进程,现在要fork出一个函数去执行被调试的程序。② 在新创建的子进程中执行下述操作ptrace(PTRACE_TRACEME,0,0,0);这样这个新创建出来的子进程就能被父进程追踪。
2014-04-18 21:42:35 2942
原创 剑指offer第28题扩展题
输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
2014-04-14 23:55:54 1047
原创 微软2014机试第二题
DescriptionConsider a string set that each of them consists of {0, 1} only. All strings in the set have the same number of 0s and 1s. Write a program to find and output the K-th string according to
2014-04-14 19:29:41 925
原创 微软2014机试第一题
DescriptionFor this question, your program is required to process an input string containing only ASCII characters between ‘0’ and ‘9’, or between ‘a’ and ‘z’ (including ‘0’, ‘9’, ‘a’, ‘z’). Y
2014-04-12 21:25:28 702
转载 linux常用的内存分配接口
void * kmalloc(size_t size, gfp_t flags);该接口返回至少size字节的物理连续的内存空间。用法和c语言malloc函数一样。当然还有类似free的内存释放函数void kfree(const void *ptr);内核还提供vmalloc函数,用法和kmalloc一样,唯一的不同的vmalloc不保证分配的内存是物理连续的。怎么选择用哪个
2014-04-06 23:14:35 908
原创 判断链表是不是有环
void Isloop(Llink head){ if(!head||!head->next) return; Llink p,q; bool loop=false; p=q=head->next; while(q&&q->next)//判断是否有环 { p=p->next; q=q->next->next; if(p==q) { loop=true; break; } }
2014-04-06 16:18:42 737
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人