我的第一个博客

这是我的第一个博客日记。

  今天是2014年5月24日。今天我想说说今天我的收获。首先我知道了计算机显卡分为独立显卡(协处理器)和集成显卡。CPU包括运算器.存储器(寄存器).和控制器,其实还有一个高速缓冲区。当CPU要工作时,高速缓冲区会从内存上把要执行的指令代码和地址等调入高速缓冲区中,这中间是通过外部总线(指令,地址,代码)调入。当运算器要运算时,会从CPU存储器中读取,这通过内部总线,当然在这之前存储器中已经把高速缓冲区的作业调入了。

这只是基于LINUX操作系统所写!!

计算机一共有两种体系结构:一个是冯*诺依曼体系,一个是哈佛体系!那么这两个体系有什么区别哪?现在就让我给大家讲讲吧,其实有一个最本质的区别就是冯*诺依曼体系的内存中的东西是杂乱无章的,当它被调入CPU中才运算识别。而哈佛体系则是在内存中先分好段,在被调入CPU中,当然这里的是逻辑分段。

            操作系统占1g
                 stack
                 unused
                dynamic libraries
                   unused
                   heap
                     bss
            read/write   data 
                 rodata   text
                reserved

                 内存分配

这里以32位的计算机为例,操作系统占1G,程序运行空间占3G。(这其实也是虚拟的,真实的只占1G左右)下来我就以一个程序为例讲一下它们是如何在内存中分类的,当然这里说到分类就是哈佛体系结构了!

#include <stdio.h>

int a=12;

int b;

const int c=13;

int main(int argc,char argv[ ])

{

int d=14;

int e;

static f=14;

int *p;

p=(int *)malloc(sizeof(int));

printf("%d\n",a);

printf("%d\n"b);

printf("%d\n",c);

printf("%d\n",d);

printf("%d\n",e);

printf("%d\n",f);

return 0;

}

这个程序大家乍一看很简单,但是要真的弄清楚这些变量它存储在内存的情况还是有点吃力哦!现在我来给大家讲讲:

   这些变量其实是有区别的,前三个a,b,c是全局变量,且c为只读变量。d,e,f,p是局部变量,f为静态变量,p为指针变量。那么它们到底有什么区别啊?在内存中,a和f 变量存在data区域,b 存在bss中,c存在rodata text 中,d,e和p存在stack中。但是p指向的是heap这个区域。

在来总结补充一些:rodata text 存放的是代码段,只读数据段和const变量。data 中存放的是数据段(静态局部变量和初始化的全局变量)。bss中存放的是未初始化的数据段。heap是堆。dynamic libraries  是动态库。stack是栈。


程序的真正入口不是main(),而是start()。         栈,先进后出,程序运行时就是这个规则。。

text 在运行时不可变。

32位计算机是指CPU具有4G的寻址能力。

1T=1024G         1G=1024M       1M=1024KB      1KB=1024B          1B=8bit






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值