版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、linux系统编程考试(答案)作者:日期:凌阳教育嵌入式培训系统编程部分测试试题注:考试为闭卷,程序题需上机操作运行出结果,考试时间为120分钟一:选择题(本题共 4小题,每题3分共12分)1)下列不是Linux系统进程类型的是(D )A交互进程 B批处理进程 C守护进程 D就绪进程(进程状态)2)以下对信号的理解不正确的是(B )A信号是一种异步通信方式B信号只用在用户空间进程通信,不能和内核空间交互C信号是可以被屏蔽的D信号是通过软中断实现的3)进程有三种状态(C)A准备态、执行态和退出态B精确态、模糊态和随机态C运行态、就绪态和等待态D手工态、自动态和自由态4)不是进程和程序的区别 (B
2、)A程序是一组有序的静态指令,进程是一次程序的执行过程B程序只能在前台运行,而进程可以在前台或后台运行C程序可以长期保存,进程是暂时的D程序没有状态,而进程是有状态的二:填空题(本题共 6小题,2)、3)两题每空四分,其余每空一分。共23分)1)列举八种常见的进程间通信方式无名管道、有名管道、消息队列、信号量、共享内存、信号、套接字网络上两个主机的进程间通信方式为套接字2)命名管道比无名管道的优势提供了一个可以访问的路径名,实现没亲缘关系的进程 间通信3)消息队列比命名管道和无名管道的优势可以按类型实现消息的随机查询,没必要先进先出4)按照逻辑结构不同进行数据库划分,Sqlite 数据库属于哪
3、一类 关系型数据库5)在C语言中操作sqlite数据库,常用的2中方式是 sqlite_exec( 回调)、sqlite_gettable( 勻非回调)6)列举四种进程调度算法 先来先调度(FCFS)、短进程优先调度(SPF)、高优先级调度(HPF)、时间片轮转调度三:问答题(本题共 7题,每题5分,共35分)1)什么是系统调用?系统调用是通过什么方式陷入内核态的?请写出你对系统调用的理解。什么是文件 I/O和标准I/O库?文件I/O和标准I/O库的区别?系统调用是指操作系统提供给用户程序调用的一组特殊接口,用户程序可以通过这组接口获得操作系统内核提供的服务。系统调用是通过软件中断方式陷入内核
4、的linux的文件I/O是由操作系统提供的基本IO服务,标准I/O库通过封装系统调用,提供了一个到底层I/O的接口。标准I/O默认采用了缓冲机制,还创建了一个包含文件和缓冲区相关数据的数据结构; 文件I/O 一般没有采用缓冲模式,需要自己创建缓冲区。一种是标准库封装系统调用而成, 更高级,一种是系统提供的,比较低级;标准 I / O可移植性高、文件I/O可移植性低。2)什么是进程?用fork()创建一个子进程时,系统会做什么工作进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配的单位,不仅是系统内部独立运行的实体也是独立竞争资源的实体。用fork ()时系统会分配子进
5、程一个ID号然后继承父进程的地址空间,包括进程上下文 进程堆栈 打开的文件描述符等等,他就是父进程的一个复制品。3)进程和线程有什么区别?每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在进程程中,由进程提供多个线程执行的控制。进程是系统进行资源分配和调度的一个独立单位线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源但是它可与同属一个进程的其他的线程共享进 程所拥有的全部资源一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。
6、4)什么是线程的互斥和同步,程序应怎样写才能达到互斥或同步?互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。同步:是指在互斥的基础上(大多数情况) ,通过其它机制实现访问者对资源的有序访 问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。在写程序时可以用互斥锁和信号量实现线程同步,一个线程访问共享资源时给这个资源上锁其他线程就不能访问了直到上锁的进程释放互斥锁为止。5)什么是僵尸进程?孤儿进程?守护进程?僵尸进程:僵尸进程是指它的父进程已经退出(
7、父进程没有等待(调用wait/waitpid)它),而该进程dead之后没有进程接受,就成为僵尸进程,也就是 (zombie)进程。孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被in it进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。守护进程:是指在 UNIX或其他多任务操作系统中在后台执行的电脑程序,并不会接受电脑用户的直接操控。此类程序会被以进程的形式初始化。守护进程程序的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志的守护进程。通常,守护进程没 有任何存在的父进程(即PPID=1),且在UNIX系
8、统进程层级中直接位于init之下。守护进程程序通常通过如下方法使自己成为守护进程:对一个子进程调用fork,然后使其父进程立即终止,使得这个子进程能在in it下运行。这种方法通常被称为“脱壳”6)有3个线程:A、B、C,现要求A先执行,然后B再执行,最后 C再执行,之后 A->B->C循环执行,请说出大体的思路?创建3个信号量sem_A sem_B sem_C分别用来给 A、B C 3个线程,启动sem_A信 号量的初始值为1,其余2个信号量初始值为 0,当主线程创建3个子线程后,因为sem_A 的值大于0,所以只有A线程执行相关的代码,B、C线程堵塞在对sem_B sem_C信
9、号量的p操作;当A线程执行完相应的代码后,给sem_B信号量加1,之后B线程开始执行相关操作,在此时A线程堵塞在对sem_A信号量的p操作,C线程继续堵塞;当B线程执行完毕相关操 作后,给sem_C进行V操作,B线程堵塞,C线程执行相关操作;以上是从A->B->C线程执行的流程7)exit()、_exit()和 return ()的区别?exit ():结束当前的进程,并且会刷新缓存区,关闭没有关闭的文件等_exit ():结束当前的进程,不对缓存区刷新return :1:在main函数中会结束当前进程2:在子函数中,会返回调用当前函数的调用位置,进程从下个C语句开始执行四:程序题
10、(本小题共 3题,每题10分 共30分)1)用多线程、信号量实现生产者和消费者的模拟,仓库容量为10,仓库中开始有3件产品,消费者每3秒消费一件产品,生产者每两秒生产一个产品,生产者和消费者不能同时进入仓库(需要互斥)信号量-线程间通信/ “生产者消费者”问题#i nclude<stdio.h>#i nclude<stdlib.h>#in clude< uni std.h>#in clude<semaphore.h>#i nclude<pthread.h>#define msleep(x)usleep(x*1000)#defi ne
11、PRODUCT_SPEED3/ 生产速度#defi ne CONSUM_SPEED1/ 消费速度#defi ne INIT_NUM#defi ne TOTAL_NUMsem_t p_sem, c_sem, sh_sem;int nu m=INIT_NUM;void product(void)sleep(PRODUCT_SPEED);int add_to_lib()nu m+;仓库中的产品增加一个msleep(500);return num;void con sum()sleep(CONSUM_SPEED);int sub_from_lib()num-; II仓库中的产品数量减一msleep(5
12、00);return num;void *productor(void *arg)while(1)3仓库原有产品数10仓库容量生产产品II添加产品到仓库消费从仓库中取出产品II生产者线程sem_wait(&p_sem); 生产信号量减一product();II生产延时sem_wait(&sh_sem);这个信号量是用来互斥的 prin tf("push into! tatol_ num=%dn",add_to_lib(); sem_post(&sh_sem);sem_post(&c_sem); II 消费信号量加一void *con sume
13、r(void *arg)/ 消费者线程while(1)sem_wait(&c_sem); /消费者信号量减一sem_wait(&sh_sem);prin tf("pop out! tatol_ num=%dn",sub_from_lib();sem_post(&sh_sem);sem_post(&p_sem);生产者信号量加一con sum();消费延时int mai n()pthread_t tid1,tid2;semni t(&p_sem,0,TOTAL_NUM-INIT_NUM);semn it(&c_sem,O,INI
14、T_NUM);semni t(&sh_sem,0,1);pthread_create(&tid1,NULL,productor,NULL);pthread_create(&tid2,NULL,co nsumer,NULL);pthread _joi n(tid1,NULL);pthread _joi n(tid2,NULL);return 0;2) 编写一个多线程的程序:要求:1、 创建2个子线程,主进程要传递 3个参数给线程1,传递另一个参数给线程2 ;2、 线程1、线程2中对每个传给线程的参数加1,等线程都执行完毕后,进程打印出四个参数的值。2参数的值必需不能改变3
15、、传给线程1参数的值必需要能够改变,传给线程#in elude <stdio.h>#in elude <uni std.h>#i nclude <pthread.h>typedef struetint A;int B;int C;DATA;/*传参方法1*/void *thread_1(void *arg)DATA *rec;sleep(1);rec = (DATA *)arg;rec->A += 1;rec->B += 1;rec->C += 1;return NULL;/*传参方法2*/void *thread_2(void * arg
16、)int rec = 0;sleep(1);rec = (int )(arg);rec +;return NULL;int main (i nt argc, char *argv)pthread_t tid1,tid2;DATA test;int D = 100;test.A = 100;test.B = 100;test.C = 100;/*创建两个线程*/pthread_create( &tid1, NULL, (void *)thread_1, (void *)(&test);pthread_create( &tid2, NULL, (void *)thread_
17、2, (void *)D);pthread _joi n( tid1, NULL);pthread _joi n( tid2, NULL);printf("A=%dn", test.A);prin tf("B=%dn", test.B);printf("C=%dn", test.C);prin tf("D=%dn", D);return 0;3) 编制一段程序,实现进程的管道通信:使用系统调用pipe()建立一条管道线,2个子进程分别向管道各写一句话:Child process 1 is sending a mes
18、sage!Child process 2 is sending a message!而父进程则从管道中读出来自于2个子进程的信息,显示在屏幕上。要求:父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。#i nclude <stdio.h>#in clude <uni std.h>#in clude <sys/types.h>#i nclude <sys/wait.h>int main (i nt argc, char *argv)int fd2;pid_t pid;pid_t pid_sec;char buf7;pipe(fd);if(pid = fork()<0)prin tf("fork error!"); exit(1);else if(pid = 0)close(fd0);w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国港口码头行业发展规划投资战略分析报告
- 2024-2030年中国汽车发电机调节器行业竞争格局及投资兼并重组整合分析报告
- 2024-2030年中国氧化铍陶瓷产业深度研究及投资可行性分析报告
- 2024年异戊醇项目提案报告范文
- 西师大版四年级上册数学第三单元 角 测试卷附完整答案【名师系列】
- 2022年大学电气信息专业大学物理二期末考试试卷C卷-附解析
- 2022年大学化工与制药专业大学物理下册期中考试试题-附解析
- 年度非油炸食品战略市场规划报告
- 智慧城市背景下的党建示范方案
- 文化遗址保护内脚手架搭建方案
- 《门店选址策略》课件
- 私立民办初中学校项目运营方案
- 试卷印制服务投标方案(技术标)
- 1+X数字营销技术应用题库
- 俄罗斯礼仪完
- 小学六年级语文(小升初)修改病句专项练习题(含答案)
- 人教版六年级音乐上册全册教案
- 办税服务外包投标方案(技术标)
- 冷库是有限空间应急预案
- 基于PLC的机械手控制系统设计毕业设计
- 足软组织感染的护理查房
评论
0/150
提交评论