- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
任务与进程在Linux中可以混用-HPECommunity
任务与进程在Linux中可以混用?
这意味着系统中的最大进程数目受task数组大小的限制,缺省值一般为512。创建新进程时,Linux将从系统内存中分配一个task_struct结构并将其加入task数组。当前运行进程的结构用current指针来指示
#那么linux上最多的进程数是多少?
Linux还支持实时进程。这些进程必须对外部时间作出快速反应(这就是实时的意思),系统将区分对待这些进程和其他进程
进程常因为执行系统调用而需要等待。由于处于等待状态的进程还可能占用CPU时间,所以Linux采用了预加载调度策略。在此策略中,每个进程只允许运行很短的时间:200毫秒,当这个时间用完之后,系统将选择另一个进程来运行,原来的进程必须等待一段时间以继续运行。这段时间称为时间片。
调度器必须选择最迫切需要运行而且可以执行的进程来执行。
可运行进程是一个只等待CPU资源的进程。Linux使用基于优先级的简单调度算法来选择下一个运行进程。当选定新进程后,系统必须将当前进程的状态,处理器中的寄存器以及上下文状态保存到task_struct结构中。同时它将重新设置新进程的状态并将系统控制权交给此进程。为了将CPU时间合理的分配给系统中每个可执行进程,调度管理器必须将这些时间信息也保存在task_struct中
policy
应用到进程上的调度策略。系统中存在两类Linux进程:普通与实时进程。实时进程的优先级要高于其它进程。如果一个实时进程处于可执行状态,它将先得到执行。实时进程又有两种策略:时间片轮转和先进先出。在时间片轮转策略中,每个可执行实时进程轮流执行一个时间片,而先进先出策略每个可执行进程按各自在运行队列中的顺序执行并且顺序不能变化。
priority
调度管理器分配给进程的优先级。同时也是进程允许运行的时间(jiffies)。系统调用
renice可以改变进程的优先级。
rt_priority
Linux支持实时进程,且它们的优先级要高于非实时进程。调度器使用这个域给每个实时进程一个相对优先级。同样可以通过系统调用来改变实时进程的优先级。
counter
进程允许运行的时间(保存在jiffies中)。进程首次运行时为进程优先级的数值,它随时间变化递减。
kswapd内核线程:每10秒激活一次
任务:当空闲页面低于一定值时,从进程的地址空间、各类cache回收页面
为什么不能等到内存分配失败再用try_to_free_pages回收页面?原因:
1 有些内存分配时在中断或异常处理调用,他们不能阻塞
2 有时候分配发生在某个关键路径已经获得了一些关键资源的时候,因此它不能启动IO。如果不巧这时所有的路径上的内存分配都是这样,内存就无法释放。
####################
对于用户来说使用系统调用和函数方法相同,都要include
man 2 open
####################
nr_tasks代表最大进程数,在include/tasks.h中定义了,其值为x86最大进程数为4092,每个用户最大进程数为2048
#####################
linux不是抢占式多任务,只是多任务
linux是nonpreemptive 内核,就意味着,不能随意的交错执行处于特权模式下,也意味着,只有进程自愿放弃CPU时,调度程序才能被调用。
的流。内核中的几部分代码假定它们能够运行和修改一些数据结构,无须担心被中断,也无须担心让另一个线程改变这些数据。通常完全抢占式(preemptive)内核总是与专用实时操作系统有关。
第一条防线是UNIX 内核是不可抢占的。这意味着任何一个在
内核中执行的进程,尽管其时间片可能已用完,也不能被其他进程抢占。这个进程必须是自愿放弃CPU 。这种情况通常是进程在等待资源或事件被阻塞时,或是当它完成内核态活动后准备返回用户态时发生。上述两种情况下,因为CPU 是自愿放弃的,进程可确保内核处于一个一致的状态。具有实时性的现代UNIX 内核允许在一定条件的重入。
尽管内核不会被其他进程抢占,但一个正操作内核数据结构的进程却可被设备中断。
进程调度
CPU 是一个由所有进程共享的资源。内核中在进程间分配CPU 时间的那部分称为调度器(scheduler)。传统UNIX 调度器使用抢占式轮转调度、相同优先级的进程以轮转方式调度,每个运行一个固定的时间片(通常是 100 毫秒)。若有一个更高优先级的进程准备就绪,
无论当前进程是否用完其时间片,它都会被那个高优先级进程抢占(除非当前进程正在内核态运行)。传统UNIX 中系统,进程优先级由两个
文档评论(0)