【操作系统】进程和线程的区别

进程与线程的区别,早已经成为了经典问题。自线程概念诞生起,关于这个问题的讨论就没有停止过。通过学习和阅读博客对进程和线程区别进行总结。
在进行进行进程和线程的区别说明,先介绍什么是进程?什么是线程?

一、认识进程

人们是如何和操作系统进行交流,编写程序,执行任务?
通过进程人们实现了和操作系统的交互。每一个任务(进程)被创建时,系统会为他分配存储空间等必要资源,然后在内核管理区为该进程创建管理节点,以便后来控制和调度该任务的执行。
进程真正进入执行阶段,还需要获得CPU的使用权,这一切都是操作系统掌管着,也就是所谓的调度,在各种条件满足(资源与CPU使用权均获得)的情况下,启动进程的执行过程。
除CPU而外,一个很重要的资源就是存储器了,系统会为每个进程分配独有的存储空间,当然包括它特别需要的别的资源,比如写入时外部设备是可使用状态等等。

总结:
进程,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。它的执行需要系统分配资源创建实体之后,才能进行。

二、认识线程

在执行细小任务时开辟进程所需要的资源过大,进程虽然有共享内存、管道、信号量等方法减少资源的获取但方式过于繁琐,所以引入线程。
线程是进程的一部分,线程不需要独立资源就可以用行。

总结:
线程,是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。一个程序至少一个进程,一个进程至少一个线程。

三、区别和联系

联系:
二者可以独立调度,都有实体,是系统管理的对象个体。

区别:
根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位

在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)

内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。

包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

我阅读的博客原文
https://blog.csdn.net/kuangsonghan/article/details/80674777
https://my.oschina.net/cnyinlinux/blog/422207

发布了28 篇原创文章 · 获赞 72 · 访问量 1906

猜你喜欢

转载自blog.csdn.net/famur/article/details/104960870