当前位置:  技术问答>linux和unix

容纳进程个数,计算NR_TASKS的问题

    来源: 互联网  发布时间:2016-03-06

    本文导语:  能容纳的进程的个数是由GDT表项个数决定的。 我知道,除去一些系统保留,剩余的GDT表项有8180项。 为什么计算NR_TASKS的时候要除以2,得到4090个进程。 看一个帖子上说:http://www-128.ibm.com/developerworks/cn/linux/l-memmod/ 任...

能容纳的进程的个数是由GDT表项个数决定的。
我知道,除去一些系统保留,剩余的GDT表项有8180项。
为什么计算NR_TASKS的时候要除以2,得到4090个进程。
看一个帖子上说:http://www-128.ibm.com/developerworks/cn/linux/l-memmod/
任何情况下,GDT 中的条目数 8180,因此: 

2 * NR_TASKS = 8180 
NR_TASKS = 8180/2 = 4090 

(为什么使用 2 * NR_TASKS?因为对于所创建的每个进程,都不仅要加载一个 TSS 描述符 —— 用来维护上下文切换的内容,另外还要加载一个 LDT 描述符。) 

好像不是每个进程都有TSS的吧,ms只有当前的进程才有TSS对不对,还有不是说Linux基本上不用LDT吗?为什么每个进程还要产生一个LDT呢?
不解~!!!!

|
这个是由I386体系决定的, I386 最初的设计是同时为每一任务提供独立内存管理的, 所以就需要LDT这个个寄存器, 但在LINUX 中并没有这样做, 而是进程在用户空间里统一分配内存. 每个进程还要产生一个LDT 据说是为兼容WINDOWS 的程序运行方式, ok?

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Vectors 成员 reserve():设置Vector最小的元素容纳数量
  • copy文件的时候,我发觉同名文件不会出现是否覆盖的提示,能不能容纳嘎系统给个“是否覆盖的提示”
  • C++ Vectors 成员 max_size():返回Vector所能容纳元素的最大数量(上限)
  • C++ Vectors 成员 capacity():返回vector所能容纳的元素数量(在不重新分配内存的情况下)
  • C++ Lists(链表) 成员 max_size():返回list能容纳的最大元素数量
  • C++ Strings(字符串) 成员 reserve():保留一定容量以容纳字符串(设置capacity值)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3