本站首页    管理页面    写新日志    退出                                          --==~欢迎光临FoxWolf的Blog~==--   



 日志搜索


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告


我的分类

日志更新

最新评论

留言板

链接

 


Blog信息
blog名称:FoxWolf
日志总数:127
评论数量:246
留言数量:0
访问次数:850006
建立时间:2006年5月31日




[必须掌握]Linux Programming by Example:The Fundamentals(Notes One)
文章收藏,  软件技术,  电脑与网络

FoxWolf 发表于 2007/11/7 14:21:57

3.1  Linux/Unix 地址空间 众所周知,操作系统把一个可执行的程序载入内存中,这个可执行程序可称为一个进程。操作系统为程序访问命令行和环境变量做好准备,将程序开启运行。分配进程的内存可分为以下五个区域: ①代码段 (文本段-text segment) 可执行指令放在这个区域。如果可能,Linux/Unix会安排好相同程序的多个运行实体共享这些实例代码。任何内存只有一份相同程序的指令拷贝。可执行文件中包含文本段的部分叫文本结点(text section)。 ②数据段 (data segment) 初始化为非零值的静态分配数据和全局数据存放在数据段中。运行相同程序的每个进程都有自己的数据段。可执行文件中包含数据段的部分是数据结点(data section)。 ③BSS 段(Block Started by Symbol) 缺省初始化为零的全局数据和静态分配的数据存放在进程的BSS区域。每个运行相同程序的进程都有自己的BSS区域。当程序运行的时候,把


阅读全文(1915) | 回复(0) | 编辑 | 精华 | 删除
 


[必须掌握]浅谈C中的malloc和free
文章收藏,  软件技术,  电脑与网络

FoxWolf 发表于 2007/11/6 20:56:03

在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用——就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以 写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!      如果不扯得太远的话(比如说

阅读全文(2701) | 回复(0) | 编辑 | 精华 | 删除
 


[必须掌握]进程在内存中的影像
文章收藏,  软件技术,  电脑与网络

FoxWolf 发表于 2007/11/5 16:49:26

进程在内存中的影像. 

      我们假设现在有一个程序, 它的函数调用顺序如下. 

      main(...) ->; func_1(...) ->; func_2(...) ->; func_3(...) 

      即: 主函数main调用函数func_1; 函数func_1调用函数func_2; 函数func_2调用函数func_3 



      当程序被操作系统调入内存运行, 其相对应的进程在内存中的影像如下图所示. 



  &nbs

阅读全文(2813) | 回复(0) | 编辑 | 精华 | 删除
 


[必须掌握]C语言高效编程的四大绝招
文章收藏,  软件技术,  电脑与网络

FoxWolf 发表于 2007/11/5 10:42:14

编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就是针对编程工作中的一些体会和经验做相关的阐述。

第一招:以空间换时间

计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。比如说字符串的赋值:

方法A:通常的办法
#define LEN 32
char string1 [LEN];
memset (string1,0,LEN);
strcpy (string1,"This is a example!!");


方法B:
const char string2[LEN] ="This is a example!";
char * cp;
cp = string2 ;


使用的时候可以直接用指针来操作。

从上面的例子可以看出,A和B的效率是不能比的。在同样的存储空间下,B直接使用指针就可以操作了,而A需要调用两个字符函数才能完成。B的缺点在于灵活性没有A好。在需要

阅读全文(1260) | 回复(0) | 编辑 | 精华 | 删除
 


[必须掌握]#define offsetof(STRUCTURE,FIELD) ((int)((char*)&((STRUCTURE*)0)->FIELD))
文章收藏,  软件技术,  电脑与网络

FoxWolf 发表于 2007/11/5 10:40:55

#define offsetof(STRUCTURE,FIELD) ((int)((char*)&((STRUCTURE*)0)->FIELD)) 上述宏是什么意思? 计算 STRUCTURE 类型中 FIELD 域的偏移量 下面拿KEIL 8051的定义来作点解释:
((s *)0):强制转化成数据结构指针,并使其指向地址0;
((s *)0)->m:使该指针指向成员m
&(((s *)0)->m):获取该成员m的地址
(size_t)&(((s *)0)->m):转化这个地址为合适的类型
你可能会迷惑,这样强制转换后的结构指针怎么可以用来访问结构体字段?呵呵,其实这个表达式根本没有也不打算访问m字段。ANSI C标准允许任何值为0的常量被强制转换成任何一种类型的指针,并且转换结果是一个NULL指针,因此((s*)0)的结果就是一个类型为s*的NULL指针。如果利用这个NULL指针来访问s的成员当然是非法的,但&(((s*)0)->m)

阅读全文(1501) | 回复(0) | 编辑 | 精华 | 删除
 


[必须掌握]BSS段 数据段 代码段 堆栈
文章收藏,  软件技术

FoxWolf 发表于 2007/11/5 10:37:30

BSS段 数据段 代码段 堆栈
声明:大部分来自于维基百科,自由的百科全书。 BSS段:在采用段式内存管理的架构中,BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 数据段:在采用段式内存管理的架构中,数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。 代码段:在采用段式内存管理的架构中,代码段(code segment / text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许自修改程序。 在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
堆栈又称堆栈(stack)在计算机科学中,是一种特殊的链表形式的数据结构,它的特殊之处在于只能允许在链表的一端(称为栈顶,英文为top)

阅读全文(2153) | 回复(0) | 编辑 | 精华 | 删除
 


[其它]什么是BSP? 概念解析
文章收藏,  网上资源,  软件技术

FoxWolf 发表于 2007/11/2 15:30:30

BSP(Board Support Package)是板级支持包,是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改)。这样才能与上层OS保持正确的接口,良好的支持上层OS。

例如:
在VxWorks中的网卡驱动,首先在config.h中包含该网卡,然后将网卡含网卡的信息的参数放入数组 END_TBL_ENTRY endDevTbl [] 中,系统通过函数muxDevLoad( )调用这个数组来安装网卡驱动。

而在Linux中的网卡驱动,是在space.c中声明该网络设备,再把网卡驱动的一些函数加到dev结构中,由函数ether_setup(

阅读全文(3171) | 回复(0) | 编辑 | 精华 | 删除
 


[必须掌握]zz可重入函数与不可重入函数
文章收藏,  网上资源,  软件技术

FoxWolf 发表于 2007/11/2 15:29:07

转载自http://blog.chinaunix.net/u/25994/showart_369466.html

阅读全文(1510) | 回复(1) | 编辑 | 精华 | 删除
 


[其它]Eclipse3.3 + MinGW +CDT4.0学习笔
文章收藏,  软件技术,  电脑与网络

FoxWolf 发表于 2007/10/27 5:27:57

 本设置的主要目的是在最新版的eclipse3.3(Europa)上开发标准C/C++程序,而不去使用VC++。

因为CDT只提供了开发C/C++项目的IDE,所以我们需要安装MinGW(即 Minimalist GNU For Windows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生 Windows32 程序。)和MSYS(Minimal GNU(POSIX)system on Windows,是一个小型的GNU环境,包括基本的bash,make等等。是Windows下最优秀的GNU环境。):
下载Automated MinGW Installer:MinGW-5.1.3.exe(注意这只是个在线安装程序),执行MinGW-5.1.3.exe;
在choose package向导页,选择Current项;
在choose components向导页,选中MinGW base tools和g++ compiler项;
在c

阅读全文(5674) | 回复(1) | 编辑 | 精华 | 删除
 


[Linux学习]linux下path与classpath设置方法,
文章收藏,  软件技术,  电脑与网络

FoxWolf 发表于 2007/10/27 4:16:13

1。
 首先下载了jdk1.4(for   linux)http://sun.java.com/j2sdk  
  安装好后可以在/usr/java下找到j2sdk1.4.0  
  然后设置路径  
  打开/etc/profile文件在末尾加上下面几行  
  #java  
  JAVA_HOME=/usr/java/j2sdk1.4.0  
  export   JAVA_HOME  
  CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib  
  export   CLASSPATH  
  PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin  
  export

阅读全文(5264) | 回复(0) | 编辑 | 精华 | 删除
 


« 1 2 3 4 5 6 7 8 9 10 »



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.078 second(s), page refreshed 144780502 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号