首页 > 系统相关 >【技术点】嵌入式技术考点二:Linux系统

【技术点】嵌入式技术考点二:Linux系统

时间:2024-07-06 19:00:50浏览次数:10  
标签:文件 静态 代码 嵌入式 考点 内存 Linux 动态 链接

文章目录

1.makefile是什么?它的作用是什么?

  • makefile:是一种用于自动化构建程序的文件,通常用于编译源代码并生成可执行文件或库文件。

作用:

  1. 可以简化程序的构建过程,更加高效地管理和维护代码。
  2. 可以定义编译器、编译选项、源文件、目标文件等信息,然后使用make命令自动化执行编译过程。
  3. 可以避免手动编译和链接代码的繁琐过程,确保代码的正确性和可重复性。

2.什么是静态库/动态库?作用是什么?有什么区别?动态库如何更新?

  • 静态库:是在编译时被链接到应用程序中的代码库。
  • 动态库:是在运行时被加载到应用程序中的代码库。
  • 作用:是程序开发中常用的库文件,它们都包含了一些可重复使用的代码和数据。

区别:

  1. 文件大小:静态库的体积比较大,但运行速度比较快,而动态库的体积比较小,但运行速度比较慢。
  2. 内存占用:静态库的代码被复制到了程序中,而动态库的代码则是共享的。
  3. 链接时机:静态库在编译时被链接,而动态库在运行时被加载。

3.代码编译的过程有哪些?

代码编译的过程一般包括以下几个步骤:

  1. 预处理:将源代码中的宏定义、条件编译等预处理指令进行处理,生成预处理后的源代码的过程。
  2. 编译:将预处理后的源代码翻译成汇编语言或机器语言的过程。并且编译器会进行语法检查。
  3. 汇编:将编译器生成的汇编代码翻译成机器语言,并生成目标文件的过程。
  4. 链接:将目标文件与库文件进行链接,生成可执行文件的过程。

4.程序调试的方法有哪些?

程序调试的方法有以下几种:

  1. 打印调试:在代码中添加打印语句,输出相关信息和变量的值,以便观察程序的执行情况。
  2. GDB调试:单步调试:使用调试器逐行执行程序,观察每一步的执行情况,查看变量的值和程序的状态。
  3. GDB调试:断点调试:在代码中设置断点,当程序执行到断点处时暂停,可以查看变量的值和程序的状态,也可以修改变量的值。
  4. 日志调试:在程序中添加日志输出,记录程序的执行情况和变量的值,以便后续分析。

5.链接和硬链接的区别是什么,Linux中常用的文件系统及优缺点?

  • 软链接:是一个指向目标文件或目录的特殊文件,也称为符号链接。
  • 硬链接:是指在文件系统中创建一个指向目标文件的新的文件名。

区别:

  • 软链接创建的文件实际上只是一个指向目标文件的指针,可以链接到目录,也可以链接到不存在的文件,当目标文件或目录被删除时,软链接仍然存在,但指向的目标文件或目录已经不存在。
  • 硬链接与目标文件共享相同的结点,它们在文件系统中的位置和大小都是相同的。硬链接只能链接到文件,不能链接到目录。当目标文件被删除时,硬链接仍然存在,只有当所有链接都被删除后,目标文件的空间才会被释放。

常用的Linux文件系统包括Ext4、XFS、Btrfs:

  1. a.Ext4:是Linux系统中最常用的文件系统,具有较高的性能和稳定性。
  2. b.XFS:是一种高性能的文件系统,适用于大型服务器和高负载环境。
  3. c.Btrfs:是一种新一代的文件系统,具有快照、压缩、数据校验等高级功能。

6.简述Linux中的堆栈,获取内存的方法及优点,如何预防内存泄漏?

  • 堆栈:是用于存储函数调用和局部变量的一种数据结构,由栈帧组成,每个栈帧包含函数的参数、局部变量和返回地址等信息。
  • 获取方法:使用malloc()函数在堆中动态分配内存,返回一个指向分配内存的指针。可以使用free()函数释放已分配的内存。
  • 优点:可以动态分配和释放内存,灵活性较高。并且在程序运行时可以根据需要动态调整内存大小。

预防内存泄漏的措施:

  1. 确保每次分配内存后都有相应的释放操作,避免未释放的内存造成泄漏。
  2. 注意避免指针的悬挂,即确保指针不指向已释放的内存。
  3. 避免内存重复分配,可以使用合适的数据结构和算法来避免重复分配内存。
  4. 定期检查和清理不再使用的内存,及时释放不再需要的内存空间。

7.怎样查看linux的内核版本

  • hostnamectl uname -r

8.按实时性来分,嵌入式系统可分为几类?它们的特点是什么?

  • 嵌入式操作系统可以分为实时操作系统(RTOS)和非实时操作系统(NRTOS)。
  • 实时系统: 实时系统是指对任务的响应时间要求严格的系统。

实时系统:

  1. 时间约束:实时系统需要在给定的时间范围内完成任务,并对任务的响应时间有一定的要求。
  2. 可靠性:实时系统对任务的可靠性要求很高,必须确保任务能够按时完成。
  3. 时钟同步:实时系统通常需要精确的时钟同步,以便对任务执行时间和截止时间进行准确的计算和控制。

非实时系统: 非实时系统是相对于实时系统而言的,对任务的完成时间没有严格的要求。

  1. 没有严格的任务截止时间限制。
  2. 对任务的响应时间要求相对较低。
  3. 系统功能更加灵活,更多关注数据的处理和存储等方面。

通常的通用操作系统Windows和Linux都叫分时操作系统,一般采用公平调度算法,并不一定是真正的实时。

9.软件测试的意义。

  1. 发现和修复缺陷:测试可以帮助发现软件中的缺陷、错误和异常行为。
  2. 确保功能完整性:软件测试可以验证软件是否按照需求规格书中的规定进行开发,并且确保系统的各项功能正常运作。
  3. 降低维护成本:通过测试,可以减少软件在运行时出现问题的可能性。
  4. 增强用户满意度:通过充分的测试,可以提高软件的可靠性和稳定性,减少用户在使用过程中遇到的问题。

10.驱动设备节点保存在哪个目录?

  • 驱动设备节点保存在/dev目录下。
  • 在Linux系统中,所有的设备节点都保存在/dev目录下,设备节点的文件名通常以字母“dev”开头

11.在线程中怎么分配内存空间?

  • 可以使用标准的内存分配函数,线程中分配的内存空间通常只能在相应的线程中使用,如果其他线程需要访问该内存,可能需要进行适当的同步和共享机制。
  • 在多线程环境中进行内存分配时,还需要考虑线程安全性和合理的内存管理策略。

12.windows应用程序的类型?

  • 控制台程序、窗口程序、库程序(静态/动态)

13.静态链接和动态链接有什么区别?

  • 静态链接:静态链接是指在编译时将所有依赖的库文件的代码和数据复制到最终生成的可执行文件中。
  • 动态链接:动态链接是指在程序运行时才加载所需的库文件。

区别:

  1. 链接时机:静态链接在编译时进行,而动态链接在运行时进行。
  2. 文件大小:静态链接将用到的库文件的代码和数据复制到生成的可执行文件中,因此生成的可执行文件通常比较大,内存占用相对较高。而动态链接只在运行时加载所需的库文件,因此可执行文件相对较小,占用的内存相对较少。
  3. 可扩展性:静态链接生成的可执行文件中包含了所有依赖的库文件,因此移植时需要考虑目标平台的兼容性。而动态链接仅依赖于系统提供的动态链接库,可以更方便地在不同的平台上部署和执行。

14.说明调用动态链接库的两种方式。

  • 静态链接方式:在这种方式下,动态链接库中的所有数据代码都将拷贝到调用程序的代码空间中去,此时它和调用程序本身的函数没有什么区别;
  • 动态链接方式:在这种方式下,动态链接库中的数据代码是在需要的时候才拷贝到内存中去的;

15.linux查看系统性能命令?

  • top:查看动态进程
  • ps-ef:查看静态进程
  • pstree:查看进程树
  • iostat:查看磁盘 I/O 活动情况
  • netstat:查看网络连接状态
  • ifconfig:查看网络接口的配置信息
  • free:查看内存使用情况

16.linux7种文件设备类型,硬盘属于那种设备?

Linux中文件设备类型有7种,分别是:

  • 块设备(block)、字符设备(character)、套接字(socket)、符号链接(symbolic link)、FIFO、目录(directory)和文件(regular file)。硬盘属于块设备(block)。

标签:文件,静态,代码,嵌入式,考点,内存,Linux,动态,链接
From: https://blog.csdn.net/Hei_se_meng_yan/article/details/140232494

相关文章

  • wsl安装Linux系统到指定位置
    默认情况下,wsl安装的系统,会安装到系统C盘,长期下去,很容易把C盘的空间消耗完,从而影响系统的正常运行,所以我建议是将wsl所有的系统都安装到其它磁盘中,便于维护。1、导出镜像通过wsl-l-v查看当前已安装的系统版本。导出到当前目录位置,也可以指定目录位置。wsl--......
  • 基于Linux/ARM/单片机利用状态机对多个按键进行扫描实现短按或者长按
    1)Linux/ARM/单片机入门级按键扫描程序设计,分享给将要学习或者正在学习Linux/ARM/单片机开发的同学。2)内容属于原创,若转载,请说明出处。3)提供相关问题有偿答疑和支持。学习Linux/ARM/单片机的同学都会学习到一个知识点,就是按键扫描,本课题基于SigmaStar的平台SSC375芯片SOC详细......
  • Linux系统中交叉编译opencv库
    目标:将opencv进行交叉编译,使其能在rk3326板子上运行使用。环境:ubuntu:18.04opencv:4.5.4opencv源码从挂网下载:opencv源码下载地址交叉编译链:gcc-arm-10.3-linux-gun一.环境准备1.交叉编译链我配置在/opt/gcc-arm-10.3-linux-gun中,可根据实际情况自行配置目录;2.opencv......
  • linux timezone
      packages/tzlocal/unix.py",line56,in_get_localzonewithopen(tzpath,'rb')astzfile:IsADirectoryError:[Errno21]Isadirectory:'/etc/timezone   检查/etc/timezone:确保/etc/timezone是一个文件,而不是一个目录。 ls-l/etc/tim......
  • 一建、二建考点顺口溜,一定用得上!(全)
    一、塔吊操作规程“十不吊”顺口溜记忆:歪人看超信,器平加安力。(1)歪拉斜吊重物时不吊;(2)被吊物上有人或浮置物时不吊;(3)工作场地昏暗,无法看清场地、被吊物和指挥信号时不吊;(4)超载或被吊物重量不清不吊;(5)指挥信号不明确不吊;(6)容器内装的物品过满时不吊;(7)捆绑、吊挂不牢或不平衡,可......
  • Linux容器篇-使用kubeadm搭建一个kubernetes集群
    kubernetes集群架构和组件master节点组件kube-apiserver:KubernetesAPI,集群的统一入口,各组件的协调者,以RESTfulAPI提供接口服务,所有对象资源的增删改查和监听操作都交给APIserver处理后再交给Etcd存储。kube-controller-manager:处理集群中的常规后台事务,一个资源对应......
  • Linux中的共享内存
    我们承担ROS,FastDDS等中间件以及C++,cmake等技术的项目开发和专业指导和培训,有10年+工作经验,质量有保证,如有需要请私信联系。Linux共享内存是一种进程间通信的方式,让不同的进程可以访问同一块内存区域。这样,一个进程可以直接读取或者修改另一进程的数据,避免了数据的复制,提高了......
  • Linux Samba 部署
            Samba是Linux下用于文件、打印机共享的开源软件套件,基于smb协议实现了Linux、Windows之间的打印机、文件共享,这里主要介绍常用的文件共享配置。     1、配置好yum源,安装好samb服务器、客户端软件包:    yuminstallsamba    yu......
  • 【Linux】:程序地址空间
    朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux程序地址空间的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成!C语言专栏:C语言:从入门到精通数据结构专栏:数据结构个 人 主 页 :stackY、C++专栏  :C++Linux专 栏 ......
  • pwn的linux基础(计算机内部数据结构存储形式)
    linux基础保护层级:分为四个ring0-ring3一般来说就两个,0和30为内核3为用户 权限:用户分为多个组文件和目录等等的权限一般都是三个,即可读可写可执行。读:R,写:W,执行:X赋予一个可执行文件执行权限就是chmod+xfilename虚拟内存和物理内存:物理内存很直白,就是内存......