内嵌操作系统中的内存使用问题

oooo 2000-08-23 03:04:00
(1)对于嵌入式操作系统,为了提高RAM的利用效率,应尽量减少对内存的分配和
释放的操作,这是不是意味着在内嵌式操作系统中编程,最好不用链表这种数据结
构?
(2)现在我要处理某数据流,数据流中的data packet拥有不同的优先级,在来不
及处理的情况下,必须采用某种数据结构暂时将这些data packets存放起来,请
问用哪种数据结构既不降低RAM的利用效率,又不至于太复杂?
...全文
148 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SCUM 2000-08-30
  • 打赏
  • 举报
回复
可以做得简单一点嘛:
建一张数据表和一张索引表,类似 windows 的 handle 模式。
另写一段代码用于在需要的时候重新排列数据表以挤出空闲内存(还要调整索引表项),
这段代码不需要写得很复杂。
oooo 2000-08-25
  • 打赏
  • 举报
回复
如果不考虑data pachets的不同优先级,这是个好办法。但如果考虑优先级,循
环buffer不遵循FIFO的规则,优先级较高的data packets取出buffer后,会出现
不连续的可用buffer段,当新来的data packet要写入buffer时,就要从若干个
可用buffer段中选一个最小可用的段,这类似内存碎片的问题。处理起来好麻烦
啊,并可能出现buffer的浪费。盼进一步赐教。
Kevin_qing 2000-08-24
  • 打赏
  • 举报
回复
char buf[size];
int pointer[MAX_PACKAGE];
char *ptnr=buf;
int n_pointer=0;
while(...){
int nRecv=recv(ptnr);
pointer[n_pointer]=ptnr-buf;
ptnr+=nRecv;
n_pointer++;
}

这样的如何呢?
用一个buffer 存所有的package
另外用一个数组存放其起止地址
buffer可以做成一个环状的



oooo 2000-08-24
  • 打赏
  • 举报
回复
但data packets大小并不相同啊!
Kevin_qing 2000-08-23
  • 打赏
  • 举报
回复
带索引的数组如何?

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧