外部碎片和内部碎片的区别 外部碎片和内部碎片的区别 这几天一直看操作系统,看到内存的连续分配时,对于外部碎片和内部碎片时甚是不解,刚好在某论坛上发现了这样一个生动的讲解,便迫不及待的相遇大家分享一下。 外部碎片,是由于大量信息由于先后写入、置换、删除而形成的空间碎片。为了便于理解,我们将信息比作货物,将存储空间比作仓库来举例子。假设,我们有编号为1、2、3、4、5、6的6间仓库库房,前天送来了一大宗货,依次装入了1、2
container_of函数原理分析 /** * container_of - cast a member of a structureout to the containing structure * @ptr: the pointer to the member. //指向成员变量的指针 * @type: the type of the Container struct this is embed
《APUE:chapter 13 》守护进程测试 P375 想要初始化为守护进程的程序调用daemonize函数 #include <apue.h> 2 #include <syslog.h> 3 #include <fcntl.h> 4 #include <sys/resource.h> 5 6 void daemonize(const char *cmd) 7 { 8
异或运算 具体应用 1.世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299输出例子: 7思路: 注意负数(先转换为正数),int 有32位,故:先将两个数异或,结果&上掩码x=1;如果真,则count++;然后m,n 分别左移1位(循环32次)#include <iostream>using nam
C语言指针总结 http://www.cnblogs.com/jyaray/archive/2010/06/03/1751056.htmlC语言中的精华是什么,答曰指针,这也是C语言中唯一的难点。C是对底层操作非常方便的语言,而底层操作中用到最多的就是指针,以后从事嵌入式开发的朋友们,指针将陪伴我们终身。本文将从八个常见的方面来透视C语言中的指针,当然,还有其他没有具体提到的方面,像指针表达式、指针安全等问题,以后
数据结构与算法(c)--第4章 4.2.2 构造一棵表达式树 代码如下:#include <iostream>#include <string>#include <sstream>#include <stack>using namespace std;typedef char ELEMENT;typedef struct TreeNode{ ELEMENT vlaue; struct TreeNode
Linux设备驱动程序(0) 环境: (没有使用网上教程编译2.6.xx的标准内核来建立内核目录树,而是直接在自己的虚拟机上面进行测试,其实3.19.0-25-generic 应该属于内核目录树)编写书上的测试驱动程序: #include <linux/init.h> 2 #include <linux/module.h> 3 4 MODULE_LICENSE("Dual BSD/GPL"); 5
Linux中编译C/C++多线程程序 编译执行多线程程序编译上述多线程程序,必须使用 -lpthread编译选项,因为pthread库不是Linux默认链接库,链接时必须指定使用libpthread.a库(ubuntu11.10这些库在/usr/lib/i386-linux-gnu路径下),在编译选项中需添加-lpthread参数,示例如: C编译选项: gcc test.c -o test -lpthread C++编译选
二叉排序树 二叉排序树:又称“二叉查找树”、“二叉搜索树” 二叉排序树:或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树 二叉排序树通常采用二叉链表作为存储结构,中序遍历二叉排序树可得到一个依据关键字的有序序列;搜索、插入、删除的时间复杂度等于树高,期望
详解文件的写入和文件同步 为了提高文件的写入效率,在现代操作系统中,当用户调用write函数,将一些数据写入到文件的时候,os通常会将写入数据暂时保存在一个内存缓冲区里面(例如,unix系统实现在内核中设有缓冲区高速缓存或页高速缓存,当我们向文件写入数据时,内核通常先将数据复制到缓冲区中,然后排入队列,晚些时候再写入磁盘),这种方式称为延迟写,等到缓冲区的空间被填满,或者超过了指定的时限,或者内核需要重用缓冲区存放其它磁盘块
多叉树的设计、建立、层次优先遍历和深度优先遍历 参考: http://www.cnblogs.com/unixfy/p/3486179.html用户的多叉树数据存储在一个文件中,格式如下: aA 4 g cC z bBbB z 2 f i g 1 d d 3 x e j 每行的第一个元素指定一个节点,第二个元素表示该节点有几个子节点,紧接着后面跟了几个子节点;/* 算法1:层次优先遍历多叉树(队列)
linux下遇到觉得有用的命令 who : 读取数据文件utmp文件,此文件记录当前登入到系统的各个用户 last : 读取数据文件wtmp文件,此文件跟踪各个登入和注销事件 (高编P149) uname :读取系统,机器相关的信息(用法:uname –help 然后 uname -a) time :命令,指示程序运行的时间(用法:time +执行程序,如:time ./a.out)
Simpelscalar 1.what’s Simplescalar ? http://www.ecs.umass.edu/ece/koren/architecture/Simplescalar/SimpleScalar_introduction.htm http://www.simplescalar.com/docs/simple_tutorial_v4.pdf2.安装: http://www.cnblogs.com
IO:输入输出 不带缓冲I/O 例如:函数open,read,write,lseek以及close 提供不带缓冲的I/O; (高编P7) 标准I/O 标准I/O函数为那些不带缓冲的I/O函数提供了一个带缓冲的接口,使标准I/O函数无需担心如何选取最佳缓冲区的大小(因为缓冲区的大小会影响程序的效率),所以的标准I/O函数定义在#include< sdtio.h>中。(高编P8)
编译器:GCC / Clang 编译器架构: 理解Blog中:三、STL、ABI、UNWIND层次关系 http://blog.csdn.net/vloong/article/details/19070443 上图分析: g++complier是g++编译的,先调用其标准库libstdc++(包含了libsupc++),然后标准库又依赖libgcc_s,往下又依赖libc.so; clangcompiler是cl