摘要:进程与线程声明文章均为本人技术笔记,转载请注明出处进程线程基本概念进程程序的执行实体,操作系统分配资源的最小单位线程被称为轻量级进程,是调度分配的最小单位。一个标准的线程由线程,程序计数器,寄存器集合和堆栈组成进程间线程间通信方式进程间通信
进程与线程 声明
文章均为本人技术笔记,转载请注明出处https://segmentfault.com/u/yzwall
进程&线程基本概念进程:程序的执行实体,操作系统分配资源的最小单位;
线程:被称为轻量级进程,是CPU调度分配的最小单位。一个标准的线程由线程ID,程序计数器(PC),寄存器集合和堆栈组成;
进程间/线程间通信方式 LinuxLinux进程间通信:管道,信号(signal),消息队列(Message),共享内存(shared memory),信号量(semaphore),套接口(socket)
Linux线程间通信:互斥量(Mutex),信号量(Semaphore),条件变量
Windows进程间通信:管道(pipe),消息队列(Message),共享内存(shared memory),信号量(semaphore),套接口(socket)
Windows线程间通信:临界区(critical section),互斥量(Mutex),信号量(Semaphore),事件(Event)
线程是独立调度的基本单位,进程是拥有资源的基本单位(进程只作为除CPU之外系统资源的分配单元,线程作为CPU的分配单元);
在同一进程中,线程之间的切换不会引起进程的切换,但从一个进程中的线程切换到另一个进程中的线程时,会引起进程的切换;
进程创建和撤销时,系统开销远大于线程开销;
进程切换时,保存现场开销和上下文切换开销远大于线程开销;
进程之间的地址空间互相独立,一个进程崩溃不影响其他进程;
线程之间(属于同一进程)共享进程的地址空间,一个线程死掉相当于整个进程死掉;
进程间通信需要借助操作系统;
由于线程共享进程的地址空间,因此线程间同步与通信较容易实现,甚至无需操作系统干预;
死锁产生必须同时满足以下四个条件:
互斥条件:一段时间内,某资源仅被一个进程所占有,其他进程只能等待;
不剥夺条件:进程拥有的资源只能由自己释放,不可被其他进程强行夺走;
请求和保持条件:在申请资源不能全部满足的条件下,进程占有已申请的资源,等待新的资源分配
循环等待条件:存在系统资源的进程循环等待链;
死锁处理策略预防死锁:任意破坏死锁产生的四个必要条件之一即可;
避免死锁:在资源动态分配过程中,采用某种算法(比如银行家算法)防止系统进入”不安全状态“(系统有可能死锁);
死锁检测和解除:通过系统检测机制及时检测出死锁现象(利用资源分配图),然后可通过剥夺资源,撤销进程和回退进程解除死锁;
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67021.html
摘要:父进程调用创建子进程。因而,一个进程的第一个线程会随着这个进程的启动而创建,这个线程被称为该进程的主线程。另一方面,线程不可能独立于进程存在。终止线程线程可以通过多种方式来终结同一个进程中的其他线程。 前言 不积跬步,无以至千里;不积小流,无以成江海。在学习Java多线程相关的知识前,我们首先需要去了解一点操作系统的进程、线程以及相关的基础概念。 进程 通常,我们把一个程序的执行称为一...
摘要:一个进程如果有多条执行路径,则称为多线程程序。这可能抛出在当前线程中。考虑多线程的数据安全问题是否是多线程环境。当前线程必须拥有此对象监视器。此方法导致当前线程称之为将其自身放置在对象的等待集中,然后放弃此对象上的所有同步要求。 这是刘意老师的JAVA基础教程的笔记讲的贼好,附上传送门 传智风清扬-超全面的Java基础 一、线程的引入 1.多线程概述 进程 a.正在运行的程序,是...
阅读 2957·2021-11-08 13:20
阅读 1030·2021-09-22 15:20
阅读 659·2019-08-30 15:53
阅读 1964·2019-08-30 15:43
阅读 1277·2019-08-29 17:21
阅读 539·2019-08-29 12:15
阅读 2374·2019-08-28 17:51
阅读 3142·2019-08-26 13:26