嵌入式linux系统设计与应用 课件 第5、6章 嵌入式Linux内核、嵌入式Linux文件系统.pptx

嵌入式linux系统设计与应用 课件 第5、6章 嵌入式Linux内核、嵌入式Linux文件系统.pptx

  1. 1、本文档共114页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第五章嵌入式Linux内核;第五章嵌入式Linux内核;第三课嵌入式Linux内核;Linux概述;ARM-Linux内核概述;对比:WINCE的系统调用;ARM-Linux内核版本;ARM-Linux内核特点;ARM-Linux内核的主要架构及功能

;ARM-Linux内核5.15版本的目录结构;5.1.4linux内核源码目录结构;Kernel内核管理的核心代码放在这里。另外与处理器结构相关代码都放在arch/*/kernel目录下。

Net目录里是核心的网络部分代码。

Lib目录包含了核心的库代码,但是与处理器结构相关的库代码被放在arch/*/lib/目录下。

Scripts目录包含用于配置核心的脚本文件。

Documentation目录下是一些文档,是对目录作用的具体说明。;ARM-Linux进程管理;进程是处于执行期的程序以及它所管理的资源的总称,这些资源包括如打开的文件、挂起的信号、进程状态、地址空间等。程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源。;ARM-Linux进程管理;5.2.1进程的表示和切换;系统中的每个进程都必然处于以上所列进程状态中的一种。这里对进程状态给予说明

TASK_RUNNING表示进程要么正在执行,要么正要准备执行。

TASK_INTERRUPTIBLE表示进程被阻塞(睡眠),直到某个条件变为真。条件一旦达成,进程的状态就被设置为TASK_RUNNING。

TASK_UNINTERRUPTIBLE的意义与TASK_INTERRUPTIBLE基本类似,除了不能通过接受一个信号来唤醒以外。

__TASK_STOPPED表示进程被停止执行。

__TASK_TRACED表示进程被debugger等进程监视。

TASK-WAKEKILL该状态是当进程收到致命错误信号时唤醒进程。

TASK_WAKING:该状态说明该任务正在唤醒,其他唤醒操作均会失败。都被置为TASK_DEAD状态。

TASK_DEAD:一个进程在退出时,state字段都被置于该状态。

EXIT_ZOMBIE:表示进程的执行被终止,但是其父进程还没有使用wait()等系统调用来获知它的终止信息。

EXIT_DEAD:进程在系统中被删除时将进入该状态。该状态表示进程的最终状态。

EXIT_ZOMBIE和EXIT_DEAD也可以存放在exit_state成员中。;图5-5进程状态的切换;进程、线程和内核线程;进程是系统资源分配的基本单位,线程是程序独立运行的基本单位;内核线程和普通进程的不同:

1.内核线程永远都运行在内核态,而不同进程既可以运行在用户态也可以运行在内核态。从地址空间的使用角度来讲,内核线程只能使用大于3GB的地址空间,而普通进程则可以使用整个4GB的地址空间。

2.内核线程只能调用内核函数无法使用用户空间的函数,而普通进程必须通过系统调用才能使用内核函数。;进程关键数据结构task_struct;进程的创建;Linux5.10版本后do_fork()被取代;进程的创建;进程的执行---exec函数族;进程的终止;进程的调度;2.进程调度的一般原理

调度程序运行时,要在所有可运行的进程中选择最值得运行的进程。选择进程的依据主要有:

进程的调度策略(policy)、

静态优先级(priority)、

动态优先级(counter)、

实时优先级(rt-priority)。;调度策略:从O(1)到CFS;内核默认提供了5个调度器,Linux内核使用structsched_class来对调度器进行抽象:

(1)Stop调度器(stop_sched_class):优先级最高的调度类,可以抢占其他所有进程,不能被其他进程抢占。

(2)Deadline调度器(dl_sched_class):使用红黑树,把进程按照绝对截止期限进行排序,选择最小进程进行调度运行。

(3)RT调度器(rt_sched_class):实时调度器,为每个优先级维护一个队列。

(4)CFS调度器(cfs_sched_class):完全公平调度器,采用完全公平调度算法,引入虚拟运行时间概念。

(5)IDLE-Task调度器(idle_sched_class):空闲调度器,每个CPU都会有一个idle线程,当没有其他进程可以调度时,调度运行idle线程。

;Linux内核提供了一些调度策略供用户程序来选择调度器,其中Stop调度器和IDLE-Task调度器,仅由内核使用,用户无法进行选择。调度策略主要有:

(1)SCHED_DEADLINE:限期进程调度策略,使task选择Deadline调度器来调度运行。

(2)SCHED_RR:实时进程调度策略,时间片轮转,进程用完时间片后加入优先级对应运行

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档