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

一、AI 讲解
进程和线程的区别

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


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

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

新建态 ---> 就绪态 ---> 运行态 ---> 终止态
         \          ^         |
          \         |         v
           \------ 阻塞态 <----


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


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

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

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

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

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

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

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

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

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

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

(2)答案和解析
C. 进程拥有独立的地址空间

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

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

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

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

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

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

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

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

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

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


                        
四、线程与进程的资源分配

在同一进程中的各个线程都可以共享该进程所拥有的资源,如访问进程地址空间中的每一个虚地址、已打开文件、定时器、信号量等,但不能共享进程中某线程的栈指针。

线程的栈指针属于线程独享资源,不可被其他线程共享。 

 

五、PCB的三种组织方式
1. 线性方式
系统中所有PCB都组织在一张线性表中,表的首地址存放在内存专用区

优点: 实现简单、开销小

缺点: 每次查找时都要扫描一整张表,因此适合进程数目不多的系统

2. 链接方式
具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列

3. 索引方式
系统根据所有进程状态的不同,建立几张索引表,并把索引表的首地址记录在内存的专用单元中。在每个索引表的表目中,记录具有相应状态的PCB在PCB表中的首地址

(其实就是改进版的线性方式,分类之后,变成了很多子表,不需要把整个PCB表都扫描一遍,只需要先根据进程状态找到对应的子表,然后再扫描子表就行了)



                        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值