[八股] Linux系统编程八股

点个小赞关注一波,持续更新……

[专栏]嵌入式软件校招笔记(点击跳转)

[知识点] 嵌入式软件开发知识点学习

[知识点] ARM指令集详解

[知识点] 通讯协议(very重要)

[项目] C++高并发Web服务器+个人改进项目详解

[八股] C/C++基础八股

[八股] C/C++进阶八股

[八股] 计算机网络八股

[八股] 操作系统八股

[八股] 嵌入式系统八股

[八股] Linux系统编程八股

[八股] Linux网络编程八股

秋招嵌入式企业面经

1、Linux中你常用的命令有哪些?(这个很开放,随便哪些都行)

Linux系统中有许多常用的命令,以下是一些例子:

  1. ls:列出当前目录下的文件和目录。
  2. cd [目录名]:切换到指定的目录。
  3. pwd:显示当前工作目录的路径。
  4. touch [文件名]:如果文件不存在,新建文件。
  5. mkdir [目录名]:创建新的目录。
  6. rm [文件名]:删除指定的文件或目录。
  7. cp [源文件] [目标文件]:复制文件。
  8. mv [源文件] [目标文件]:移动或重命名文件。
  9. cat [文件名]:查看文件内容、创建文件、追加文件内容等功能。
  10. more [文件名]:分屏显示文件内容。
  11. grep [word] [文件名]:在文件中搜索指定的文本。
  12. date:查看或设置系统时间。
  13. cal:显示日历。
  14. df:显示磁盘剩余空间。
  15. ps:查看当前进程的状态。
  16. top:动态显示运行中的进程并排序。
  17. kill [进程ID]:结束指定的进程。

2、什么是软链接和硬链接?

  1. 软链接:软链接(也称为符号链接)是一个实实在在的文件,该文件指向存放在虚拟目录结构中某个地方的另一个文件。你可以把它想象成我们平时使用的Windows电脑的快捷方式。如果原始文件已删除,那已经创建的软链接显示红色,并且原始文件会一闪一闪的。修改软链接文件内容,原始文件内容也会被修改。删除软链接文件,原始文件仍然存在。
  2. 硬链接:硬链接创建的是一个独立的虚拟文件,其中包含了原始文件的信息以及位置。但是两者就根本而言是同一个文件。更通俗的说,就是一个文件更名了,实际上是同一文件。原始文件必须已经存在。如果原始文件已删除,那已经创建的硬链接不会被删除。修改硬链接文件内容,原始文件内容也会被修改。删除硬链接文件,原始文件仍然存在。

3、软链接和硬链接有什么区别?

  1. 本质:硬链接是同一个文件的多个名字,而软链接则是不同的文件。
  2. 跨分区:硬链接不支持跨分区,而软链接则支持。
  3. 目录:硬链接不支持链接到目录,而软链接则支持。
  4. 相互关系:硬链接的文件之间是平等的关系,删除任何一个都不会影响其他的链接。而软链接的目标文件如果被删除,软链接就会失效。
  5. 文件大小:硬链接文件显示的大小与原文件一样,而软链接文件的大小则是链接路径的长度。
  6. Inode号:硬链接的原文件和链接文件共享同一个Inode号,说明它们是同一个文件,而软链接的原文件和链接文件拥有不同的Inode号,表明它们是两个不同的文件2。
  7. 文件属性:在文件属性上,软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等的关系。
  8. 链接数目:硬链接的链接数目会增加,而软链接的链接数目不会增加。

4、简述Linux系统态与用户态,什么时候会进入系统态?

在Linux系统中,有两种运行级别:用户态和内核态(也称为系统态)

用户态:在用户态下,应用程序只能执行受限的指令集,并且不能直接访问底层系统资源。大多数代码都运行在用户态。

内核态:在内核态下,操作系统拥有最高的权限和访问系统资源的能力,可以执行特权指令和直接访问硬件设备。当CPU处于内核态,可以随意进入用户态。

切换时机:应用程序无法自由进入内核态,只能通过操作系统提供的API进入,或者中断操作发生的时候进入。例如,当CPU被中断操作(如定时器、键盘输入、I/O)中断时,CPU会停止运行当前它正在运行的程序,切换到内核态,调用中断处理器。

5、进程、线程、协程是什么,有什么区别?

进程线程协程都是计算机程序在运行时的不同表现形式。下面是它们的基本定义和区别:

  1. 进程:进程是操作系统进行资源分配和调度的一个独立单位,是程序执行的实例。每个进程都有自己的独立内存空间和系统资源。进程是程序资源管理的最小单位
  2. 线程:线程是进程中的一个执行单元,也是处理器调度和分派的基本单位。一个进程可以包含多个线程,所有线程共享进程的资源,如内存空间和文件描述符等。线程是资源调度的最小单位
  3. 协程:协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态。

区别

  • 进程和线程的主要区别在于它们的内存空间:进程有自己独立的地址空间,每启动一个进程,系统就会为它分配地址空间,一个进程无法直接访问另一个进程的变量和数据结构,需要通过进程间通信机制(如管道、信号、套接字等)来实现;而同一进程下的所有线程共享同一地址空间和系统资源。
  • 线程和协程的主要区别在于协程的调度由用户自己控制,而线程的调度由操作系统内核负责。

6、有了进程,为什么还要有线程?

线程是为了解决进程在并发执行时所付出的时空开销,提高并发性1。线程相比进程有以下优点:

  1. 资源消耗少:线程是一种非常"节俭"的多任务操作方式,相比进程需要更少的资源。一个进程的开销大约是一个线程开销的30倍左右。
  2. 切换效率高:运行于一个进程中的多个线程,它们之间使用相同的地址空间,而且线程间彼此切换所需的时间比进程切换所需的时间少,从而提高了系统的效率23。
  3. 共享内存:线程之间共享程序的公共状态,线程之间通过读-写内存中的公共状态来隐式通信2。这使得线程间的通信更为方便,因为它们可以直接访问对方的内存2。
  4. 提高响应性:在多线程环境中,当一个线程阻塞或进行长时间运算时,其他线程还可以继续运行2。这就使得程序在等待某些资源(如网络响应)的同时,仍然可以对用户输入做出响应2。
  5. 利用多处理器系统:多线程可以充分利用多处理器系统。在这样的系统中,每个线程可以在不同的处理器上运行2。

7、Linux多进程开发中,怎么创建一个进程?

在Linux多进程开发中,创建一个

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式软件校招笔记 文章被收录于专栏

记录本人校招过程中遇到的问题及笔记整理!后续会持续更新

全部评论

相关推荐

我也曾抱有希望:说的好直白
点赞 评论 收藏
分享
点赞 评论 收藏
分享
2 16 评论
分享
牛客网
牛客企业服务