Linux 进程线程 信号量区别,操作系统进程与线程笔记

进程与线程

声明

进程&线程基本概念

进程:程序的执行实体,操作系统分配资源的最小单位;

线程:被称为轻量级进程,是CPU调度分配的最小单位。一个标准的线程由线程ID,程序计数器(PC),寄存器集合和堆栈组成;

进程间/线程间通信方式

Linux

Linux进程间通信:管道,信号(signal),消息队列(Message),共享内存(shared memory),信号量(semaphore),套接口(socket)

Linux线程间通信:互斥量(Mutex),信号量(Semaphore),条件变量

Windows

Windows进程间通信:管道(pipe),消息队列(Message),共享内存(shared memory),信号量(semaphore),套接口(socket)

Windows线程间通信:临界区(critical section),互斥量(Mutex),信号量(Semaphore),事件(Event)

线程与进程的区别

资源分配与调度

线程是独立调度的基本单位,进程是拥有资源的基本单位(进程只作为除CPU之外系统资源的分配单元,线程作为CPU的分配单元);

在同一进程中,线程之间的切换不会引起进程的切换,但从一个进程中的线程切换到另一个进程中的线程时,会引起进程的切换;

系统开销

进程创建和撤销时,系统开销远大于线程开销;

进程切换时,保存现场开销和上下文切换开销远大于线程开销;

地址空间

进程之间的地址空间互相独立,一个进程崩溃不影响其他进程;

线程之间(属于同一进程)共享进程的地址空间,一个线程死掉相当于整个进程死掉;

通信方面

进程间通信需要借助操作系统;

由于线程共享进程的地址空间,因此线程间同步与通信较容易实现,甚至无需操作系统干预;

多进程和多线程选择

1460000009058184?w=1071&h=485

死锁与死锁处理策略

死锁产生必要条件

死锁产生必须同时满足以下四个条件:

互斥条件:一段时间内,某资源仅被一个进程所占有,其他进程只能等待;

不剥夺条件:进程拥有的资源只能由自己释放,不可被其他进程强行夺走;

请求和保持条件:在申请资源不能全部满足的条件下,进程占有已申请的资源,等待新的资源分配

循环等待条件:存在系统资源的进程循环等待链;

死锁处理策略

1460000009058394?w=827&h=342

预防死锁:任意破坏死锁产生的四个必要条件之一即可;

避免死锁:在资源动态分配过程中,采用某种算法(比如银行家算法)防止系统进入”不安全状态“(系统有可能死锁);

死锁检测和解除:通过系统检测机制及时检测出死锁现象(利用资源分配图),然后可通过剥夺资源,撤销进程和回退进程解除死锁;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值