嵌入式高频面试题——第一章 进程与线程(下)

2024-08-30 01:28

本文主要是介绍嵌入式高频面试题——第一章 进程与线程(下),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

      • 1.2 并发,同步,异步,互斥,阻塞,非阻塞的理解?
        • 1.2.1 什么是线程同步和互斥?⭐⭐⭐⭐⭐
        • 1.2.2 线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?⭐⭐⭐⭐
        • 1.2.3 并发,同步,异步,互斥,阻塞,非阻塞的理解?⭐⭐⭐⭐⭐
      • 1.3 孤儿进程、僵尸进程、守护进程的概念?
        • 1.3.1 基本概念?⭐⭐⭐⭐⭐
        • 1.3.2 如何创建守护进程?⭐⭐
        • 1.3.3 正确处理僵尸进程的方法?⭐⭐⭐⭐

1.2 并发,同步,异步,互斥,阻塞,非阻塞的理解?

1.2.1 什么是线程同步和互斥?⭐⭐⭐⭐⭐
  • 同步:多个线程在协作时,某个线程需要等待其他线程完成某个任务后才能继续执行。通常用于确保任务按照预期的顺序执行。

  • 互斥:用于防止多个线程同时访问共享资源,导致数据竞争或冲突。通过互斥锁来保证同一时刻只有一个线程可以访问资源。

1.2.2 线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?⭐⭐⭐⭐
  • 线程同步与阻塞的关系:同步通常需要阻塞来等待某个条件的满足,因此同步操作常常导致线程阻塞。

  • 同步一定阻塞吗不一定。某些同步操作可以通过非阻塞机制来实现。

  • 阻塞一定同步吗不一定。阻塞是指线程因为某种原因无法继续执行,可能与同步无关(例如等待 I/O 完成)。

1.2.3 并发,同步,异步,互斥,阻塞,非阻塞的理解?⭐⭐⭐⭐⭐
  • 并发:多个任务在同一时间段内交替执行。
  • 同步:任务之间通过某种方式协调,确保按照特定的顺序执行。
  • 异步:任务可以独立于其他任务执行,无需等待其他任务完成。
  • 互斥:确保共享资源在任意时刻只被一个线程或进程访问。
  • 阻塞:任务因为等待某个事件(如 I/O 操作)而暂停执行,直到事件发生。
  • 非阻塞:任务可以立即执行,不需要等待其他事件。

1.3 孤儿进程、僵尸进程、守护进程的概念?

1.3.1 基本概念?⭐⭐⭐⭐⭐
  • 孤儿进程:父进程先于子进程终止,子进程变为孤儿进程。孤儿进程会被 init 进程收养。

  • 僵尸进程:子进程结束后,父进程没有调用 wait() 函数,导致子进程的进程表项没有被清除,成为僵尸进程。

  • 守护进程:长时间运行在后台、不与终端直接交互的进程,通常用于执行系统服务。

1.3.2 如何创建守护进程?⭐⭐
  • 创建守护进程的步骤包括:
    1. 调用 fork(),使父进程终止,子进程继续运行。
    2. 使用 setsid() 创建新的会话并使子进程成为会话领导。
    3. 重设文件权限掩码、关闭文件描述符,进入守护进程状态。
1.3.3 正确处理僵尸进程的方法?⭐⭐⭐⭐
  • 处理僵尸进程的方法
    • 在父进程中调用 wait()waitpid() 来回收子进程的状态。
    • 使用信号处理函数捕捉 SIGCHLD 信号,自动回收子进程。

这篇关于嵌入式高频面试题——第一章 进程与线程(下)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119412

相关文章

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

Java JUC并发集合详解之线程安全容器完全攻略

《JavaJUC并发集合详解之线程安全容器完全攻略》Java通过java.util.concurrent(JUC)包提供了一整套线程安全的并发容器,它们不仅是简单的同步包装,更是基于精妙并发算法构建... 目录一、为什么需要JUC并发集合?二、核心并发集合分类与详解三、选型指南:如何选择合适的并发容器?在多

C#使用SendMessage实现进程间通信的示例代码

《C#使用SendMessage实现进程间通信的示例代码》在软件开发中,进程间通信(IPC)是关键技术之一,C#通过调用WindowsAPI的SendMessage函数实现这一功能,本文将通过实例介绍... 目录第一章:SendMessage的底层原理揭秘第二章:构建跨进程通信桥梁2.1 定义通信协议2.2

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Java中如何正确的停掉线程

《Java中如何正确的停掉线程》Java通过interrupt()通知线程停止而非强制,确保线程自主处理中断,避免数据损坏,线程池的shutdown()等待任务完成,shutdownNow()强制中断... 目录为什么不强制停止为什么 Java 不提供强制停止线程的能力呢?如何用interrupt停止线程s

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优