文章目录[隐藏]
对于操作系统而言。进程是整个现代操作系统的根本。操作系統是以进程为单位执行任务。随着技术发展。在执行一些细小任务。且本身无需分配单独资源时。进程的实现机制依然会繁琐的将资源分割。这样造成浪费。而且还消耗时间。所以就有了专门的多任务技术被创造出来——线程。 线程的特点就是在不需要独立资源的情况下就可以运行。如此一来会极大节省资源开销。以及处理时间。
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间。一个进程崩溃后。在保护模式下不会对其它进程产生影响。而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量。但线程之间没有单独的地址空间。所以多进程的程序要比多线程的程序健壮。但在进程切换时。耗费资源较大。效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作。只能用线程。不能用进程。
我们有如下对比图片:
但是对于 Linux 来说。它只支持轻量级进程。不支持线程。对于 Linux 而言:
系统启动后的第一个进程是 init。它的 PID 是 1。init 是唯一一个由系统内核直接运行的进程。
除了 init 之外。每个进程都有父进程(PPID 标识)
每个进程还有四个与用户和组相关的识别号
实际用户识别号 (real user ID。RUID)
实际组识别号 (real group ID。RGID)
有效用户识别号 (effect user ID。EUID)
有效组识别号 (effect group ID。EGID)
在 Linux 内核 2.4 版以前。线程的实现和管理方式就是完全按照进程方式实现的。在 2.6 版内核以后才有了单独的线程实现,为了弥补不支持线程的缺陷。Linux 引入线程组的概念。即该组中第一个轻量级进程的 PID。它被存入进程描述符的 tgid 字段中。getpid() 系统调用返回当前进程的 tgid 值而不是 pid 值。因此。一个多线程应用的所有线程共享相同的 PID。
如果是出于面试的角度。我们需要关注的点有哪些呢?
进程的执行过程是线状的。尽管中间会发生中断或暂停。但该进程所拥有的资源只为该线状执行过程服务。一旦发生进程上下文切换。这些资源都是要被保护起来的。
线程的改变只代表了 cpu 执行过程的改变。而没有发生进程所拥有的资源变化。
计算机内的软硬件资源的分配与线程无关。线程只能共享它所属进程的资源。
进程拥有一个完整的虚拟地址空间。不依赖于线程而独立存在;反之。线程是进程的一部分。没有自己的地址空间。与进程内的其他线程一起共享分配给该进程的所有资源。
线程中执行时一般都要进行同步和互斥。因为他们共享同一进程的所有资源。
您还感兴趣的文章推荐
- 十大帅哥明星排行榜 全球颜值排名前十男2021
- 好用的睫毛膏十大排行榜10强 大家用过最好用的睫毛膏
- 最帅的人是谁 第一名 2020全球最帅100人完整排行榜
- 全球最帅的男人排行榜 盘点历届全球最性感男人今昔对比照
- 搞笑韩剧排行榜前十名 浪漫搞笑爱情喜剧韩剧
以上就是由互联网推广工程师 桔子生活网 整理编辑的,如果觉得有帮助欢迎收藏转发~
本文地址:https://www.wangchuang8.com/78814.html,转载请说明来源于:桔子生活网
声明:本站部分文章来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系进行处理。分享目的仅供大家学习与参考,不代表本站立场。
评论(2)
进程和线程的区别 进程间通信的几种方式介绍 这篇解答确实也是太好了
进程,线程,资源,自己的,线状,地址,内核,第一个,空间,操作系统
对于操作系统而言。进程是整个现代操作系统的根本。操作系統是以进程为单位执行任务。随着技术发展。在执行一些细小任务。且本身