Linux
I_l_I
这个作者很懒,什么都没留下…
展开
-
进程间通信(三)共享内存
概念:共享内存区是最快的IPC形式。⼀一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再 涉及到内核,换句话说是进程不再通过执⾏行进⼊入内核的系统调⽤用来传递彼此的数据。共享内存中的函数:shmget函数:功能:⽤用来创建共享内存 原型 int shmget(key_t key, size_t size, int shmflg); 参数 key:这个共享...原创 2018-10-02 13:13:41 · 415 阅读 · 0 评论 -
Linux:线程安全
什么是线程安全?当我们多线程对临界资源,或者全局变量静态变量,(多线程执行流共享的资源)进行操作时,容易造成的问题。因为在cpu足够的情况下,多个线程的运行也可能是并行的,因此对临界资源的访问,就会造成争抢操作,然而这种争抢操作,会造成数据的二义性问题,因此线程安全,就是讨论如何保证线程对临界资源的安全访问。解决线程安全问题的方法同步与互斥操作,同步就是对临界资源访问的时序可控性,互...原创 2019-01-26 16:59:46 · 926 阅读 · 0 评论 -
利用消息队列实现简单聊天程序
本篇利用消息队列的特性实现简单的聊天程序,msgsnd发送数据,msgrcv接收数据来实现聊天功能,消息队列详情。数据接收端msgrcv//这是一个以system V消息队列实现的聊天程序客户端//// 1.创建消息队列//// 2.从消息队列中获取一个数据,打印出来//// 3.从标准输入中获取一个数据,组织成消息队列节点发送//// 4.删除消息队列//// 接...原创 2018-11-10 15:48:29 · 5634 阅读 · 0 评论 -
利用管道实现进程间的单向通信
管道是进程间通信的最原始方式,今天我们利用管道的进程间通信,来实现简单的进程间单向通信首先我们需要了解命名管道的一些特性命名管道的使用与创建然后创建一个fifo_c的文件来实现输入数据和发送数据 /*这是一个命名管道的实现,往命名管道中写入数据,并且发送给另一个进程 * 1. 创建一个命名管道 * int mkfifo(const char*pathname,m...原创 2018-11-10 10:52:12 · 753 阅读 · 0 评论 -
进程间通信(一)匿名管道
进程间通信的目的 数据传输:一个进程将他的数据发送给另外一个进程 资源共享:多个进程之间共享同样的资源 通知事件:一个进程需要向另一个或者另一组进程发送信息,通知他们发生了某件事 进程控制:有些进程希望完全控制另一个进程的执行,此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道他的状态改变。进程间通信 进程间为什么需要沟通交流? 在实际工作中往往会出现一个系统中好几...原创 2018-08-23 14:16:01 · 540 阅读 · 0 评论 -
进程间通信(二)命名管道fifo
命名管道:管道的一个限制就是只能用在亲缘进程之间,如果我们想在不相关的进程间进行数据交换,可以使用FIFO文件来进行,它叫做命名管道。命名管道:文件系统可见,是一个特殊类型(管道类型)的文件。命名管道可以应用在同一主机的任意进程间通信。命名管道的创建:(1)在命令行的创建$ mkfifo filename;(2)在程序里创建int mkfifo(const char*filen...原创 2018-11-10 10:15:42 · 391 阅读 · 0 评论 -
Linux:进程优先级
什么是进程优先级?1.cpu分配资源的先后顺序,就是指进程的优先权2.优先级高的进程有优先执行的权利。配置进程优先权对多任务环境的Linux很有用,可以改善系统的性能3.可以把进程绑定到指定的cpu上,这样可以把不重要的进程安排到别的cpu上,可以改善系统的整体性能(不用在多个核心上切换提高效率)交互式进程和批处理进程1.交互式进程:一旦操作立即反应,优先级高(人性化体验)2.批处理...原创 2018-10-17 16:38:29 · 898 阅读 · 0 评论 -
Z(zombie)僵尸进程和孤儿进程
僵尸进程 1.什么是僵尸进程? (1) 僵死状态是一个比较特殊的状态,当子进程退出但父进程没有读取到子进程退出返回的代码时就会产生僵死状态,僵死进程会占用你的正常资源 (2)僵死进程会以终止状态保持在进程表中,并且会一直等待父进程读取它的退出状态 (3)所以只要子进程退出,但他的父进程没有读取子进程的状态,子进程进入僵死状态 2.僵尸进程的危害 (1)进程的退出状态必须被维持下去,因...原创 2018-08-16 18:23:23 · 730 阅读 · 0 评论 -
Linux:进程状态
为了弄明白正在运行的进程什么意思,我们需要知道进程不同的状态,一个进程可以有几个状态1.运行态(running):并不意味着进程一定在运行中,他表明进程要么在运行要么在运行队列里2.可中断睡眠状态(sleeping):意味着进程在等待事件完成3.不可中断睡眠状态(disk sleep):在这个状态的进程会等待IO的结束4.停止状态(stopped):可以通过发送SIGSTOP信号给进程来...原创 2018-10-16 21:07:24 · 1431 阅读 · 0 评论 -
进程间通信(三)消息队列
什么是消息队列 1)消息队列提供了一个进程向另外一个进程发送一块数据的方法。 2)每个数据块都认为有一个类型,接收者进程接收的数据块可以有不同的类型。 3)消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的,每个消息队列的总字节数也是有上限的,系统上消息队列的总数也有一个上限。消息队列函数 1)msgget函数功能:用来创建一个消息队列原型: int ms...原创 2018-09-26 16:47:21 · 354 阅读 · 0 评论 -
Linux:多线程概念
线程的概念1.什么是线程?线程是cpu进行调度的基本单位,简单的来说,线程就是进程里面的进程,不过线程共享了进程的虚拟地址空间,而且公用了进程的代码段和数据段,线程是进程里面的一个执行流(cpu调度的基本单位是线程,线程是真正执行一段程序的执行单位),所以有的人说线程是运行在进程上面的。2.进程和线程的区别(1)进程是资源竞争的基本单位(2)线程是cpu运行调度的基本单位(3)线程...原创 2019-01-22 17:24:29 · 383 阅读 · 0 评论