Linux | 进程与线程
进程和线程的关系:(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。(3)处理机分给线程,即真正在处理机上运行的是线程。(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。线程是指进程内的一个执行单元,也是进程内的可调度实体.
目录
1.进程的定义
正在内存里运行或进行的程序简称进程
2.进程的组成
PCB 进程控制块:
1、pid 进程唯一标识符
2、有效用户信息 -uid, gid(通常就是启动这个进程的用户)
3、程序的状态
4、程序优先级
5、程序上下文
(上下文切换:一个进程进入cpu时间片 另一个进程出来 这个过程就叫上下文切换)
代码段
数据段
3.进程三态图
4.进程与线程的区别与联系
1.线程的基本概念
线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。
好处:
(1)易于调度。
(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
(3)开销少。创建线程比创建进程要快,所需开销很少。。
(4)利于充分发挥多处理器的功能。通过创建多线程进程,每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。
2.进程的基本状态及状态之间的关系
1.进程的挂起
状态之间的转换:准备就绪的进程,被CPU调度执行,变成运行态;
运行中的进程,进行I/O请求或者不能得到所请求的资源,变成阻塞态;
运行中的进程,进程执行完毕(或时间片已到),变成就绪态;
将阻塞态的进程挂起,变成挂起阻塞态,当导致进程阻塞的I/O操作在用户重启进程前完成(称之为唤醒),挂起阻塞态变成挂起就绪态,当用户在I/O操作结束之前重启进程,挂起阻塞态变成阻塞态;
将就绪(或运行)中的进程挂起,变成挂起就绪态,当该进程恢复之后,挂起就绪态变成就绪态;
2.引起进程挂起的原因
1.用户的请求。
2.父进程的请求。
3.操作系统的原因。
Ⅰ.交换。当操作系统发现系统的内存资源已经不能满足运行进程的需要时,可以将当前不重要的进程挂起,以达到平衡系统负载的目的。
Ⅱ.出现问题或故障时。当系统出现故障时,操作系统会暂时将系统中涉及该故障的进程挂起(换出),等故障恢复后,再将这些进程恢复到挂起前的状态(换入,由外存调入到内存)。
Ⅲ.操作系统的需要。为监视系统的活动,操作系统可以挂起和激活(将外存中的进程调入到内存)一些记录系统资源使用状况的进程和用户进程活动的记账进程。
3.具有挂起状态的进程状态转换
3.进程和线程的关系:
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)处理机分给线程,即真正在处理机上运行的是线程。
(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。线程是指进程内的一个执行单元,也是进程内的可调度实体.
4.进程与线程的区别:
(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)