Linux进程
文章平均质量分 55
Everlasting2016
我流我的汗水,华丽如天花乱坠
展开
-
进程篇上之初识进程(1)
一、进程重点:(1)什么是进程(2)进程与应用程序的区别1、进程(1)说到进程,进程不是以前所谓的二进制文件(进程是要处理的事件),不光要有运行程序还要有管理信息(系统不直接与硬件打交道,而是与软件打交道,驱动直接与硬件打交道)(2)进程是由进程控制块、程序段、数据段三部分组成;(3)现在将进程描述出来,一个pcb代表一个进程(pcb是进程的唯一标识),系统可以通过pcb可原创 2016-06-10 16:06:42 · 429 阅读 · 0 评论 -
浅谈fork与vfork函数
1) 先说说forkfork在linux中用于进程的创建。它实际上是复制了一个与父进程(就是调用fork的进程)一模一样的子进程。其主要复制的内容包括: 进程控制块PCD、数据段与堆栈。代码段是共享的。因为代码段是read-only的,不用担心改写的问题,大家共用一块代码也没什么问题。调用完fork后,两个进程就分道扬镳了,各干各的互不干扰。可问题是他们两个什么都是一样的,那如何区分谁是谁原创 2016-07-20 19:32:51 · 402 阅读 · 0 评论 -
System V和Posix消息队列的差别
一、posix消息队列与system v消息队列的差别:1、对posix消息队列的读总是返回最高优先级的最早消息,对system v消息队列的读则可以返回任意指定优先级的消息。2、当往一个空队列放置一个消息时,posix消息队列允许产生一个信号或启动一个线程,system v消息队列则不提供类似机制。二、队列中的每个消息具有如下属性:1、一个无符号整数优先级(posix)或一个原创 2016-07-17 22:04:01 · 2909 阅读 · 0 评论 -
linux下管道的容量以及实现机制
(一)管道外部实现当我们定义一个管道时,这个管道是由内核管理的一个缓冲区,可以抽象为现实生活中的一个传输线路。管道的一端连接一个进程的输出,这个进程会向管道中放入信息。管道的另一端连接一个进程的输入,这个进程取出被放入管道的信息。当管道中没有信息的话,从管道中读取的进程会等待,直到另一端的进程放入信息。当管道被放满信息的时候,尝试放入信息的进程会等待,直到另一端的进程取出信息。当两个进程都终结原创 2016-07-17 18:15:12 · 763 阅读 · 0 评论 -
管道使用的四种特殊方式
进程之间通信最简单的方式:管道通信使用管道需要注意以下4种特殊情况(假设都是阻塞I/O操作,没有设置O_NONBLOCK标志):如果所有指向管道写端的文件描述符都关闭了(管道写端的引用计数等于0),而仍然有进程从管道的读端读数据,那么管道中剩余的数据都被读取后,再次read会返回0,就像读到文件末尾一样。如果有指向管道写端的文件描述符没关闭(管道写端的引用计原创 2016-07-17 18:00:19 · 785 阅读 · 0 评论 -
进程间通信各自的特点
进程通信的含义进程是转入内存并准备执行的程序,每个程序都有私有的虚拟地址空间,由代码,数据以及它可利用的系统资源(如文件,管道)组成.多进程/多线程是windows操作系统的一个基本特征.Linux系统一般都统称为进程.由于不同的进程运行在各自不同的内存空间中,其中一个进程对于变量的修改另一方是无法感知的,因此,进程之间的消息传递不能通过变量或其他数据结构直接进行,只能通过进程间通原创 2016-07-17 17:14:16 · 956 阅读 · 0 评论 -
Linux的进程/线程间通信方式
Linux系统中的进程间通信方式主要以下几种:同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程通信方式:包括信号量(Semaphore), 消息队列(Message Queue), 和共享内存(Shared Memory)网络主机间的进程通信方式原创 2016-07-17 15:54:49 · 519 阅读 · 0 评论 -
linux下程序的优先级
linux下的进程调度优先级是从-20到19,一共40个级别,数字越大,表示进程的优先级越低。默认时候,进程的优先级是0。查看进程优先级有两个办法:ps和top。top命令显示的NI列的值。或者可以使用ps -efl来查看,也是在ni列表示了进程的优先级。进程的优先级可以在程序运行的时候设置,也可以在程序运行过程中动态的修改。运 行的时候设置进程的优先级可以使用nice命令,比如要使得to原创 2016-07-27 11:30:59 · 1225 阅读 · 0 评论 -
ftok函数
一、函数原型 系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )二、参数解释fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。当成功执行的时候,一个key原创 2016-07-15 23:43:19 · 704 阅读 · 0 评论 -
进程篇上之初识进程(2)
三、进程标识符1、获取当前进程的pid(1)getpid函数返回值:无符号整形或者长整形(2)编写程序进行查看首先编写makefile:my_pid:my_pid.cgcc -o my_pid my_pid.c.PHONY:clean(依赖关系暂时为空)rm -f my_pid主程序:#include#include#include原创 2016-06-11 22:53:09 · 438 阅读 · 0 评论 -
进程和和轻量级进程
在多线程程序中,一个新的线程通常由一个进程调用phtread_create()函数而诞生的。新线程创建后,通常将这个进程称为主线程。你也许会有所迷惑:一个进程怎么会编程线程?此刻有几个线程,几个进程?其实通过上文对线程、轻量级进程以及线程组之间关系的理解后,这个问题似乎也不难回答。我们可以将所有的进程都看作一个线程组,只不过普通进程的线程组只包含它自己一个线程,它不能与其他线程共享资源,只原创 2016-07-20 23:56:16 · 880 阅读 · 0 评论