每日一面——谈谈你对线程和进程的认识

菜鸡每日一面系列打卡12

每天一道面试题目 

助力小伙伴轻松拿offer

坚持就是胜利,我们一起努力!

题目描述

谈谈你对线程和进程的认识。

题目分析

这不仅仅是Java的高频面试题,可以说是程序员的高频面试题。这道题目考查的普遍性,恰恰说明了线程与进程概念的基础性和重要性。

然而,由于涉及到操作系统的相关知识,很多小伙伴对其了解仅仅停留在很浅的表面,大部分与其相关的知识都是零散地从某些文章中获取的。

答案基本上是这样的:“进程是正在运行的程序,线程是轻量级的进程;进程是资源分配的基本单位,线程是执行和调度的基本单位……”

回答出这样的答案特别容易,也就特别没有参考价值。面试官需要的是带有自己思考的答案,而不是千篇一律的背书。你可以像上面这样回答,但是要有自己的理解和认知在里面。接下来,和菜鸡一起去看看吧。

题目解答

进程可以说是计算机学科中最深刻、最成功的概念之一,对进程的描述如果展开来讲可以出一本书。本文将用有限的篇幅,简明扼要的阐述一下进程与线程的概念,并通过简单的例子帮助小伙伴理解。

  • 进程是什么呢?进程是一个执行中程序的实例。系统中的每个程序都运行在某个进程的上下文中。举个例子,双击wechat.exe,操作系统就会创建一个新的进程,并在这个进程的上下文中运行wechat.exe。

  • 而上下文又是什么呢?上下文是由程序正确运行所需的状态组成的。这些状态包括存放在内存中的程序的代码和数据,它的栈、通用目的寄存器的内容、程序计数器、环境变量以及打开文件描述符的集合。通俗点说,操作系统内核为每个进程维持一个上下文,用于在发生进程调度时保存进程的状态,届时再根据这些状态对进程进行恢复。

  • 而线程是什么呢?本质上讲,线程就是运行在程序上下文中的逻辑流(一系列用于定位指令序号的程序计数器的值)。每个进程在生命周期伊始都是单一线程的,这个线程被称为主线程。多个线程可以运行在单一进程的上下文中,因此,共享这个进程虚拟地址空间的所有内容。这也说明了进程是资源分配的基本单位,线程是执行和调度的基本单位,与进程相类似,线程间的切换是通过线程的上下文来维护状态的,从某种意义上来说,线程可以称得上是轻量级的进程。

以上便是菜鸡对进程和线程概念的一些理解,供小伙伴们参考。连贯性深入地学习,比碎片化地看一些所谓的“技术精华干货”要有用得多。技术人不仅要知其然,更要知其所以然。与菜鸡一起加油……

学习 | 工作 | 分享

????长按关注“有理想的菜鸡

只有你想不到,没有你学不到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值