if(CPU分配时间片的单位是线程):
1.这是不是就意味着尽量使用多线程并发,这样可以抢到更多的时间片。
2.操作系统对于拥有多线程的进程,是否会减少其每个线程的时间片,
或做其他处理来保证公平性?
else:
1.这是不是表明我们应该合理分配线程。在一个进程中的多个线程要注
意在可能的情况下将本线程阻塞,将剩余的时间片让给兄弟线程。
2.程序尽量将任务交给多个子进程,以获得更多的时间片来执行整个程序?
(0)
最佳答案
是线程。线程是实际工作的单元
1.这是不是就意味着尽量使用多线程并发,这样可以抢到更多的时间片。
理论上是的,多线程的一种用途就是能同时做好几件事情,以提高效率。但实际问题是,CPU的数量(核心数,下同)是有限的,而且并不多。如果你的CPU有8个CPU,并且整个系统中有8个线程的话,不考虑中断等因素,每个线程理论上能一直执行下去。然而多于8个线程以后,操作系统就必须进行调度,也就是分配时间片。具体的分配方案,或者说调度算法有很多种,详情参见Scheduling (computing)。如果一个进程创建了很多线程的话,最多也只有8个能够处于执行的状态
2.操作系统对于拥有多线程的进程,是否会减少其每个线程的时间片,或做其他处理来保证公平性?
这就是调度算法需要考虑和优化的问题。比如线程和进程有优先级,在抢占式的调度中,优先级高的线程可以从优先级低的线程那里抢占CPU。另外,在多CPU平台上,调度算法还要考虑缓存的关联性等。
在一个进程中的多个线程要注意在可能的情况下将本线程阻塞,将剩余的时间片让给兄弟线程。
在主流的操作系统实现里,一般进程是不能直接控制自己的线程的执行顺序的。也就是说,把一个线程挂起并不能保证另一个线程一定能够被执行。
(0)
在Linux上,进程和线程都被看成是“任务”,无论是进程还是线程,都在栈中有自己独立的task_struct数据结构。其中最重要的用来保存任务信息的是thread_union数据结构,其低地址存放当前进程/线程信息,高地址存放内核栈。因此,从内核角度来看,进程线程都是任务,线程也是进程。从这个角度来理解就是:在Linux下区分线程进程的区别/关系主要是看父子进程资源共享程度,线程只是进程间资源共享(通信)的一种手段而已。
学习可关注:人工智能技术与咨询,更多详情可咨询175-3102-1189,或到我司官网了解:***.***/
联系人:申老师;qq群:189696007;手机:17531021189(v同号)。
(0)
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论