- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统linux总结嵌入式系统linux总结
嵌入式实时操作系统复习提纲
一、基本概念
Linux内核主要是由进程调度、内存管理、虚拟文件系统、网络接口和进程间通信等组成。
3.Linux用户进程:
Linux系统定义了五种状态进程状态
从Linux的调度来看,支持非实时(普通)和实时两种进程。
5.考虑到中断处理的效率,Linux的中断处理程序分为两个部分:上半部(top half)和下半部(bottom half)。由外部设备引发的中断叫外部中断,处理器响应中断请求而执行的程序模块叫中断服务例程
6.交换机制:将不用或暂不用的页框中的页移出,装上新的页面;linux三级分页结构
7.进程的通信与同步机制有管道、信号、消息队列、共享内存和信号量集等el 中。Linux的管道有:匿名管道和命名管道;从信号的可靠性方面,信号可以分为:可靠信号和不可靠信号。
8.linux设备驱动注册的基本参数有设备名称,设备驱动的数据结构、设备号
和 次设备号。lsmod 把现在 kernel 中已经安装的modules 列出来;insmod 把某个 module 安装到 kernel.
二、基本原理和方法
基于虚拟内存技术的程序执行两次映射:
Buddy算法-伙伴算法
Slab分配器思想
Linux内存管理的基本内容和步骤
Linux 内核的主要组成部分
Linux的中断处理程序
Linux系统进程调度的总体思想。
实时进程优先于普通进程,实时进程以进程的紧急程度为优先顺序,普通进程以进程平等占用CPU时间为基本调度原则。
Linux提供了两种实时调度策略SCHED_FIFO和SCHED_RR
linux使用的进程间通信方式:(1)管道(pipe)和有名管道(FIFO)(2)信号(signal)(3)消息队列:msgget可以创建一个新队列或打开一个存在的队列. ?msgctl类似于驱动程序中的ioctl函数, 可对消息队列执行多种操作. 调用msgsnd将数据放到消息队列中. 调用msgrcv将从消息队列中取消息.(4)共享内存:
linux进程调用shmget(Shared Memory GET,获取共享内存)来分配一个共享内存块。shmat(SHared Memory Attach,绑定到共享内存)。shmctl(Shared Memory Control,控制共享内存)函数会返回一个共享内存块的相关信息。同时 shmctl 允许程序修改这些信息。
(5)信号量(6)套接字(socket)
三、Linux调度程序理解
1. Linux使用内核函数goodness()对进程进行加权处理:
Static inline goodness (struct task_struct * pint this_cpu, struct mm_struct *this_mm){Int weight;
Weight=-1; If (p-policy SCHED_YIELD)// /*判断如果任务的调度策略被置为SCHED_YIELD的话,则置权值为-1,返回。
goto out;
If (p-policy==SCHED_OTHER) /*先对普通进程进行处理(由于多数是普通进程,这样做有利于提高系统效率)*/
{weight=p-counter;? ?? ?? ?/*返回权值为进程的counter值*/
If (! weight)Goto out;#Ifdef CONFIG_SMP
If (p-processor==this_cpu)
Weight+=PROC_CHANGE_PENALTY;
#EndifIf (p-mm==this_mm||! p-mm)Weight+=1; /*对进程权值进行微调,如果进程的内存空间使用当前正在运行的进程的内存空间,则权值额外加1*/
Weight+=20-p-nice; /*将权值加上20与进程优先级nice的差。普通进程的权值主要由counter值和nice值组成*/??Goto out;}Weight=1000+p-rt_priority; //对实时进程进行处理,返回权值为rt_priority+1000,确保优先级高于普通进程*/Out:return weight;}
2. linux 进程及管道应用实例
#includestdio.h
#includeunistd.h
int main()
{
int n,fd[2];???????????????????????? // 这里的fd是文件描述符的数组,用于创建管道做准备的pid_t pid;char line[100];if(pipe(fd)0)???????????????????? //?? 创建管道?? printf(pipe create err
您可能关注的文档
最近下载
- Unit 6 Understanding ideas Longji Rice Terraces 课件-高中英语外研版(2019)必修第一册.pptx VIP
- 护理学导论(高职)教学教案.docx
- 2024年部编新改版语文六年级上册全册月考试题含答案(共4套).docx
- 饮用水和环境卫生公众健康宣教及风险沟通答案-2024年全国疾控系统“大学习”活动.docx VIP
- 新型冠状病毒、甲型和乙型流感病毒全预混冻干多重荧光PCR检测试剂盒及其检测方法发明专利.pdf VIP
- 基金会捐赠协议.doc VIP
- XX市智慧安居工程(一期)报警求助综合受理指挥分系详细设计方案.doc VIP
- 《乡土中国》 第11篇 《长老统治》.ppt
- [知识]职业生涯人物访谈(教师).pdf VIP
- 第六单元整本书阅读《西游记》课件 2024—2025学年统编版语文七年级上册.pptx VIP
文档评论(0)