加载中…
个人资料
maggie
maggie
  • 博客等级:
  • 博客积分:0
  • 博客访问:23,945
  • 关注人气:2
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
learning
读万卷书,行万里路
公告
 开心才是人生的真谛!
图片播放器
评论
加载中…
好友
加载中…
嵌入式论坛
留言
加载中…
博文
分类: linux操作系统

摘自:http://www.aka.org.cn/Magazine/Gnu/categories.html

[image of a Philosophical Gnu] (jpeg 7k) (jpeg 141k) 因专利权问题而没有gif图

下面是一些在讨论自由软件时会经常提及的术语,它解释了哪些种类是和别的相交迭或者是别的种类的一部分。

阅读其它文章 | “

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
分类: linux程序设计

ELF文件格式分析
ELF文件有三种类型:可重定位文件:也就是通常称的目标文件,后缀为.o。共享文件:也就是通常称的库文件,后缀为.so。可执行文件:本文主要讨论的文件格式,总的来说,可执行文件的格式与上述两种文件的格式之间的区别主要在于观察的角度不同:一种称为连接视图(Linking View),一种称为执行视图(Execution View)。

首先看看ELF文件的总体布局:

ELF header(ELF头部)
Program header table(程序头表)
Segment1(段1)
Segment2(段2)
………
Sengmentn(段n)
Setion header table(节头表,可选)

段由若干个节(Section)构成,节头表对每一个节的信息有相关描述。对可执行程序而言,节头表是可选的。

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
分类: linux程序设计

COFF 文件格式分析
COFF 格式比 a.out 格式要复杂一些,最重要的是包含一个节段表(section table),因此除了 .text,.data,和 .bss 区段以外,还可以包含其它的区段。另外也多了一个可选的头部,不同的操作系统可一对此头部做特定的定义。

COFF 文件格式如下:

File Header(文件头部)
Optional Header(可选文件头部)
Section 1 Header(节头部)
………
Section n Header(节头部)
Raw Data for Section 1(节数据)
Raw Data for Section n(节数据)
Relocation Info for Sect. 1(节重定位数据)
Relocation Info for Sect. n(节重定位数据)
Line Numbers for Sect. 1(节行号数据)
Line Numbers for Sect. n(节行号数据)
Symbol table(符号表)
String table(字符串表)
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
分类: linux程序设计

UNIX/LINUX 平台可执行文件格式分析

转载自:IBM developerWorks 中国网站

施聪 memncmp@yahoo.com.cn
高级程序员、网络设计师
2004 年 12 月

本文讨论了 UNIX/LINUX 平台下三种主要的可执行文件格式:a.out(assembler and link editor output 汇编器和链接编辑器的输出)、COFF(Common Object File Format 通用对象文件格式)、ELF(Executable and Linking Format 可执行和链接格式)。首先是对
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2006-11-21 11:49)
分类: 随笔
昨天看<<Linux操作系统结构分析>>,感觉这本书不错!有时间应该多看几遍!现在没时间啊!!!!
补充书籍:
<<数据结构>>
网络方面的书籍
<<Linux操作系统结构分析>>
 
有时间一定要看,现在先大概了解一下吧!!!时间啊!!如此的少!!!我现在最需要的就是时间!!
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2006-11-16 10:49)
分类: C语言
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2006-11-09 11:20)
分类: C语言
谢谢shark帮忙纠错!
 
主要是位域的对齐,其他结构体的对齐相对简单。
1、
struct s1
{
  int i: 8;
  int j: 4;
  int a: 3;
  double b;
}data;

我上机运行的结果是sizeof(data)=10(在turboc2上);  ——16(在vc6.0 上)
其存储结构应该为(单位是bit):8+4+3+49(填充)+64=16字节
2、
struct s1
{
  int i: 4;
  int j: 5;
  int a: 7;
}data;
上机运行的结果是sizeof(data)=2(在turboc2上)——4(在vc6.0 上)
其存储结构应该为(单位是bit):4+5+7+16(填充)=4字节
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
分类: C语言
求函数返回值,输入x=9999;
int func ( x )
{
    int countx = 0;
    while ( x )
    {
        countx ++;
        x = x&(x-1);
    }
    return countx;
}

知道了这是统计9999的二进制数值中有多少个1的函数,且有
9999=9×1024+512+256+15
故结果为8。
1000 - 1 = 0111,正好是原数取反。这就是原理。
用这种方法来求1的个数是很效率很高的。
不必去一个一个地移位。循环次数最少。
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2006-11-08 10:22)
分类: linux操作系统
1、Linux中提供的进程间通信机制有:信号、管道、套接字、FIFO、System V的IPC机制有:消息队列、共享存储区、信号量。
 
2、进程死锁的原因
  • 资源竞争
  • 进程推进顺序非法

3、死锁的4个必要条件

  • 互斥——一个资源只能由一个进程占用
  • 请求和保持——进程占用某些资源时,又去申请其他新的资源,而在申请新资源受挫时,又不放弃已占用的资源.
  • 不可剥夺——进程所占资源使用完之前,不能被剥夺,只能由该进程主动释放。
  • 环路等待条件——一个进程-资源的环路,环路中的进程形成一个等待链。

4、死锁的处理

  • 死锁的预防
  • 死锁的避免
  • 死锁的检测
  • 死锁的解除

5、操作系统中进程调度算法有哪几种?

  • 先来先服务(First Come First Serve,FCFS)
  • 时间片轮转算法
  • 短进程优先级算法
  • 优先权算法
  • 多级反馈队列算法

6、线程与进程的区别和联系? 线程是否具有相同的堆栈? dll是否有独立的堆栈?

  • 进程包括:可执行程序代
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
分类: C语言
main()
{
  int a[5]={1,2,3,4,5};
   int *ptr=(int *)(&a+1);
   printf('%d,%d',*(a+1),*(ptr-1));
}
输出:2,5
*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5
&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)
int *ptr=(int *)(&a+1);
则ptr实际是&(a[5]),也就是a+5
原因如下:
&a是数组指针,其类型为 int (*)[5];
而指针加1要根据指针类型加上一定的值,
不同类型的指针+1之后增加的大小不同
a是长度为5的int数组指针,所以要加 5*sizeof(int)
所以ptr实际是a[5]
但是prt与(&a+1)类型是不一样的(这点很重要)
所以prt-1只会减去sizeof(int*)
a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有