linux
文章平均质量分 73
ttyue_123
这个作者很懒,什么都没留下…
展开
-
管道、消息队列、共享内存之间的区别与联系
管道和消息队列的区别管道(PIPE) 管道通信方式的中间介质是文件,通常称这种文件为管道文件。两个进程利用管道文件进行通信时,一个进程为写进程,另一个进程为读进程。写进程通过写端(发送端)往管道文件中写入信息;读进程通过读端(接收端)从管道文件中读取信息。两个进程协调不断地进行写、读,便会构成双方通过管道传递信息的流水线。管道分为原创 2016-08-30 16:40:03 · 16235 阅读 · 2 评论 -
进程间通信——命名管道
前面介绍的管道属于匿名管道,只能够用于有血缘关系的进程间通信,比如父子进程之间的通信。下面主要讨论另一种管道——命名管道。 在命名管道(named pipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存储于文件系统中。命名管道是一个设备文件,因此,即使进程与创建FIFO的进程不存在亲缘关系,只要可以访问该路径,就能够通过F原创 2016-08-11 21:36:52 · 753 阅读 · 0 评论 -
进程等待&程序替换
一个进程在终止时会关闭所有的文件描述符,释放在用户空间分配出来的内存,但它的PCB还保留着,而且内核中还保存着一些信息,如果是正常终止,则保存着退出状态,如果是异常终止,则保存着导致该进程终止信号是哪个,。这个进程的父进程可以调用wait和waitpid获取这些信息,然后彻底清除这个进程。 一个进程的父进程是shell进程,当它终止时shell就会调用wait或者waitpid得到它的原创 2016-08-10 18:50:29 · 398 阅读 · 0 评论 -
‘生产者-消费者’模型与‘读-写者’模型
★生产者-消费者模型 首先,我们先分析一下生产者与消费者模型:生产者与消费者是模型中不可缺少的2种角色,当然模型中肯定需要一个保存数据的场所,能够将生产者生产的数据进行存储。同时,模型必须要满足生产者产生出数据后,消费者才能够进行使用,即就是消费者必须位于生产者之后,当然生产者生产的数据最多将场所放置满就不能继续生产,下面有简单的图示:650) this.width=650;" titl原创 2016-08-09 21:44:23 · 618 阅读 · 0 评论 -
系统调度—‘线程’
在前面的博文中讨论了进程的相关概念,这里重新引入一下‘线程’的概念。进程有各自独立的地址空间,所以进程间的通信是比较麻烦的,只能借助管道等才能够实现进程间通信。而linux系统中,多个线程共享进程的地址空间(也可以说是进程是一个独占资源的线程),所以线程之间的通信是非常方便的。注:以下只针对linux系统。★进程与线程的比较 在linux系统中,线程和进程之间的区分不是特别明显,但是它们之原创 2016-08-09 21:44:19 · 357 阅读 · 0 评论 -
进程间通信—‘匿名管道’
进程间通信:每个进程都有各自的地址空间,所以进程之间交换数据就需要通过内核,将数据拷贝到内核中,然后另一个进程进行读取,这种方式成为进程间通信。★创建管道 include int pipe(int filedes[2]); 其中,参数filedes参数传出给用户程序两个文件描述符,filedes[0]指向管道的读端,filedes[1]指向管道的写端。原创 2016-08-09 21:44:17 · 290 阅读 · 0 评论 -
‘信号’基本概念总结
生活中有许许多多的信号,能够反映给人类,人类能够产生相应的行为。当我们使用键盘给计算机一个信号,计算机也会相应的产生一系列的行为。在linux系统中,使用kill -l命令能够查看系统中所有的信号如下:650) this.width=650;" title="无标题.png" alt="wKioL1eXWkjAIKI3AACLfuXkW8I273.png" src="http://s5.51cto原创 2016-08-09 21:44:14 · 516 阅读 · 0 评论 -
再谈‘进程’
★进程标识符 每个进程都有非负的整形表示唯一的进程ID。下面是一些标识符: pid:调用进程的ID(获取方式getpid) ppid:调用进程的父进程ID(获取方式getppid) uid:调用进程的实际用户ID(获取方式getuid) euid:调用进程原创 2016-08-09 21:44:11 · 250 阅读 · 0 评论 -
论‘进程’相关操作
★进程相关概念 (1)进程:是一个能够分配处理器并由处理器执行的,能够携带资源的活动实体。 (2)进程控制块(PCB):每一个进程中都有唯一的一个进程控制块来保存进程的相关信息,实际PCB就是一个task_struct的结构体。具体的见http://10740590.blog.51cto.com/10730590/1785457 (3)进程状态:进程是一个原创 2016-08-09 21:44:08 · 255 阅读 · 0 评论 -
几种进程调度算法总结
一、先来先服务和短作业(进程)优先调度算法1.先来先服务调度算法(FCFS) 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个原创 2016-08-09 21:43:51 · 15764 阅读 · 0 评论 -
PCB(进程控制块)--‘task_struct’
在介绍PCB(进程控制块)前,先实现一个‘进度条’,然后根据编写的程序,分析PCB的具体实现原理。‘进度条’的功能是能够在一行中显示出来,同时进度条中有动态的增长变化,能够知道进度条中的比率,同时也需要能够将显示的知道程序是否正在执行。 ◆下面是编写的程序:650) this.width=650;" title="9.png" src="http://s3.51cto.com/wyfs02/M00原创 2016-08-09 21:43:48 · 540 阅读 · 0 评论 -
linux中的‘make’和‘makefile’
在提及‘make’和‘makefile’之前有必要先理清楚程序编译的过程,在windows操作系统下,我们一般使用的编写程序的软件有vs、vc等,这些都是集成软件,当编写完程序之后,直接点击进行编译和链接,那么编译器是怎样将程序进行编译的呢?◆编译过程(1)预处理阶段 将程序编辑完成之后,在编译之前,编译器会先对程序进行一下预处理,预处理阶段一般的工作是将程序的注释去掉,将头文件在原创 2016-08-09 21:43:45 · 326 阅读 · 0 评论 -
Centos中‘vim配置’有多强大?
在linux的系统上安装vim编辑器后,发现vim的页面设置还是不太习惯,没有显示的行号,也没有自动的缩进,页面的背景也不是很好看,但是vim编辑器是可以进行配置的,我们可以打造属于自己的vim风格。下面主要讨论一下简单的vim配置问题:1.简单的页面设置(附有效果图) 首先,使用cd /etc命令进入etc的目录下,然后输入vim vimrc 进入vim的配置文件中,查看的效果图如下原创 2016-08-09 21:43:43 · 692 阅读 · 0 评论 -
怎样在Centos中配置gcc、g++、和gdb?
linux中使用gcc来编译C程序,使用g++来编译C++程序,使用GDB来调试程序,这些使用工具都需要自己进行安装,那么应该怎样配置这些工具呢? 首先,在命令行中输入vi查看一下vim的信息如下:650) this.width=650;" width="397" height="246" title="1.png" style="width:397px;height:232px;"原创 2016-08-09 21:43:40 · 1508 阅读 · 0 评论 -
linux系统中‘find’的详细用法
“find”指令是linux系统下较为常用的指令,它常见的用法我们也需要掌握,下面主要是对‘find’指令的常见用法作一下总结,希望能够对其他人有所帮助。 在linux系统下用"ls"指令查看目录如下: 650) this.width=650;" title="无标题.png" alt="wKioL1c_EEeiBsI_AAAt1uO7Reg362.原创 2016-08-09 21:43:24 · 10765 阅读 · 0 评论 -
进程间通信——消息队列
前面的两篇博客分别介绍了两种进程间通信的方式:匿名管道、命名管道。下面在介绍一种方式——消息队列。1.基本概念 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为是一个类型,接收者进程接收的数据块可以有不同的类型值。并且消息队列是随内核的,也就是说进程已经退出了,如果不自主释放资源,消息队列是会悄无声息的存在着。所以较管道来说,消息队列的生命原创 2016-08-12 16:49:43 · 431 阅读 · 0 评论