Linux系统编程试题C
嵌入式linux c开发常见笔试题目

嵌入式Linux C开发的常见笔试题目主要围绕C语言基础、Linux操作系统以及嵌入式系统开发等方面。
以下是一些可能的笔试题目:
1. 请解释C和C++的主要区别。
2. 描述一下静态变量和全局变量在内存中的分配情况。
3. 解释一下什么是预处理器以及它的主要作用。
4. 编写一个程序,实现两个整数的交换而不使用第三个变量。
5. 描述一下进程和线程的区别以及它们之间的关系。
6. 什么是死锁?请列举至少两种导致死锁的情况。
7. 请解释一下中断处理程序的工作原理。
8. 如何在Linux中创建一个新进程?
9. 描述一下Linux中的同步和异步机制。
10. 什么是RTOS?请列举至少两个RTOS的例子。
Linux操作系统下的C语言开发环境搭建测试题

Linux操作系统下的C语言开发环境搭建测试题(答案见尾页)一、选择题1. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装GCC编译器B. 设置环境变量C. 编译和运行C程序D. 配置终端2. 在Linux操作系统中,以下哪个命令可以用来编译和运行C程序?A. gccB. g++C. chmodD. make3. 在Linux操作系统中,如何修改默认的编译器路径?A. 修改PATH环境变量B. 使用export命令C. 编辑/etc/profile文件D. 修改gcc的配置文件4. 在Linux操作系统中,安装了GCC编译器后,如何验证其安装成功?A. 输入gcc --version命令B. 输入gcc -v命令C. 输入gcc --configure命令D. 输入gcc -E命令5. 在Linux操作系统中,如何配置终端以方便进行C语言编程?A. 更改终端的提示符B. 安装tmux或screen工具C. 配置bashrc文件6. 在Linux操作系统中,如何使用GDB调试器调试C程序?A. 安装gdb软件包B. 编译程序时添加-g选项C. 使用gdb命令启动程序D. 查看程序内存布局7. 在Linux操作系统中,如何查看源代码文件的内容?A. 使用cat命令B. 使用less命令C. 使用grep命令D. 使用find命令8. 在Linux操作系统中,如何使用vi编辑器编辑C语言源代码文件?A. 进入vi编辑器B. 编辑文件内容C. 保存文件并退出vi编辑器D. 检查文件是否已保存9. 在Linux操作系统中,如何通过FTP上传和下载文件?A. 使用ftp命令B. 使用sftp命令C. 使用scp命令D. 使用ls命令10. 在Linux操作系统中,如何设置用户权限以确保C语言源代码的安全?A. 使用chmod命令B. 使用chown命令C. 使用umask命令D. 使用acl命令11. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?B. 设置环境变量C. 配置编译选项D. 编译和运行C程序12. 在Linux系统下,如何修改一个文件的权限使其可读可写?A. chmod 666 filenameB. chmod 777 filenameC. chmod 644 filenameD. chmod 755 filename13. 在Linux系统下,使用以下哪个命令可以查看文件的详细信息,如文件大小、创建日期等?A. ls -lB. df -hC. tar -xvf file.tarD. stat filename14. 在Linux系统下,如何使用vi编辑器打开一个文件?A. vi filenameB. vim filenameC. nano filenameD. emacs filename15. 在Linux系统下,安装了GCC编译器后,如何验证其是否正确安装?A. echo $PATHB. which gccC. gcc --versionD. all of the above16. 在Linux系统下,如何创建一个新的目录并进入该目录?A. mkdir new_directoryB. cd new_directoryC. rmdir new_directoryD. mkdir -p new_directory17. 在Linux系统下,如何使用grep命令在文本中搜索特定的字符串?A. grep "search_string" filenameB. grep "search_string" filename | lessC. grep "search_string" filename | moreD. all of the above18. 在Linux系统下,如何修改一个文件的换行符为LF(Unix风格)?A. dos2unix filenameB. unix2dos filenameC. cat filename | tr '' '' > filenameD. all of the above19. 在Linux系统下,如何使用find命令查找特定文件?A. find / -name "filename_pattern"B. find . -type f -name "filename_pattern"C. find / -name "filename_pattern" -printD. all of the above20. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装编译器B. 配置编译环境变量C. 安装文本编辑器D. 编写、编译和运行C源代码21. 在Linux操作系统下,以下哪个命令可以用来编译和运行C语言源代码?A. gccB. g++C. chmodD. make22. 在Linux操作系统下,以下哪个命令可以用来安装一个新的C语言库?A. apt-getB. yumC. pacman23. 在Linux操作系统下,以下哪个命令可以用来查看源代码的层次结构?A. catB. grepC. treeD. less24. 在Linux操作系统下,以下哪个命令可以用来创建一个新目录?A. mkdirB. rmdirC. touchD. cp25. 在Linux操作系统下,以下哪个命令可以用来删除一个文件?A. rmB. mvC. rmdirD. cp26. 在Linux操作系统下,以下哪个命令可以用来复制文件或目录?A. cpB. mvC. rmD. ln27. 在Linux操作系统下,以下哪个命令可以用来查看文件的内容?A. catB. grepC. lessD. head28. 在Linux操作系统下,以下哪个命令可以用来查找文件?A. findB. locateD. man29. 在Linux操作系统下,以下哪个命令可以用来查看当前目录的内容?A. lsB. cdC. pwdD. man30. Linux操作系统下,C语言开发环境的搭建需要哪些步骤?A. 安装GCC编译器B. 配置内核头文件C. 安装文本编辑器D. 配置终端环境31. 在Linux操作系统下,如何验证C语言编译成功?A. 编译一个简单的C源代码,观察是否有语法错误B. 使用命令行进入编译后的目录,查看生成的可执行文件C. 在终端中输入编译命令,观察是否有错误信息D. 将编译后的程序在另一个系统中运行,检查功能是否实现32. Linux操作系统下,C语言开发常用的文本编辑器有哪些?A. VimB. EmacsC. nanoD. Kate33. 在Linux操作系统下,如何配置终端环境以便于C语言编程?A. 设置默认编码为UTF-8B. 配置PATH环境变量,确保编译器路径已添加C. 安装并配置版本控制工具(如Git)D. 配置别名,提高编程效率34. 在Linux操作系统下,C语言开发中常用的调试工具有哪些?A. GDB调试器B. DDD调试工具C. Valgrind内存检测工具D. printf()函数调试35. Linux操作系统下,C语言开发环境的搭建过程中,如何配置网络连接?A. 修改网络配置文件,设置静态IP地址B. 关闭防火墙,确保端口畅通C. 配置DNS服务器,解析域名D. 使用Wireshark工具监控网络流量36. 在Linux操作系统下,C语言开发环境中,如何管理项目文件?A. 使用版本控制工具(如Git)进行项目管理B. 使用文件系统树形结构管理项目文件C. 使用目录和文件名来管理项目文件D. 使用标签系统管理项目文件37. Linux操作系统下,C语言开发环境的搭建完成后,如何优化编译速度?A. 升级GCC编译器到最新版本B. 优化编译选项,减少编译时间C. 使用增量编译,避免重复编译D. 使用并行编译,提高编译速度38. 在Linux操作系统下,C语言开发环境的搭建过程中,如何安装必要的库文件?A. 使用包管理器(如apt或yum)安装库文件B. 从官方网站下载库文件并手动安装C. 从源代码编译库文件并安装D. 使用静态链接库文件,减少动态链接的内存开销39. Linux操作系统下,C语言开发环境的搭建完成后,如何进行代码测试和调试?A. 使用GDB调试器进行单步调试B. 使用DDD调试工具查看内存状态C. 使用printf()函数打印变量值进行调试D. 使用单元测试框架进行自动化测试40. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装GCC编译器B. 配置环境变量C. 安装文本编辑器D. 编译和运行C程序41. 在Linux操作系统下,以下哪个命令可以用来查看系统中的所有进程?A. ps -efB. topC. freeD. all42. 在Linux操作系统下,如何修改一个文件的权限使得文件所有者具有读写权限,其他用户只具有读权限?A. chmod 644 filenameB. chmod 755 filenameC. chmod 664 filenameD. chmod 777 filename43. 在Linux操作系统下,使用以下哪个命令可以查看当前目录下的隐藏文件?A. ls -aB. ls -lC. ls -hD. ls -d44. 在Linux操作系统下,如何安装一个新软件包?A. apt-get updateB. yum install package_nameC. pacman -S package_nameD. brew install package_name45. 在Linux操作系统下,如何使用grep命令查找包含特定字符串的文件?A. grep "search_string" filenameB. grep "search_string" /path/to/filenameC. grep "search_string" $(find /path/to/search -type f)D. grep "search_string" /path/to/search/*46. 在Linux操作系统下,如何修改文件的所有者和组?A. chown new_owner:new_group filenameB. chown new_owner:new_group /C. chown new_owner:new_group *D. chown new_owner:new_group .47. 在Linux操作系统下,如何创建一个新的用户组?A. groupadd group_nameB. groupadd -g GID group_nameC. groupadd -G GID group_nameD. groupadd -p group_name48. 在Linux操作系统下,如何设置Shell提示符?A. export PS1="\u@\h:\w\$ "B. export PS1="\u@\h:\w\$ "C. export PS1="\u@\h:\w\\$ "D. export PS1="\u@\h:\w\$ "二、问答题1. 请简述在Linux操作系统下搭建C语言开发环境的步骤。
嵌入式Linux C语言面试试题

基础试题(C语言)一、ANSI C/C++方面的知识一.1、简答题。
下面的题目必须全部答对才给分(20分):1、如何在C中初始化一个字符数组。
2、如何在C中为一个数组分配空间。
3、如何初始化一个指针数组。
4、如何定义一个有10个元素的整数型指针数组。
5、s[10]的另外一种表达方式是什么。
6、GCC3.2.2版本中支持哪几种编程语言。
7、要使用CHAR_BIT需要包含哪个头文件。
8、对(-1.2345)取整是多少?9、如何让局部变量具有全局生命期。
10、C中的常量字符串应在何时定义?11、如何在两个.c文件中引用对方的变量。
12、使用malloc之前需要做什么准备工作。
13、realloc函数在使用上要注意什么问题。
14、strtok函数在使用上要注意什么问题。
15、gets函数在使用上要注意什么问题。
16、C语言的词法分析在长度规则方面采用的是什么策略?17、a+++++b所表示的是什么意思?有什么问题?18、如何定义Bool变量的TRUE和FALSE的值。
19、C语言的const的含义是什么。
在定义常量时,为什么推荐使用const,而不是#define。
20、C语言的volatile的含义是什么。
使用时会对编译器有什么暗示。
一.2、问答题。
1、-----------------------------------------------------------"匈牙利命名法"有什么优缺点?(2分)2、-----------------------------------------------------------下面x, y, *p的值是多少,有什么问题?(2分)int x, y, z = 2;int *p=&z;x=sizeof*p;y=x/*p; /* x=?, *p=?, y=?, 有什么问题?*/3、-----------------------------------------------------------下面的语句是什么意思?如何声明或定义才使它们更易懂?(10分)int (*foo())();int (*foo())[];int (*foo[])();(*(void(*)())0)();void (*signal(int,void(*)(int)))(int);4、-----------------------------------------------------------本题(2分)。
linux 试题及答案

linux 试题及答案第一部分:选择题1. Linux 是一种()操作系统。
a) 开源b) 闭源c) 商业d) 私有答案:a) 开源2. 在 Linux 中,用于显示当前所在路径的命令是()。
a) pwdb) lsc) cdd) cp答案:a) pwd3. 在 Linux 中,用于创建目录的命令是()。
a) mkdirb) touchc) rmd) mv答案:a) mkdir4. Linux 中,用于列出当前目录下的文件和文件夹的命令是()。
a) lsb) cdc) pwdd) rm答案:a) ls5. 在 Linux 中,用于复制文件的命令是()。
a) cpb) mvc) touchd) mkdir答案:a) cp第二部分:填空题1. Linux 操作系统的核心部分被称为()。
答案:内核2. Linux 中,用于修改文件或目录的权限的命令是()。
答案:chmod3. 在 Linux 中,用于压缩文件的命令是()。
答案:tar4. Linux 是基于()开发的操作系统。
答案:UNIX5. Linux 中,默认的超级用户账户是()。
答案:root第三部分:简答题1. 什么是 Linux 操作系统?答:Linux 是一种开源操作系统,它基于 UNIX 操作系统开发而成。
Linux 以其稳定性、可定制性和安全性而闻名,并广泛运用于服务器和嵌入式设备等领域。
2. 如何在 Linux 中创建一个新用户?答:可以使用 `useradd` 命令来创建一个新用户,例如 `useradd -m newuser`。
其中,`-m` 参数表示同时创建用户的主目录。
3. 如何修改文件的访问权限?答:可以使用 `chmod` 命令来修改文件的访问权限。
例如,要将文件的所有者权限设置为可读可写可执行,可以使用 `chmod u+rwx filename` 命令。
4. 如何在 Linux 中安装软件包?答:可以使用包管理器,如 `apt` (用于 Debian 系统)或 `yum` (用于 Red Hat 系统),来安装软件包。
linux c笔试题

c语言常见笔试题大全(一)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为u币你哦门票,模糊刚看见快乐科技计划发广告和统一,(表示无符号长整型),那么你有了一个好的起点。
记住,第一印象很重要。
2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A) <= (B) ?(A) : (B))这个测试是为下面的目的而设的:1). 标识#define在宏中应用的基本知识。
这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2). 三重条件操作符的知识。
这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。
3). 懂得在宏中小心地把参数用括号括起来4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?least = MIN(*p++, b);3. 预处理器标识#error的目的是什么?如果你不知道答案,请看参考文献1。
这问题对区分一个正常的伙计和一个书呆子是很有用的。
只有书呆子才会读C语言课本的附录去找出象这种问题的答案。
当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。
死循环(Infinite loops)4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?这个问题用几个解决方案。
我首选的方案是:while(1){}一些程序员更喜欢如下方案:for(;;){}这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。
linux下c测试

Linux下C程序设计测试题(考试时间:120分钟)班级:学员姓名:题型选择题填空题综合题编程题总分得分一、选择题(每题2分,共40分)1、下列可用于C语言用户标识符的一组是()A. void define WORDB. WinMain_123 CarC. For -abcIFCaseD. 2a DOsizeof2、break语句不能用在哪个语句段里()A.switch...case B. forC. ifD. while3、已知int a[3][2]={3,2,1};则表达式"a[0][0]/a[0][1]/a[0][2]"的值是()A.1.5B.1C.0D.错误的表达式4、下列描述中不正确的是()。
A、字符型数组中可能存放字符串。
B、可以对字符型数组进行整体输入、输出。
C、可以对整型数组进行整体输入、输出。
D、不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
5、有函数调用func(recl,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是:()A. 3B. 4C. 5D. 有语法错误6、以下能正确定义二维数组的是()A. inta[][3];B. int a[][3]=2{2*3};C. int a[][3]={};D. int a[2][3]={{1},{2},{3,4}};7、已有定义intx;float y;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345 678<回车>,则y 的值为()A. 无定值B. 45.000000C. 678.000000D. 123.0000008、八进制的123代表十进制的()A.84 B. 83 C. 82 D. 819、若有以下定义:char a; int b; float c; double d; 则表达式“a*b+d-c”值的类型为()A.floatB.intC.charD.double10、有以下程序:int main(){int m;m = -2;if(m=1)printf(“@@@”);elseprintf(“%%%”);}程序运行后的输出结果是()A.@@@B.%%%C.%%D.@@@%%%11、若有如下程序:main(){char a[][9]={"china","Japan","USA","France"};printf("%s\n",a[2]);}则程序运行后的输出结果是()A.JapanB.′USA′C.USAD.inaJapanUSAFrance12、两次运行下面的程序,如果从键盘上分别输入x的值6和3,则输出结果是()。
linux 编程练习题

linux 编程练习题Linux 是一种开源的操作系统,被广泛应用于服务器、嵌入式系统和科学研究领域。
为了提高对 Linux 编程的熟练程度,以下是一些适合练习的题目,供大家参考。
1. 编写一个简单的 Shell 脚本,实现以下功能:- 打印出当前时间和日期- 列出当前目录下所有以".txt"结尾的文件- 统计当前目录下所有以".txt"结尾的文件的行数2. 编写一个 C 程序,实现字符串逆序输出的功能。
要求输入一个字符串,然后将其逆序输出。
示例:输入 "Hello World!",输出 "!dlroW olleH"3. 编写一个 Python 程序,实现简单的文件操作功能。
要求程序能够:- 创建一个文本文件,并将指定内容写入到该文件中- 读取文件内容,并打印到屏幕上- 将文件内容复制到另一个文件中4. 编写一个 Bash 脚本,实现通过 SSH 自动登录远程服务器,并执行命令的功能。
要求程序能够:- 输入远程服务器的 IP 地址、用户名和密码- 自动登录远程服务器- 执行指定的命令(例如,查看服务器上的硬盘使用情况)5. 编写一个 C++ 程序,实现简单的数据结构(例如链表、栈或队列)的操作。
要求程序能够:- 创建指定数据结构的实例- 在数据结构中插入、删除和查找元素- 输出数据结构的内容以上只是一些基础的练习题,通过完成这些题目可以帮助提高对Linux 编程的理解和技能。
在实际编程过程中,可以结合其他相关的知识和技术来完善代码,并发挥自己的创造力。
希望以上练习题能够帮助你提升对 Linux 编程的熟练程度,为日后更复杂的项目打下坚实的基础。
祝你编程愉快!。
嵌入式linux c开发常见笔试题目

嵌入式linux c开发常见笔试题目嵌入式Linux C开发是一个广泛应用于各种嵌入式设备的技术领域,也是许多企业在招聘时重点考察的技能。
在笔试中,考察的内容通常包括C语言基础、嵌入式系统知识、Linux系统编程等方面。
以下是一些常见的嵌入式Linux C开发笔试题目,供大家参考。
1. C语言基础在嵌入式Linux C开发中,对C语言的熟练掌握是非常重要的。
下面是一些与C语言基础相关的题目:1.1 请写出C语言中的数据类型,并解释其含义。
1.2 请解释C语言中的指针,并写出指针的声明、赋值和使用的例子。
1.3 请解释C语言中的结构体,并写出结构体的定义和使用的例子。
2. 嵌入式系统知识嵌入式系统是指在限定的资源和空间中运行的计算机系统,对于嵌入式Linux C开发来说,对嵌入式系统的了解是必不可少的。
下面是一些与嵌入式系统知识相关的题目:2.1 请解释嵌入式系统的特点,并举例说明。
2.2 请简要解释Linux内核的作用,并说明为什么在嵌入式系统中常使用Linux内核。
2.3 请解释交叉编译的概念,并说明为什么在嵌入式Linux C开发中常使用交叉编译。
3. Linux系统编程Linux系统编程是指在Linux系统上进行程序开发和调试的技术。
对于嵌入式Linux C开发者来说,熟悉Linux系统编程是必备的技能。
下面是一些与Linux系统编程相关的题目:3.1 请解释Linux系统中的进程和线程,并说明它们的区别和联系。
3.2 请解释Linux文件系统的层次结构,并说明每个层次的作用。
3.3 请解释Linux中的系统调用,并举例说明几个常用的系统调用。
4. 嵌入式Linux应用开发嵌入式Linux应用开发是指在嵌入式Linux系统上进行应用程序开发的技术。
下面是一些与嵌入式Linux应用开发相关的题目:4.1 请编写一个在嵌入式Linux系统上运行的Hello World程序。
4.2 请解释Linux设备驱动程序的概念,并说明为什么在嵌入式Linux应用开发中常涉及到设备驱动程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上嵌《嵌入式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文本文件中,
数据传输用共享内存, 同步模式用线程-信号量;
(素材和资料部分来自网络,供参考。
可复制、编制,期待您的好评与关注)。