1 / 5
文档名称:

嵌入式应用程序设计综合教程(微课版)华清习题答案.pdf

格式:pdf   大小:424KB   页数:5页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

嵌入式应用程序设计综合教程(微课版)华清习题答案.pdf

上传人:青山代下 2024/3/25 文件大小:424 KB

下载得到文件列表

嵌入式应用程序设计综合教程(微课版)华清习题答案.pdf

相关文档

文档介绍

文档介绍:该【嵌入式应用程序设计综合教程(微课版)华清习题答案 】是由【青山代下】上传分享,文档一共【5】页,该文档可以免费在线阅读,需要了解更多关于【嵌入式应用程序设计综合教程(微课版)华清习题答案 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。思考与练****答:(1)联系:操作系统负责管理和分配所有的计算机资源。为了更好地服务于应用程序,操作系统提供了一组特殊接口——系统调用。通过这组接口用户程序可以使用操作系统内核提供的各种功能。例如分配内存、创建进程、实现进程之间的通信等。用户编程接口通俗的解释就是各种库(最重要的就是C库)中的函数。为了提高开发效率,C库中实现了很多函数。这些函数实现了常用的功能,供程序员调用。这样一来,程序员不需要自己编写这些代码,直接调用库函数就可以实现基本功能,提高了代码的复用率。使用用户编程接口还有一个好处:程序具有良好的可移植。行(2)区别用户程序向操作系统提出请求的接口就是系统调用。所有的操作系统都会提供系统调用接口,只不过不同的操作系统提供的系统调用接口各不相同。Linux系统调用接口非常精简,它继承了UNIX系统调用中最基本和最有用的部分。用户编程接口(API)在实现时,通常都要依赖系统调用接口。例如,创建进程的API函数fork()对应于内核空间的sys_fork()系统调用。很多API函数需要通过多个系统调用来完成其功能。还有一些API函数不需要调用任何系统调用。?答:(1)通过缓冲机制减少系统调用,从而提高效率(2)缓冲类型:全缓冲、行缓冲、无缓冲(3):、简述虚拟文件系统在Linux系统中的位置和通用文件系统模型。答:(1)Linux系统成功的关键因素之一就是具有与其他操作系统和谐共存的能力。Linux的文件系统由两层结构构建:第一层是虚拟文件系统(VFS),第二层是各种不同的具体的文件系统。VFS就是把各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是系统内核的一部分。它位于用户程序和具体的文件系统之间。它对用户程序提供了标准的文件系统调用接口,对具体的文件系统(比如:Ext2、FAT32等),它通过一系列的对不同文件系统通用的函数指针来调用对应的文件系统函数,完成相应的操作。任何使用文件系统的程序必须通过这层接口来访问。通过这样的方式,VFS就对用户屏蔽了底层文件系统的实现细节和差异。(2)通用文件系统类型:Ext4、Ext32、文件I/O和标准I/O之间有什么区别?答:文件I/O又称为低级磁盘I/O,遵循POSIX相关标准。任何兼容POSIX标准的操作系统上都支持文件I/O。标准I/O被称为高级磁盘I/O,遵循ANSIC相关标准。只要开发环境中有标准C库,标准I/O就可以使用。(Linux中使用的是GLIBC,它是标准C库的超集。不仅包含ANSIC中定义的函数,还包括POSIX标准中定义的函数。因此,Linux下既可以使用标准I/O,也可以使用文件I/O)。通过文件I/O读写文件时,每次操作都会执行相关系统调用。这样处理的好处是直接读写实际文件,坏处是频繁的系统调用会增加系统开销。标准I/O可以看成是在文件I/O的基础上封装了缓冲机制。先读写缓冲区,必要时再访问实际文件,从而减少了系统调用的次数。文件I/O中用文件描述符表示一个打开的文件,可以访问不同类型的文件如普通文件、设备文件和管道文件等。而标准I/O中用FILE(流)表示一个打开的文件,通常只用来访问普通文件。第三章1、任务是一个逻辑概念,指由一个软件完成的活动,或者是为实现某个目的的一系列操作。多任务操作系统使用某种调度策略支持多个任务并发执行。通常一个任务是一个程序的一次运行,一个任务包含一个或多个完成独立功能的子任务,这个独立的子任务是进程或者是线程。进程是指一个具有独立功能的程序在某个数据集合上的一次动态执行过程,它是操作系统进行资源分配和调度的基本单位。线程是由进程演化出来的概念,它是进程内独立的一条运行路线,是内核调度的最小单元,也被称为轻量级的进程。2、EXIT_DEADEXIT_ZOMBIE某一个进程调用(最终状态:收尸(等待父进程收集退fork()创建新进程由系统删除)出状态等一些信息)创建成功获得处理器执行权进程被终止TASK_RUNNINGTASK_RUNNING(运行就绪)(正在运行)让出处理器:时间片到或者被更高优先级的进程抢占睡眠唤醒:进入睡眠:等待的特定事件发或生等待某个特定事件发,生需要处理一些已发的信生号调用schedule()让出处理器TASK_INTERRUPTIBLE或TASK_UNINTERRUPTIBLE第四章1、传统进程间通信方式有:无名管道、有名管道、信号SystemVIPC对象:共享内存、信号灯、消息队列BSD:套接字pipe:具有亲缘关系的进程间,单工,数据在内存中fifo:可用于任意进程间,双工,有文件名,数据在内存signal:唯一的异步通信方式msg:常用于cs模式中,按消息类型访问,可有优先级shm:效率最高(直接访问内存),不需要数据的拷贝,需要同步、互斥机制sem:配合共享内存使用,用以实现同步和互斥2、#include<>#include<>#include<>pid_tpid;voidhandler(intsignum){kill(pid,SIGKILL);}intmain(intargc,char*argv[]){pid=fork();if(pid<0){return-1;}elseif(pid==0){signal(SIGINT,SIG_IGN);while(1);}else{signal(SIGINT,handler);wait(NULL);while(1);}return0;}3、#include<>#include<>#include<>intmain(intargc,char*argv[]){intfd[2];charbuf[128]=“helloworld”;charbuf1[128]={0};pid_tpid;if(pipe(fd)<0){return-1;}pid=fork();if(pid<0){return-1;}elseif(pid==0){while(1){read(fd[0],buf1,sizeof(buf1));}}else{while(1){size_tn;n=strlen(buf);