uClinux和Linux的异同

技术分类: 嵌入式系统  | 2008-04-29
来源:嵌入式在线

  注意,多任务并没有受影响。哪些旧式的、广泛使用fork()的网络后台程序(daemon)的确是需要修改的。由于子进程运行在和父进程同样的地址空间内,在一些情况下,也需要修改两个进程的行为。

  很多现代的程序依赖子进程来执行基 本任务,使得即时在进程负载很重时,系统仍可以保持一种“可交互”的状态,这些程序可能需要实质上的修改来在uCLinux下完成同样的任务。如果一个关键的应用程序非常依赖这样的结构,那就不得不对它重新编写了。

  假设有一个简单的网络后台程序(daemon),大量使用了fork()。这个daemon总监听一个知名端口(或套接字)等待网络客户端来连接。当客户端连接时,这个daemon给它一个新的连接信息(新的socket编号),并调用fork()。子进程接下来就会和客户端在新的socket上进行连接,而父进程被释放,可以继续监听新的连接。

  uClinux 既没有自动生长的堆栈,也没有brk()函数,这样,用户空间的程序必须使用mmap() 命令来分配内存。为了方便,在uclinux的C语言库中所实现的malloc()实质上就是一个mmap()。在编译时,可以指定程序的堆栈大小。

0
0
(请您对文章做出评价)
1】【2
加载中

对文章的评论

更多评论

剩余字数:  

相关在线研讨会

我要参加

电路设计中可预测和不可预测问题的调试技术

时间:2008-06-02 10:00:00-12:00:00
简介:在嵌入式系统设计中,经常会出现一些可预测和不可预测的问题或者低概率事件信号。快速有效地发现这些问题需要不同的技术。8月15日…

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会