关于C的实现及操作系统的实现
我是学过C的,但是长期做JAVA的,最近又开始回来仔细啃C,现在处于迷茫期,容易胡思乱想,所以有一些疑问。
首先是我读了LINUX下malloc的源代码,发现居然连这种内存分配的功能都是用C本身所实现的,所以我有以下几个疑问:
1.既然MALLOC都是用C本身实现的,那么C是用何种方式实现的“堆”,因为C原生的编译器提供的好像就剩下栈和静态区了。
2.如果堆的当前可用地址是操作系统的本地方法提供的,问题是操作系统也是C写的,那么………………难道是真的一开始就用最原始的办法直接写16进制地址的方式把内存划分好空间吗?
3.realloc的实现机制:如果新空间地址大于以前的空间,而以前空间的后面已经被分配了,无法延长,是否会另外开辟空间,如果频繁使用realloc来缩小所分配的空间,是否容易造成很多内存的碎片。
4.编译型语言的编译器是否都要用汇编来实现,那岂不是非常难?用汇编又要考虑到运行时的那么多问题,比如内存的标记啊,什么什么的,满脑子都给我塞满了
学习~~~~
分配内存每个系统都提供了接口,如果要自己实现,就需汇编。。没必要在这里深究
realloc实现参见:
http://topic.csdn.net/u/20070927/19/434fc2b5-bccd-49b0-9991-deb88b0dfe5c.html
这些问题的确值得深入讨论
没有资本,不敢乱说。但是可以去看书。《APUE》,《Modern Operating systems》,K&R的《The C Programming Language》都是比较好的书, 可以解决很多疑问。正在学习中
我觉得你的迷惑主要是对更加低层的东西的一些迷惑,找个简单的os 例如uc_os去研究研究,也许很多
回豁然开朗!
编译语言的第一个版本肯定要是汇编或者其他语言实现的
相关问答:
请问用C或C++如何编写求解3D魔方的程序,该从何开始?
谢谢各位,帮忙提点建议吧。
http://www.mofang.net/code/176/182/6581.html
我只能突破60秒!唉。
我刚过40秒
google的android中有个OpenGL ES + ......
我这里有一个登陆WIFI网络的页面。由于WIFI经常断线,所以要反复地在这个网页上登陆,没法无人值守。
所以,我想做一个C#程序,放一个webbrowser控件,自动填表并自动点击提交按钮。
问题一:
基本照网上找的程序 ......
如题,C/C++中的execl怎么调用写好的java程序,
execl("/opt/java1.5/bin/java","MyClass",NULL);
这样的不行哦。
不会.
运行java程序
找工具查看一下那个程序的命令行
搜索下:jni ......
分别用结构化方法和面向对象方法编程实现下面要求:
对Circle和Rectangle实现以下功能Center,Move,Rotate,Print.
自己先订以下,这是一个刚学习计算机的人问我的
学习,看看
继续顶哦
学习了。
go o ......
我只学过清华蓝封面的C语言基础,想更深入的学习,该看什么书好?
C Primer Plus
C程序设计语言(第2版新版)
C语言程序设计_现代方法
C语言参考手册第五版
C语言大全
C和指针
C陷阱与缺陷
C专家编程
......