【Liunx】线程与进程的经典面试题总结

news2024/9/27 7:25:22

在这里插入图片描述

在这个浮躁的时代
只有自律的人才能脱颖而出
-- 《觉醒年代》

线程与进程的面试题总结

  • 1 简述什么是LWP
  • 2 简述LWP与pthread_create创建的线程之间的关系
  • 3 简述轻量级进程ID与进程ID之间的区别
  • 4 请简述什么是线程互斥,为什么需要互斥
  • 5 简述你了解的进程间通信方式
  • 6 线程与进程的关系
  • Thanks♪(・ω・)ノ谢谢阅读!!!
  • 下一篇文章见!!!

进程和线程我们都学习完了,下面我们就来看看相关的面试题来巩固一下:

1 简述什么是LWP

首先我们要明白什么是LWP,在Linux中:线程 = 线程库里的属性集 + LWP(轻量级进程),对应的线程库线程与LWP是一一对应的!

LWP处在内核层,是轻量级进程,在Linux下进程是资源分配的基本单位,是运行的执行流。而线程是cpu调度的基本单位,而线程使用进程pcb描述实现,并且同一个进程中的所有pcb共用同一个虚拟地址空间,因此相较于传统进程更加的轻量化

2 简述LWP与pthread_create创建的线程之间的关系

首先在Linux中:线程 = 线程库里的属性集 + LWP(轻量级进程),应的线程库线程与LWP是一一对应的!线程处在用户层,LWP处在内核层。

  1. pthread_create创建的线程本质上是在底层创建一个LWP然后在上层通过线程进行调用!可以说LWP是线程实现的基础
  2. 1 :1映射:Linux中的LWP和pthread_create创建的线程是一比一映射的!
  3. 线程调度:线程调度的底层其实就是内核中调度LWP!
  4. 资源共享:pthread线程与它们所属的进程共享资源,如地址空间、打开的文件描述符等。这与LWP的特性是一致的,因为pthread线程实际上就是LWP。

总结来说,在Linux系统中,通过pthread_create创建的线程通常与LWP是一一对应的。pthread线程是用户层面的抽象,而LWP是内核层面的实现。pthread库提供了线程管理的接口,而LWP则是这些线程在内核中的实际执行实体。

3 简述轻量级进程ID与进程ID之间的区别

因为Linux下的轻量级进程是一个pcb,每个轻量级进程都有一个自己的轻量级进程ID(pcb中的pid),而同一个程序中的轻量级进程组成线程组,拥有一个共同的线程组ID!

  1. 首先需要明确的是,进程ID是操作系统中唯一的存在!轻量级进程ID是在进程中才有意义!:
    • 进程ID:每个进程在操作系统中有唯一的进程ID,用于标识一个独立的进程。进程ID是全局唯一的,即在系统范围内没有两个活跃进程具有相同的进程ID。
    • 轻量级进程ID(线程ID):线程ID用于标识进程中的一个线程。在一个进程中,每个线程都有一个唯一的线程ID,但这个ID只在它所属的进程内部有效。
  2. 作用域
    • 进程ID:具有系统级的作用域,系统中的所有进程都可以通过进程ID来识别和操作特定的进程。
    • 线程ID:具有进程级的作用域,只在创建它的进程内部有效,用于在该进程内部识别和操作特定的线程。
  3. 资源共享
    • 进程ID:每个进程拥有独立的资源,如地址空间、文件描述符等。
    • 线程ID:线程共享所属进程的资源,如地址空间、文件描述符等。

在Linux中,轻量级进程实际上就是内核线程,而通过pthread_create创建的线程通常与这些轻量级进程有一对一的映射关系。因此,线程ID在内核层面也是通过轻量级进程ID来实现的。

4 请简述什么是线程互斥,为什么需要互斥

线程互斥指的是在多个线程间对临界资源进行争抢访问时有可能会造成数据二义,因此通过保证同一时间只有一个线程能够访问临界资源的方式实现线程对临界资源的访问安全性。

线程互斥是一种特殊场景,举个例子:
在银行中假如只有一个ATM机,银行里有很多人,如果多个人一起使用ATM机,就肯定会导致大问题!银行是进程 , 银行中的人就是线程,ATM机是临界资源!

线程中访问临界资源的场景就是线程互斥!此时访问临界资源,临界资源往往不是原子的,在执行一条语句时,实际上是在执行多条汇编指令,在执行的过程中,如果发生线程的切换,临界资源就被多个线程访问,也就是ATM机被两个人同时使用,这可能会出问题的!所以需要进行互斥,保证临界资源只能一个线程访问!

5 简述你了解的进程间通信方式

进程间通信的本质是让两个进程看到同一块资源,这样才能做到进程间的通信!

  1. 管道:管道分为匿名管道和命名管道(FIFO),管道的本质是文件缓冲区,让两个文件看到同一个文件。父子进程会进行写时拷贝,可以看到同一个文件。非父子进程采取命名管道,通过文件名来看到同一个文件。注意管道只能单向通信,只有一个写端,一个读端
  2. 共享内存:共享内存是在内存中开辟一片内存空间,可以被多个进程来获取(类似动态库!)。内存允许多个进程访问同一块内存区域,从而实现快速的数据交换。但需要注意同步问题,以避免竞态条件和数据一致性问题。一定要有写才有读。可读可写!使用共享内存时,必须注意同步问题,以避免竞态条件和数据一致性问题。通常需要配合信号量或互斥锁等同步机制来确保数据的一致性。

6 线程与进程的关系

  1. 进程:进程是程序在操作系统中的一个执行实例。它包含了程序代码、数据、和资源(如文件句柄、内存)等。它是操作系统分配资源的基本单位,进程各自都有自己的内存空间,它由操作系统调度。也由于进程有独立的地址空间,所以进程间切换(上下文切换)开销较大。进程间通信(IPC)复杂,需要借助操作系统提供的机制,如管道、消息队列、共享内存等。
  2. 线程:线程是进程中的一个执行单元,属于轻量级进程。一个进程可以包含多个线程,它们共享进程的地址空间和资源,但是它们各自都有自己的程序计数器和栈空间,线程是属于进程的。因为共享进程中的资源,所以线程的创建和销毁比进程更快,线程间切换(上下文切换)开销小。它是CPU执行的基本单位,它由CPU 调度。线程间通信简单,因为它们共享地址空间,可以直接使用共享变量。

Thanks♪(・ω・)ノ谢谢阅读!!!

下一篇文章见!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【免费测试】人脸身份证比对接口如何用Java对接?(二)

一、什么是人脸身份证比对? 人脸身份证比对又称人证比对,实人比对,人像比对,输入姓名、身份证号码和头像照片,与公安库身份证头像进行权威比对,返回分值作为判断依据。 二、人脸身份证比对接口适用哪些场…

安科瑞智慧能源管理平台在电动汽车虚拟电厂优化调度起到什么作用?

摘要:大量电动汽车用户的无序充电可能造成电网负荷剧烈波动,危及电网的安全稳定。随着电动汽车入网技术的应用,将电动汽车充电站及其周边的分布式新能源发电聚合为虚拟电厂后进行优化调度,有助于改善电动汽车用户充放电的经济性及…

深入LVS内核世界:揭秘其高效背后的技术细节与实现机制

LVS简介 Linux virtual server,即Linux虚拟服务器,是一种基于Linux平台的高性能、高可用的服务器负载均衡技术。它主要工作在网络层、传输层(OSI参考模型的第三层、第四层),主要通过IP地址和端口号来转发网络流量。LV…

【Dash】Web 应用程序中的可复用组件

一、Reuable Comopnents By writing our makup in Python, we can create complex reusable components like tables without switching contexts or languages. from dash import Dash, html import pandas as pddf pd.read_csv(https://raw.githubusercontent.com/GarciaS…

程序包javax.annotation不存在

1、问题 程序包javax.annotation不存在2、原因 JDK1.8升级到17后,由于Java EE已经变更为Jakarta EE,包名以 javax 开头的需要改为 jakarta 3、解决 import javax.annotation.Resource; 替换成 import jakarta.annotation.Resource; 问题解决。 …

基于STM32开发的智能灌溉系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 农业灌溉园艺灌溉常见问题及解决方案 常见问题解决方案结论 1. 引言 智能灌溉系统通过监测土壤湿度和环境条件,自动控制水泵和阀门,实现…

Linux系统驱动(十)设备树

文章目录 一、简介二、设备树语法(一)设备树的组成1. 节点的组成(1)节点的别名(2)节点可以被引用(3)同名节点的合并 2. 属性的组成(1)值的字符串表示形式&…

基于STM32开发的停车场管理系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 商业停车场管理住宅区停车场管理常见问题及解决方案 常见问题解决方案结论 1. 引言 停车场管理系统通过监测车辆进出情况、空余车位数量以及收费情况&#xff0…

7.2 算法设计与分析-分治法和回溯法

分治法 相对简单,考的概率比较低 分治法:对于一个规模为的问题,若该问题可以容易地解决则直接解决;否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解决这些子问题&…

Proxmox Install 8

Proxmox 前言 Proxmox Virtual Environment(简称PVE)是一个开源的服务器虚拟化解决方案,它基于QEMU/KVM和LXC技术。Proxmox VE提供了一个易于使用的Web界面和命令行工具,允许用户轻松地创建和管理虚拟机(VMs)和容器。 Proxmox download Proxmox 官网下载Proxmox 百度网…

Midjourney入门-提示词基础撰写与公式

​ 前言 在前几篇教程里我们已经可以初步使用Midjourney进行出图了。 包括也了解了Midjourney的指令与参数。 但如果你想用Midjourney去生成各种各样高质量的图片, 并且生成的图片是你想要的画面内容,也就是更好控制生成图片的画面内容与风格&#xf…

电脑小白需要知道这些

电脑小白需要知道这些 解决问题 对于刚买到电脑,不懂电脑的新手需要学什么和知道什么,有什么是误区 需要知道 1.Wiodws 10\Windows11不在需要安装杀毒软件 甚至于电脑自带防火墙都可以关闭(有时候打开了防火墙反而导致一些奇奇怪怪的问题…

【书生大模型实战营】基础岛-浦语提示词工程实践

【书生大模型实战营】基础岛-浦语提示词工程实践 活动地址:地址 任务 背景问题:近期相关研究发现,LLM在对比浮点数字时表现不佳,经验证,internlm2-chat-1.8b (internlm2-chat-7b)也存在这一问题,例如认为…

生成式AI,在中国工业找到新“活法”

生成式AI,正在经历一场关于落地前景的论战。 在德国中北部城市希尔德斯海姆,世界工业巨头博世已经把生成式AI技术用在了生产线上。他们以AI仿真绘制的方式合成出超过15000张关于产品缺陷的图片,然后将其应用于电机定子生产线的质检。借助生成…

指针基础知识(笔记)

文章目录 1. 概念理解2. 空指针和野指针3. 计算4. 小结5. size_t6. 案例一: 指针查找并返回指定元素索引7. 指针访问多维数组(涉及 int (*ptr)[3]解析)8. 指针数组9. 函数的值传递与地址引用传递① 函数的值传递(pass by value)② 地址传递(pass by reference) 10. 案例二&…

初学Vue

1.v-text 2.v-html 可以解析标签 3.v-pre 4.class绑定 1.字符串绑定 效果 2.对象绑定 效果 3.数组 还可以用data数据带class加上去 4.三元表达式 5.style绑定 1.字符串 2.对象绑定 3.数组绑定 6.计算属性 调用函数 函数如下 面试:计算属性特点 只要值 没有改变…

【Week-G7】Semi-Supervised GAN 实践,使用MNIST数据集

文章目录 一、基础知识二、代码实现2.1 导入所需模块 & 设置网络初始参数2.2 初始化权重2.3 定义算法模型2.4 配置模型2.5 训练模型2.6 训练结果 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导…

使用 Claude3.5 只需 2 分钟快速构建仪表盘

这是用 claude 生成的图表,只花了 2 分钟 目录 Claude何时使用Artifacts?我如何使用Artifacts?我的例子让claude导出本地部署结尾 关键还可以分享 这是分享之后的链接: https://claude.site/artifacts/1cf37377-1d00-4ab2-b8dd-a…

PMP考试一定要考到3A吗?怎么备考?

PMP(Project Management Professional)认证是全球公认的项目管理专业人士资格认证,它代表着项目管理领域的高水平标准。 在备考PMP考试时,有些赛宝关心是否需要考到3A(即三个领域均为Above Target,超出目标…

【中项】系统集成项目管理工程师-第10章 项目整合管理-10.7结束项目或阶段

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…