在LINUX下编程的好处,限C语言C++

不同视角、不同观点、深度探讨,禁止人品和道德攻击
3162073
帖子: 14
注册时间: 2007-05-10 23:10

#31

帖子 3162073 »

laborer 写了:
3162073 写了:调用malloc 编译器无非就是調系统调用... 把参数压里栈后调用int 0x80,in21h 什么的.. 反汇编是看不出什么东西.. 本来都是黑箱.. 要实现 malloc自己写个小系统就知.. 这个东西不是在应用层的
malloc的实现不完全是系统调用。可以想象一下,如果是需要分配的内存比较小的时候,每次都进入内核态让内核处理,多累啊。
把需要分配内存的大小作为参数算出来这是malloc的工作,怎么告诉系统,把malloc联系系统调用是编译器的工作.. 分配内存,是系统的工作,确实每次都要让内核处理
头像
skyx
论坛版主
帖子: 9202
注册时间: 2006-12-23 13:46
来自: Azores Islands
联系:

#32

帖子 skyx »

xhy 写了:比如说我想知道memcpy是怎么实现的
直接一翻源代码就知道了

还有vim ctags等非常好用的代码工具
学好linux开源软件实现思想后方便今后开发更好的for m$商业闭源收费软件,赚大钱?或者申报一个课题抄袭开源软件发国难财?
no security measure is worth anything if an attacker has physical access to the machine
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

#33

帖子 xhy »

skyx 写了:
xhy 写了:比如说我想知道memcpy是怎么实现的
直接一翻源代码就知道了

还有vim ctags等非常好用的代码工具
学好linux开源软件实现思想后方便今后开发更好的for m$商业闭源收费软件,赚大钱?或者申报一个课题抄袭开源软件发国难财?
just for fun
以后不打算混IT业
目前负债150多万
头像
laborer
帖子: 1016
注册时间: 2005-10-25 11:15
联系:

#34

帖子 laborer »

3162073 写了:
laborer 写了:
malloc的实现不完全是系统调用。可以想象一下,如果是需要分配的内存比较小的时候,每次都进入内核态让内核处理,多累啊。
把需要分配内存的大小作为参数算出来这是malloc的工作,怎么告诉系统,把malloc联系系统调用是编译器的工作.. 分配内存,是系统的工作,确实每次都要让内核处理
从逻辑上分析,在i386上,内核分配内存一次最少一页,也就是4KB,而malloc一次可以只分配1个Byte,总不可能每次malloc(1)的时候都去分配4KB的容量吧。

其实做个小实验就能看出来了,你可以用strace看看是不是每次malloc都会mmap或者brk。

当然,不排除有些简单的libc实现直接就让内核处理了(比如某些嵌入式运用上),但是主流的肯定是libc和kernel的内存分配算法混合的。
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
yiyaman
帖子: 47
注册时间: 2007-02-17 22:32
来自: 广东河源
联系:

#35

帖子 yiyaman »

xhy 写了:
Amankwah 写了:vim编辑C源文件的时候new不会高亮,VC++弄得我怎么看怎么不爽,怎么连C和C++都不区分呢?
一个字,傻~
C源文件new为什么要高亮? C语言难道有new?
C++里new高亮是没问题的
似乎人家就在批评VC连C的new都高亮这个问题,而不是说C的new需要高亮
yingtaoting
帖子: 14
注册时间: 2007-06-26 11:22

#36

帖子 yingtaoting »

Glibc分配算法:

小于等于64字节:用pool算法分配。
64到512字节之间:在最佳凭配算法分配和pool算法分配中取一种合适的。
大于等于512字节:用最佳凭配算法分配。
大于等于128K:直接调用OS提供的函数(如mmap)分配。
头像
David50814
帖子: 556
注册时间: 2007-06-11 4:20
来自: 北京
联系:

#37

帖子 David50814 »

xhy 写了:windows下很多源码是看不了的
比如说创建一个进程 具体是怎么实现的?
比如说malloc分配内存 又是怎么实现的?
这个在Linux下怎么看呢请问
头像
David50814
帖子: 556
注册时间: 2007-06-11 4:20
来自: 北京
联系:

#38

帖子 David50814 »

我看了一下ubuntu的内核源码
但是不知道从哪看起,请高手指教
头像
David50814
帖子: 556
注册时间: 2007-06-11 4:20
来自: 北京
联系:

#39

帖子 David50814 »

我看了一下ubuntu的内核源码
但是不知道从哪看起,请高手指教
头像
angelx
帖子: 6
注册时间: 2007-08-27 1:18
来自: Guangdong China
联系:

#40

帖子 angelx »

编程的环境很重要,例如微软的VS2005,功能强大,操作简单。如果Linux也有这么方便的编程环境,哪种语言也不成问题吧!呵呵,个人比较喜欢C。
czk
帖子: 232
注册时间: 2006-10-08 22:20

#41

帖子 czk »

linux下接口的命名习惯和C语言一致,看起来舒服,讨厌匈牙利命名法。
头像
依寻依然
帖子: 1617
注册时间: 2006-10-31 14:49

#42

帖子 依寻依然 »

Linux在源代码层面上更标准一些,封装性比win下的要好。
另,msdn真的不怎么样,学长公司买的正版msdn,每月都有新增,但是看起来还是有些乱。个人感觉还不如Java的API做得好
Borders are meant to be crossed
oiniya
帖子: 256
注册时间: 2007-07-26 15:07

#43

帖子 oiniya »

czk 写了:linux下接口的命名习惯和C语言一致,看起来舒服,讨厌匈牙利命名法。
貌似M$.net已经抛弃这种命名方法了,它只是特定历史时期的产物,因为现在很多开发环境下,都可以直接提示变量类型
之类的信息了,所以不需要用前缀来特意表明,当然维护繁琐也是匈牙利命名法被淘汰的原因之一。
至于linux下的命名方法,也不是十分喜欢,有兴趣的可以看看C#编码规范,它的命名规则比较舒服。
oiniya
帖子: 256
注册时间: 2007-07-26 15:07

#44

帖子 oiniya »

初学者来说,绝对是windows下编程更为惬意,特别是对我们这些从小就在WIN里面泡惯了的学生来说...

linux下编程的好处?
1,可以不用盗版IDE了,心里比较舒服?
2,编译器、编辑器、调试器就那么几个,就算升级,用法也不会出现太多变化,各种IDE也基本都是调用这些基本命令
组装起来的,使用起来不会有太多困难。而WINDOWS下面每个厂商开发的IDE各不相同,就算是同一厂商,不同版本的ide也常常会有很大区别,更换开发环境或者进行版本升级都有一个再学习的过程。
3,LINUX下没有那么丰富的游戏资源,估计可以比较专一的进行编程吧(条件:没有两个以上的系统)
4,据统计LINUX程序员比WIN程序员工资高30%左右...
头像
stlxv
论坛版主
帖子: 8275
注册时间: 2006-05-03 0:39
来自: المريخ

#45

帖子 stlxv »

David50814 写了:我看了一下ubuntu的内核源码
但是不知道从哪看起,请高手指教
你可以自己编译一个内核,然后一边调试一边看源码
PHP是最好的语言!不服来战!
回复