(1)父进程先于子进程结束,此时子进程成为一个孤儿进程。 (2)Linux系统规定:所有孤儿进程都成为一个特殊进程(进程1,也就是init进程)的子进程。 (1) (2) 程序员在程序中用malloc向虚拟内存的堆空间动态申请内存,用free释放内存。如果程序存在大量的malloc/free操作且长时间运行,则虚拟内存的堆空间很容易产生内存碎片 内存碎片是指堆空间剩余很多离散的空闲内存,但不能满足malloc的分配请求。内存碎片分为外部碎片和内部碎片。下图描述了部分堆空间的内存分配情况,将堆空间以4字节为单位划分为许多分配块,白色块表示空闲内存,浅蓝色和深蓝色块表示已分配的内存。假设内存分配的最小单位是一个分配块(4字节)。 栈:由系统自动分配 堆:由程序员手动申请 栈:栈区的内存大小是固定的,只要申请的内存小于栈区剩余的内存,就可以分配成功,否则栈会溢出。 堆:堆区的内存大小是由计算机的虚拟内存决定的, (1)信号量用于线程同步,互斥锁用于线程互斥。 (2)信号量可以为非负整数,可以实现多个同类资源的多线程同步;互斥锁只能为0/1,只能用于一个资源的互斥访问。 (3)信号量可以由一个线程释放,另一个线程得到;互斥锁的加锁和解锁必须由同一线程分别对应使用,且多个线程使用多个互斥锁必须注意统一顺序,否则可能造成死锁。 什么是死锁?产生死锁的原因是什么? (1)死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程将无法向前推进。 (2)原因:①系统资源不足。②资源分配不当。③进程推进的顺序不合适。 死锁的四个必要条件是什么? (1)互斥条件:一个资源每次只能被一个进程使用,其他进程只能等待。 (2)请求与保持条件:进程已经获得至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时该进程被阻塞,但对已获得资源依然保持不放。 (3)不可剥夺条件:进程所获得的资源不能被其他进程剥夺,只能被自己释放。 (4)循环等待条件:若干进程形成首尾相接循环等待资源的关系。 注意:以上四个条件缺一不可。 死锁的处理方法? (1)预防死锁:通过设置一些限制条件,去破坏产生死锁的必要条件。 (2)避免死锁:在资源分配过程中,使用某种方法避免系统进入不安全的状态,从而避免发生死锁。 (3)检测和解除死锁:允许死锁的发生,但是通过系统的检测之后,采取一些措施,将死锁清除掉。 怎样预防死锁? (1)破坏“请求与保持条件”: ①静态分配,即每个进程在开始执行时就申请它所需要的全部资源: ②动态分配,即每个进程在申请所需要的资源时它本身不占用系统资源。 (2)破坏“不可剥夺条件”:一个进程在阻塞等待期间,其占有的资源被隐式释放后被其他进程使用,而阻塞等待的资源只有获得所有需要的资源才能重新启动。 (3)破坏“循环等待条件”:采用资源的有序分配,将所有资源进行编号,紧缺的资源采用 比较大的编号,一个进程只有获得较小编号的资源才可以申请较大编号的资源
1、进程与线程的区别
2、进程间通信的方式有哪些
3、进程调度算法
4、孤儿进程是什么
5、多线程同步机制有哪些
6、简述进程内存分区

.bss段:存储未初始化的、初始化为0的全局变量和静态变量。.data段:存储初始化不为0的全局变量和静态变量、const型常量。
7、内存碎片

8、堆和栈的区别?
9、互斥锁与信号量的区别
10、同步和异步的区别
11、死锁
0
0
相关文章
高德地图版本更新失败怎么办 高德地图更新问题解决方法【排查】
如何查询个人档案在哪里_毕业学校与人才中心的查询
如何办理签证?办理签证最全流程
羽绒服怎么洗才能蓬松_在家正确清洗步骤
1GB流量等于多少MB 移动数据单位换算【实用】
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。
1566
2023.10.24
字符串常量的表示方法:1、使用引号;2、转义字符;3、多行字符串;4、原始字符串;5、字符串连接;6、字符串字面量和对象;7、编码问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
143
2023.12.26
const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。
562
2023.09.20
js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。
760
2023.08.03
js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。
221
2023.09.04
java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。
1566
2023.10.24
本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。
3
2026.03.11
热门下载
精品课程


