线程与进程

*1 . 进程与线程的区别

***进程的概念:
进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户调用一个程序,系统就创建一个进程,并为它分配资源,包括各种内存空间、磁盘空间、IO设备等。然后,把该进程放入进程的就绪队列。进程调度程序选中它,为它分配 CPU以及有关的资源,该进程才能真正运行,所以,进程是系统中的并发执行的单位。在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它是资源分配的单位,而不再是运行调度的单位。在微内核系统中,真正调度运行的基本单位是线程,因此,实现并发功能的单位是线程。

**线程的概念:
线程时进程中执行运算的最小单位,亦是执行处理调度的最小单位。如果把进程理解为逻辑上操作系统所完成的任务,那么线程就是表示完成该任务的许多可能的子任务之一。例如,假 设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这是 一个子任务;在产生工资单报表的过程中,用户又可以输人数据库查询请求,这又是一个子任务。这样,操作系统则把每一个请求――工资单报表和新输人的数据查 询表示为数据库进程中的独立的线程。 线程可以在处理器上独立调度执行,这样,在多处理器环境下就允许几个线程各自在单独处理器上进行。操作系统提供线程就是为了方便而有效地实现这种并发性。

(1)进程是资源分配和调度的一个独立单元,而线程是CPU调度的基本单元
(2)同一隔进程中包含多个线程,而线程可以共享整个进程中的资源(包括寄存器、堆栈等)。一个进程中至少包括一个线程。
(3)线程是轻量级的进程,它的创建和销毁的时间比进程小很多。所有操作系统中的执行功能都是创建线程去完成的。
(4)线程中的执行一般都要进行同步和互斥,因为他们共享同一进程中的所有资源。
(5)线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志
(6)进程的退出时exit,线程的退出是pthread_exit

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一 个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

*引入线程的好处:
(1)易于调度
(2)提高并发性。通过线程可方便有效地实现并发性,进程可创建多个线程来执行同一程序的不同部分
(3)开销少。创建线程比创建进程要快,所需开销很少。
(4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。

***线程独立的资源包括:

线程私有的资源必须包含寄存器,否则错误

1.线程ID

每个线程都有自己的线程ID,这个ID在本进程中是唯一的。进程用此来标识线程。

2.寄存器组的值

由于线程间是并发运行的,每个线程有自己不同的运行线索,当从一个线程切换到另一个线程上 时,必须将原有的线程的寄存器集合的状态保存,以便将来该线程在被重新切换到时能得以恢复。

3.线程的堆栈

堆栈是保证线程独立运行所必须的。线程函数可以调用函数,而被调用函数中又是可以层层嵌套的,所以线程必须拥有自己的函数堆栈, 使得函数调用可以正常执行,不受其他线程的影响。

4.错误返回码

由于同一个进程中有很多个线程在同时运行,可能某个线程进行系统调用后设置了errno值,而在该 线程还没有处理这个错误,另外一个线程就在此时被调度器投入运行,这样错误值就有可能被修改。所以,不同的线程应该拥有自己的错误返回码变量。

5.线程的信号屏蔽码

由于每个线程所感兴趣的信号不同,所以线程的信号屏蔽码应该由线程自己管理。但所有的线程都 共享同样的信号处理器。

6.线程的优先级

由于线程需要像进程那样能够被调度,那么就必须要有可供调度使用的参数,这个参数就是线程的优先级。

使用资源:

唯一使用的资源是内核栈和上下文切换时保持寄存器的空间

每个线程都有自己的执行堆栈,程序计数器,通用寄存器组和状态标记

线程栈空间是开辟在进程堆区域的,不是开辟在进程栈空间内的!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值