上嵌《嵌入式Linux系统编程》考试试卷C
一、选择题(5×1')
1、( C )就是操作系统中最重要、最基本的概念之一,它就是系统分配资源的基本单位,就是一个具有独立功能的程序段对某个数据集的一次执行活动。
A、程序
B、作业
C、进程
D、线程
2、( B )的主要特点就是提供即时响应与高可靠性。
生产过程的控制、武器系统、航空订票系统、银行业务就就是这样的系统。
A、分时系统
B、实时系统
C、批处理系统
D、分布式系统
3、( B )数据传送方式的作用就是在外围设备与内存之间开辟直接的数据交换通道。
A、程序直接控制
B、 DMA
C、通道控制
D、中断
4、下面临界区概念论述正确的就是( A )
A、临界区就是指进程中用于实现进程互斥的那段程序代码
B、临界区就是指进程中用于实现进程同步的那段程序代码
C、临界区就是指进程中用于实现进程通信的那段程序代码
D、临界区就是指并发进程中与共享变量有关的程序段
5、多道程序设计就是指( D )
A、在实时系统中并发运行多个程序
B、在分布式系统中同一时刻运行多个程序
C、在一台处理机上同一时刻运行多个程序
D、在一台处理机上并发运行多个程序
二、填空题(20×1')
1、在Linux系统中,以_____文件___方式访问设备 ,每个文件用____i节点___来标识。
2、启动Linux Shell的时候,stdin , stdout , stderr 三个文件描述
符会自动打开,她们的值分别就是_ 0 _, 1 , 2 、
3、创建新进程的系统调用就是 fork()、 exec() ,创建新线程的函数就是pthread_create() 、
4、操作系统发展的历程,从串行处理,批处理程序, 多道程序 ,_____分时处理______、
5、进程控制块的三类信息:进程标识信息,___进程状态信息____,___进程控制信息_____、
6.进程具有的基本状态为:__R____ 、__S____ 、__T____ 、__Z___ 。
7、安装Linux系统对硬盘分区时,必须有两种分区类型: _根分区_____ 与 _交换分区_____ 。
8、编写的Shell程序运行前必须赋予该脚本文件 _执行_____ 权限。
三、简答题(30')
1、进程间通信的方法有哪些?各自有什么优缺点?那一种方法效率最高?
答:
管道、信号及信号量、消息队列、共享内存
管道:半双工通信方式,数据只能单向流动
信号及信号量:信号量就是一个计数器,可以用来控制多个进程对共享资源的访问, 主要作为进程间以及同一进程内不同线程之间的同步手段。
消息队列:消息队列就是由消息的链表,存放在内核中并由消息队列标识符标识。
消息,队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点
共享内存:共享内存就就是映射一段能被其她进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问
共享内存:效率最高
2、文件指针FILE *与文件描述符就是一个什么样的关系?
答:
FILE*定义的就是文件描述流,文件描述符就是linux种的文件操作句柄。
函数fdopen() 3、解释单体内核与微内核之间的区别、
答:
单体内核包含了所有功能:调度,文件系统,设备驱动程序,网络,存储管理等。
威核内只能有部分功能:基本调度,进程通信,地址空间。
4、处理器的操作模式分为内核模式与用户模式,请问模式切换与进程切换有什么区别?
答:
模式切换时内核级与用户级之间的切换
进程切换只就是几个进程之间的切换。
5、网络通信中, TCP与UDP有什么区别?
答:
TCP在发送数据包前都在通信双方有一个三次握手机制,确保双方准备好,在传输数据包期间,TCP会根据链路中数据流量的大小来调节传送的速率,传输时如果发现有丢包,会有严格的重传机制,从而以保证数据包可靠的传输。
DUP的传输就是不可靠的,发送端有数据包我就发送,不会去理会对端的承受能力与链路状况。
6、UDP分多少种形式,各有什么特点。
答:
单播:一对一的通讯模式,服务器及时响应客户机的请求
多播/组播:一对一组的通讯模式,需要相同数据流的客户端加入相同的组共享一条数据流, 节省了服务器的负载
广播:一对所有的通讯模式,所有主机都可以接收到所有信息,服务器流量负载极低
7、进程通信中,同步信号与异步信号的差别。
答:
异步信号:进程通信在发送字符时,异步信号所发送的字符之间的时间间隔可以就是任意的, 不需要阻塞等待
同步信号:双方必须要先建立同步,发送后等待接受,不可以任意收发
《Linux系统程序设计》机试
1、实现char* myStrncpy(char *dst, char* src, size_t n); 6分
返回值:如果复制成功,则返回目标地址dst的值,
形参分别就是: (目标地址,源地址,复制字节数)
注意程序的健壮,合理,简洁,高效 (越简单的函数,越容易写错)
2、写2个非亲属进程程序 14分
程序a负责在内存里找bash,并把找到的bash的PID转成int型的数据,然后传送给另一个进程, 程序b,接收数据,把这个PID关闭掉
数据传输用消息队列
3、写一个程序,里面有2个线程; 20分
线程a, 从键盘接收数据, 写入共享内存;
线程b, 从共享内存读出数据, 然后写入一个rec、txt文本文件中,
数据传输用共享内存, 同步模式用线程-信号量;。