首页 > 编程知识 正文

子进程和线程的区别(线程是什么意思)

时间:2023-05-03 11:10:56 阅读:91777 作者:1686

对操作系统来说,进程是整个现代操作系统的基础,操作系统在每个进程中执行任务。 随着技术的发展,在执行精细的任务,不需要为其自身分配单独的资源的情况下,进程的实现机制仍然繁琐地划分资源,浪费资源,耗费时间,因此专用的多任务技术创造了——个线程。 线程的特点是不需要独立的资源就可以执行。 这样可以节省大量的资源开销和处理时间。

进程和线程的主要区别在于操作系统的资源管理方法不同。 进程有独立的地址空间,一个进程崩溃后,保护模式不会影响其他进程,线程只是一个进程中不同的执行路径。 线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,因此多线程程序比多线程程序更强健,但在进程切换时会消耗资源,从而降低效率。 但是,对于同时进行且需要共享某些变量的并发操作,只能使用线程,不能使用进程。

比较图像如下所示。

但是,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值。 因此,多线程APP应用程序中的所有线程共享相同的pid。

从面试的角度来看,我们应该关注的点是什么?

的运行进程是线性的,中间会发生中断或暂停,但该进程拥有的资源只服务于该线性运行进程。 出现进程上下文切换时,这些资源将受到保护。 线程更改仅表示CPU的执行进程的更改,而没有发生进程所拥有的资源的更改。 计算机中的硬件和软件资源分配与线程无关,线程只能共享其所属进程的资源。 进程具有完整的虚拟地址空间,不依赖线程而独立存在; 相反,线程是进程的一部分,没有自己的地址空间,与进程中的其他线程一起共享分配给该进程的所有资源。 线程共享同一进程的所有资源,因此通常进行同步和互斥。 作者:诺华

声明:本文为《力量按钮》版权所有。 转载的话请联系我。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。