进程、线程面试复习

什么是进程?什么是线程?

进程是资源分配的最小单位,它是程序执行的一个实例,在程序运行时创建。

线程是程序执行的最小单位,是进程的一个执行流,一个线程由多个线程组成的。

进程和线程由什么区别?

1.进程是资源分配的最小单位。

2.线程是程序执行的最小单位,也是处理器调度的基本单位。但进程不是,两者均可并发执行。

3.进程有自己的独立地址空间,每启动一个进程。系统就回为它分配地址空间,建立数据表来维护代码段,堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据,使用相同的地址空间,因此。CPU切换一个线程的花费远比进程小的多,同时创建一个线程的开销也比进程小很多。

4.线程间的通信更方便,同一个进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(ipc)进行。不过如何处理好同步和互斥是编写多线程程序的难点。但是多进程程序更健壮,多线程只需要有一个线程死掉,整个进程也跟着死掉,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

5.进程切换时,消耗的资源大,效率低,所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行又要共享某些变量的并发操作,只能用线程不能用进程。

6.执行过程:每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口,但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

7.线程执行开销小,但是不利于资源的管理和保护。线程适合在SMP机器(双CPU系统)上运行。进程执行开销大,但是能够很好的进行资源管理和保护,可以跨机器迁移。

何时使用多线程,何时使用多线程?

对资源的管理和保护要求高,不限制开销和效率时,使用多进程。

要求效率高,频繁切换时,资源的保护管理要求不是很高时,使用多线程。

进程有几种状态?画一下进程状态转换图?

进程可以分为五个状态,分别是:

1.创建状态、就绪状态、运行状态、阻塞状态、终止状态

2.创建状态:一个应用程序从系统上启动,首先就是进入创建状态,需要获取系统创建进程管理块(PCB)完成资源分配。

3.就绪状态:在创建状态完成之后,进程就已经准备好了,但是还未获得处理器资源,无法运行。

4.运行状态:获取处理器资源,被系统调度,开始运行状态。如果进程的时间片用完了就进入就绪态。

5.阻塞状态:在运行状态期间,如果进行了阻塞的操作,如耗时的I/O操作,此时进程暂时无法操作就进入到阻塞状态,在这些操作完成后就进入就绪状态。

6.终止状态:进程结束或者被系统终止,进入终止状态。

进程的状态转换图

 创建进程的方式有哪些?

创建进程的多种方式但凡是硬件,都需要有操作系统去管理,主要有操作系统,就有进程的概念&

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在软件开发的多线程面试中,可能会遇到以下几个经典问题: 1. 线程进程的区别是什么?请举例说明。 2. 什么是线程同步?有哪些常见的线程同步方法? 3. 什么是线程死锁?如何避免线程死锁? 4. 什么是线程池?为什么要使用线程池? 5. 什么是线程安全?如何保证线程安全? 6. 什么是信号量和互斥量?它们有什么区别? 7. 什么是线程调度?常见的线程调度算法有哪些? 8. 什么是线程阻塞和线程唤醒?如何实现线程的阻塞和唤醒? 9. 什么是线程间通信?有哪些常见的线程间通信方式? 10. 如何创建和销毁线程?有哪些常见的线程创建和销毁的方法? 请注意,以上问题只是软件开发多线程面试可能会遇到的一部分问题,具体面试题目还取决于面试官的要求和特定岗位的要求。建议在面试前仔细准备和复习相关知识,以便能够回答面试官的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C++后台开发面试题总结(涉及C++基础、多线程进程、网络编程等)](https://blog.csdn.net/qq_42302962/article/details/123433951)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值