软考高级架构师:进程和线程概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。

热门文章推荐

  • (1)《为什么很多人工作 3 年 却只有 1 年经验?》
  • (2)《一文掌握大模型提示词技巧:从战略到战术巧》
  • (3)《AI 时代,程序员的出路在何方?》
  • (4)《如何写出高质量的文章:从战略到战术》
  • (5)《我的技术学习方法论》
  • (6)《我的性能方法论》
  • (7)《AI 时代的学习方式: 和文档对话》

一、AI 讲解

进程和线程的区别

概念进程线程
定义进程是操作系统进行资源分配和调度的基本单位,是应用程序在执行过程中的一个实例。线程是进程中的一个实体,被系统独立调度和分派的基本单位,是一条执行流程。
资源独立性拥有独立的地址空间,一个进程崩溃后,在保护模式下不会影响到其他进程线程共享所属进程的地址空间和资源,一个线程崩溃可能影响到同一进程的其他线程
开销创建和销毁进程的开销比较大,切换进程也比较耗时线程的创建、销毁和切换的开销小得多
通信进程间通信(IPC)需要操作系统提供的特殊机制,如管道、信号、共享内存等线程间可以直接读写进程数据段(如全局变量)来进行通信,更高效
依赖性进程间相互独立线程是进程的一部分,线程间存在依赖关系

进程的状态转换

进程在其生命周期内,会经历不同的状态。以下是进程可能的基本状态及其转换:

  • 新建态:进程刚被创建,尚未被调度运行。
  • 就绪态:进程已分配到除CPU以外的所有必要资源,只等待CPU时间片以运行。
  • 运行态:进程正在CPU上执行。
  • 阻塞态:进程由于等待某个事件(如I/O操作完成)而被挂起。
  • 终止态:进程完成执行后的出口状态。

状态转换图

新建态 ---> 就绪态 ---> 运行态 ---> 终止态
         \          ^         |
          \         |         v
           \------ 阻塞态 <----
  1. 新建态到就绪态:进程被创建后,初始化资源,准备运行,被置于就绪队列。
  2. 就绪态到运行态:调度程序选择之,分配CPU时间片。
  3. 运行态到就绪态:CPU时间片用完,未完成任务重新排队等待CPU。
  4. 运行态到阻塞态:执行过程中需要等待外部事件(如I/O操作),被挂起。
  5. 阻塞态到就绪态:等待的事件已完成,重新等待CPU分配。
  6. 运行态到终止态:进程完成任务或被终止。

在这里插入图片描述

二、AI 出题

(1)题目

  1. 进程与线程的主要区别是什么?
    A. 进程的执行速度更快
    B. 线程拥有独立的地址空间
    C. 进程拥有独立的地址空间
    D. 线程间通信需要特殊的IPC机制

  2. 在进程状态转换中,哪种状态表示进程等待CPU分配?
    A. 新建态
    B. 就绪态
    C. 阻塞态
    D. 运行态

  3. 哪一项不是线程之间进行通信的方法?
    A. 共享内存
    B. 管道
    C. 全局变量
    D. 信号量

  4. 进程创建子进程后,子进程的初始状态是什么?
    A. 就绪态
    B. 新建态
    C. 运行态
    D. 阻塞态

  5. 在进程的生命周期中,哪个状态不是必经之路?
    A. 就绪态
    B. 阻塞态
    C. 运行态
    D. 新建态

  6. 当一个进程等待I/O操作完成时,它通常处于什么状态?
    A. 阻塞态
    B. 运行态
    C. 就绪态
    D. 新建态

  7. 线程相对于进程有什么优势?
    A. 更高的资源消耗
    B. 独立的地址空间
    C. 更高的创建和销毁开销
    D. 更低的创建和切换开销

  8. 如何描述进程间的关系?
    A. 不存在依赖关系
    B. 所有进程共享地址空间
    C. 直接通过全局变量进行通信
    D. 需要操作系统提供的特殊机制进行通信

  9. 进程在哪个状态下完成了其生命周期?
    A. 就绪态
    B. 运行态
    C. 阻塞态
    D. 终止态

  10. 进程状态从运行态到就绪态的转换通常是因为什么?
    A. CPU时间片用完
    B. 进程执行完成
    C. 等待I/O操作
    D. 等待外部事件

(2)答案和解析

  1. C. 进程拥有独立的地址空间

    • 进程具有独立的地址空间,而线程共享进程的地址空间。
  2. B. 就绪态

    • 就绪态表示进程已准备好运行,只是在等待CPU时间片。
  3. B. 管道

  • 线程间通常通过共享内存、全局变量、信号量进行通信,管道是进程间通信的一种方式。
  1. B. 新建态

    • 子进程被创建时,其初始状态是新建态,随后它会转入就绪态。
  2. B. 阻塞态

    • 阻塞态不是进程生命周期中的必经之路,因为某些进程可能从始至终不需要等待任何I/O操作。
  3. A. 阻塞态

    • 当进程等待I/O操作时,它通常会被放入阻塞态。
  4. D. 更低的创建和切换开销

    • 线程的创建、销毁和切换开销相对于进程来说更低。
  5. D. 需要操作系统提供的特殊机制进行通信

    • 进程间通信需要通过操作系统提供的特殊机制,如管道、消息队列、共享内存等。
  6. D. 终止态

    • 终止态表示进程已经完成了其生命周期。
  7. A. CPU时间片用完

    • 当CPU时间片用完时,进程会从运行态转换到就绪态,等待再次被调度。

三、真题

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

picGo图床搭建gitee和smms(建议使用)

picGoGitee 这个需要下载gitee插件, 因为官方频繁的检索文件类型, 有时候也会失效 如果没有特殊要求平时存个学习的要看图中文字的重要的图片建议就是smms, 免费也够用! 图片存本地不方便, 各种APP中来回传还会失帧损失画质, 所以你值得往下看 picGosmms 建议使用这个, sm…

idea2023+jdk1.8+Maven3.6.3+Testng6.10+junit4.13搭建测试

idea2023jdk1.8Maven3.6.3Testng6.10junit4.13搭建测试 首先创建maven工程 导入依赖 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/…

HTTP和HTTPS谁传输数据更安全?

1.HTTP HTTP在传输数据时&#xff0c;通常都是明文传输&#xff0c;也就是传输的数据没有进行加密。在这种情况下&#xff0c;如果传输的是一些敏感数据&#xff0c;比如某银行卡密码&#xff0c;就很容易被别人截获到&#xff0c;这就对我们的个人利益产生了威胁。 HTTP传输数…

Linux中JMeter的使用

Linux中JMeter的使用 Linux版本JMeter安装 # 1、下载、安装JMeter 如果有安装包直接上传即可 wget -c https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.4.1.tgz # 解压 tar -zxvf apache-jmeter-5.4.1.tgz -C /usr/local/sjdwz_test cd /usr/local/sjdwz_t…

【教学类-09-05】20240402细线迷宫图03+箭头图片(A4横版一页-4份横版)

作品展示 背景需求&#xff1a; 在word模板上添加“形状-箭头”&#xff0c;结果生成的图片上&#xff0c;箭头位置挪移。 思考&#xff0c;如何直接在迷宫图上添加箭头&#xff0c;以图片形式将迷宫图箭头插入docx word模板 重点说明 代码展示 批量制作细线条的迷宫图(A4横板…

上位机图像处理和嵌入式模块部署(qmacvisual获取边界点)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在图像处理中&#xff0c;解决了分割的问题之后&#xff0c;下面就是属性信息的提取。在这其中&#xff0c;有一种属性是非常重要的 &#xff0c;那…

Redis(一) redis配置 | 如何连接redis服务器 | 基本数据类型 | 基本全局命令 | 数据结构和内部编码方式

文章目录 前言Redis 配置文件连接 redis 服务器Redis 常见数据类型Redis 基本全局命令set 和 get 命令KEYS 命令EXISTS 命令DEL 命令EXPIRE 和 TTL 命令Redis 过期策略定时器和时间轮的方式实现过期key的及时删除 TYPE 命令 数据结构和编码方式 前言 本篇文章将介绍我们在 Lin…

Flume进阶学习!

本文图片来自于8.flume实时监控文件hdfs sink使用演示_哔哩哔哩_bilibili Apache Flume 的启动过程及其配置文件和脚本 在官网下载的Flume的压缩包中&#xff0c;.lib文件有大量的jar包&#xff0c;按道理说只有.lib文件就可以运行Flume程序了。只不过需要java -jar命令还要加…

android APP monkey 测试

monkey 测试 一、电脑ADB安装及使用详解1、什么是 Monkey 测试2、什么是ADB3、ADB的作用4、安装前提条件5、ADB下载6、ADB安装与配置 二、连接安卓手机检查是否连接上安卓手机windows端安装ADB驱动 三、 monkey测试操作指令演示指令APP包名查看方式测试效果 一、电脑ADB安装及使…

Golang 内存管理和垃圾回收底层原理(二)

一、这篇文章我们来聊聊Golang内存管理和垃圾回收&#xff0c;主要注重基本底层原理讲解&#xff0c;进一步实战待后续文章 垃圾回收&#xff0c;无论是Java 还是 Golang&#xff0c;基本的逻辑都是基于 标记-清理 的&#xff0c; 标记是指标记可能需要回收的对象&#xff0c…

日记本(源码+文档)

日记本&#xff08;小程序、ios、安卓都可部署&#xff09; 文件包含内容程序简要说明功能项目截图客户端首页日记列表 书写日记个人中心设置密码锁拨打客服热线修改信息退出登录登录页输入密码锁注册页 后端管理登录页首页管理员列表管理用户管理日记列表管理日记数据 文件包含…

Spring Boot项目启动速度优化

1、配置自动配置排除列表&#xff0c;减少启动自动配置扫描&#xff0c;配置项spring.autoconfigure.exclude 2、启动类添加索引注解Indexed&#xff0c;去除启动过程中 Components 的扫描步骤&#xff0c;直接从索引文件读取。 import org.springframework.stereotype.lndexe…

基于springboot的房屋租赁系统平台

功能描述 流程&#xff1a;房主登陆系统录入房屋信息》发布租赁信息&#xff08;选择房屋&#xff09;》租客登陆系统浏览租赁信息》和房主联系、看房&#xff08;根据租赁信息单的电话线下沟通&#xff09;》房主发起签约&#xff08;生成邀请码&#xff09;》租客登陆系统根…

Qt加载.css/.qss文件设置控件的QSS样式(支持程序运行时修改且立即生效类似换肤效果)

初学Qt时要想通过QSS修改控件QWidget&#xff0c;QPushButton等原生基础控件的样式&#xff0c;一般都是直接在.ui文件中直接添加qss&#xff0c;或者在代码中通过setStyleSheet(QString qss)来设置。当程序很大时&#xff0c;很多地方需要复用样式时会非常麻烦&#xff0c;qss…

QA测试开发工程师面试题满分问答3: python的深拷贝和浅拷贝问题

在 Python 中&#xff0c;深拷贝&#xff08;deep copy&#xff09;和浅拷贝&#xff08;shallow copy&#xff09;是用于创建对象副本的两种不同方式。 浅拷贝是创建一个新的对象&#xff0c;该对象与原始对象的内容相同&#xff08;包括内部嵌套对象的引用&#xff09;&…

SBCFormer:能够在单板计算机上以每秒1帧的速度进行全尺寸ImageNet分类的轻量级网络

摘要 https://arxiv.org/ftp/arxiv/papers/2311/2311.03747.pdf 计算机视觉在解决包括智能农业、渔业和畜牧业管理等不同领域的实际问题中变得越来越普遍。这些应用可能不需要每秒处理许多图像帧&#xff0c;因此从业者倾向于使用单板计算机&#xff08;SBCs&#xff09;。尽管…

Pytorch数据结构:Tensor

文章目录 Tensor基础1.1、Tensor的维度&#xff08;Dimensions&#xff09;1.1.1、举例说明1.1.2、高维Tensor 1.2、.dim()和.size()方法1.2.1、.dim()方法1.2.2、.size()方法1.2.3、.shape属性1.2.3、示例代码1.2.3.1、一维Tensor1.2.3.2、二维Tensor1.2.3.3、三维Tensor 1.3、…

【Go】十五、接口、多态、断言

文章目录 1、接口的引入2、接口3、接口的注意点4、多态5、断言6、Type Switch 1、接口的引入 以日常生活中打招呼为例&#xff0c;定义接口规范&#xff0c;各国人为打招呼为具体的实现 package main import "fmt"//接口的定义&#xff1a;定义规则、定义规范&…

存内领域前沿,基于忆阻器的存内计算----浅析忆阻存内计算

目录 一.概念浅析 二.忆阻器的分类 三.基于忆阻器的存内计算原理 四.存内计算的实验研究 一.概念浅析 1.存内计算 存内计算&#xff08;In-Memory Computing&#xff0c;简称 IMC&#xff09;是一种将数据处理和存储紧密结合在一起的计算方式。它的主要思想是在存储设备中直…

Navicat设置mysql权限

新建用户&#xff1a; 注意&#xff1a;如果不生效执行刷新命令:FLUSH PRIVILEGES; 执行后再重新打开查看&#xff1b; 查询权限命令&#xff1a;1234为新建的用户名&#xff0c;localhost为访问的地址 SHOW GRANTS FOR 1234localhost;如果服务器设置服务器权限后可能会出现权…