Linux
文章平均质量分 84
rengui1228
书山有路勤为径,学海无涯苦作舟
展开
-
Linux进程间通信----共享内存
一、共享内存 1、共享内存的概念: 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某原创 2017-06-15 22:13:38 · 356 阅读 · 0 评论 -
Linux内核中的管道
一、介绍关于进程间通信 Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限原创 2017-06-11 00:30:42 · 1265 阅读 · 0 评论 -
Linux内核中的信号量
Linux内核中的信号量 信号量的本质是⼀种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。当请求⼀个使用信号量来表示的资源时,进程需要先读取信号量的值来判断资源是否可⽤。大于0,资源可以请求,等于0,⽆资源可⽤,进程会进入睡眠状态直⾄资源可⽤。当进原创 2017-06-11 14:18:10 · 1045 阅读 · 0 评论 -
Linux内核中的进程等待与其实现解析
一、进程等待的概述 进程通过fork产生子进程,进程也会死亡,进程退出的时候将会进行内核清理,释放所有进程的资源,资源包括:内存资源,文件资源,信号量资源,共享内存资源,或者引用计数减一,或者彻底释放。 不过进程的退出并没有把所有资源释放,保留一一些资源,比如进程的PID依然被占用,不可被分配,来看看僵尸进程依旧占有的资源:进程控制块task_struct原创 2017-06-11 22:36:39 · 569 阅读 · 0 评论 -
Linux----子进程的异步等待方式
一、关于进程等待相关博客:http://blog.csdn.net/rengui1228/article/details/73064852二、基础知识 1,进程的各种状态 Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。 在下文将对进程的R、S、D、T、Z、X 六种状态做个原创 2017-06-12 00:13:39 · 297 阅读 · 0 评论 -
Linux----普通版本的mysleep与规避竞态条件的mysleep对比
一、普通情况下的mysleep 先了解一下SIGALRM信号、alarm函数和pause函数。 SIGALRM时钟定时信号, 计算的是实际的时间或时钟时间。alarm函数使用该信号。unsigned int alarm(unsigned int seconds); alarm也称为闹钟函数,它可以在进程中设置一个定时器,当定时器指定的时间到时原创 2017-06-12 12:54:33 · 552 阅读 · 1 评论 -
Linux----线程安全和可重入函数
一、线程安全 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。 线程安全问题都是由全原创 2017-06-12 22:34:00 · 331 阅读 · 0 评论 -
Linux----使用GDB调试多进程和多线程程序
一、GDB调试多进程原创 2017-06-14 23:45:58 · 547 阅读 · 0 评论 -
Linux内核中的线程及多线程
一、线程的概念、理解及特点 1.线程的概念: 至今为止,Linux下还是没有“真正的线程”。谈到线程就不得不提到进程这概念,进程是系统中程序执行和资源分配的基本单位。每个进程都拥有自己的数据段,代码段和堆栈段,这就造成了进程在进行切换等操作时都需要有比较负责的上下文切换等动作.为了进一步减少处理机的空转时间支持多个处理器和减少上下文切换开销,进程在演化中出现了另一个原创 2017-06-08 16:10:08 · 670 阅读 · 0 评论 -
Linux内核中的信号(一)
一、Linux信号的基本概念1、什么是信号? 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kil原创 2017-06-08 01:10:44 · 721 阅读 · 0 评论 -
Linux内核中的线程死锁
一、死锁的概念 1.什么是死锁: 死锁 (deadlocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程(线程)在无外力协助下,永远分原创 2017-06-09 00:18:26 · 499 阅读 · 0 评论