linux应用之----进程控制理论

原创 2012年03月22日 19:19:04

进程理论基础

进程的定义:进程是一个具有特定功能的程序的一次运行活动。它和程序的区别在于:程序是存储在硬盘上的,是静态的;而进程是程序的执行。

进程特点:动态性 ,并发性 ,独立性 , 异步性 。

进程三态:就绪态,执行态,阻塞态。

进程的标识:用进程ID号来区分不同的进程。进程ID用PID表示,父进程ID用PPID表示,用户ID用UID表示。

进程互斥:是指当多个进程都要使用某一共享资源时,任何时刻做多允许一个进程使用,其它要使用该资源的进程必须要等待,直到占有该资源的进程结束为止。

临界资源:操作系统讲一次只允许一个进程访问的资源称为临界资源。

临界区:程序中,访问临界资源的那段代码称为临界区。

进程同步:一组并发进程按一定色顺序执行的过程称为进程的同步。具有同步关系的一组进程称为合作进程,合作进程之间互相发送的信号称为消息或事件。

进程调度:按一定的算法,从一组待运行的进程中选出一个来占用CPU。调度方式有抢占式和非抢占式两种。调度的算法有:先来先服务调度算法;短进程优先调度算法;高优先级优先调度算法;时间片轮转法。

死锁:多个进程因竞争资源而导致的一种僵局,若无外力作用,这些进程都将永远不能向前推进。

进程控制编程

1:获取ID

       #include<sys/types.h>

      #include<unistd.h>

       pid_t getpid(void);    //获取当前运行的进程的ID号

       pid_t getppid(void);   //获取当前运行进程的父进程的ID号。

2: fork 函数

                int   fork()

1) 返回值-1,出错。

2) 返回值 0,表示子进程

3) 否则为 父进程,且该返回值是子进程的pid。

    3 :vfock 函数

                int  vfork()

1) 返回值-1,出错。

2) 返回值 0,表示子进程

3) 否则为 父进程,且该返回值是子进程的pid

4) vfork 与 fork 区别:vfork必定是子进程先执行完,父进程再执行,fork则不一定;vfork中子进程与父进程共用数据段,所以变量之间相互影响,fork函数从父进程拷贝了一段数据段,所以不会有影响。

4: wait(null)与waitpid(pid,null,0)函数。

头文件为 #include <sys/types.h> 和 #include<sys/wait.h>

    用于阻塞一个进程。如果是wait,那么只有当该进程的某个子进程退出以后,它才会继续执行。而waitpid则指定了子进程的ID,只有这个指定ID的子进程结束了,它才会继续执行。

    5: exec函数族

exec用指定的程序替换调用它的程序。和fork的区别:fork是产生了一个新的进程,新进程的ID号是新的。而exec是替换进程,并且替换之后,进程的ID号不会变。

#include <unistd.h>

execl("bin/ls","ls","-l","etc/password",char *0);

execlp("ls","ls","-l","etc/password",char *0);

以上两个函数,它们的第一个参数为被执行的程序名。所不同的是exexl必须有完整的路径名称。而execlp则不需要完整的路径名称,它会到系统的path路径去寻找。后面的参数就是执行这个命令所需要的参数。最后一个参数以空指针结尾。

execv("bin/ls",argv); 其中char *argv[]={"ls","-l","etc/password",char *0};也就是说execv把execl后面的参数以及最后的空指针都用一个字符串数组给代替了。


哈夫曼编码树的C++实现

哈夫曼编码,参考与《算法导论》 //huffman_another solution #include #include #include #include using namespace s...
  • liuchenjane
  • liuchenjane
  • 2016年11月24日 17:38
  • 423

(14)多线程与并发库之java5同步集合类的应用【包含jdk1.5新特性 ConcurrentHashMap】

第一部分: 常用的集合类ArrayList、Map等在多线程操作同一对象时会发生不同步的线程而造成数据读取和写入错误;通常都是采用synchronized修饰符或Lock将那些方法括起来来确保它们在...
  • itm_hadf
  • itm_hadf
  • 2012年05月05日 21:22
  • 1828

linux 驱动编程___竞态/并发问题___信号量和互斥体

信号量和互斥体 几个相关概念 休眠:当一个linux进程到达某个时间点,此时它不能进行任何处理时,它将进入休眠(或阻塞),这将把处理器让给其它进程,知道将来它能够继续完成自己的处理为止。 为了让...
  • yichao81523
  • yichao81523
  • 2011年01月24日 22:01
  • 515

进程控制理论

进程控制理论     什么是进程?什么是多进程?进程的分类?     进程和程序的区别?     linux进程管理,有哪些管理工具?作用?     进程的三态是什么?进程的结构有哪些?  ...
  • zm1_1zm
  • zm1_1zm
  • 2016年10月29日 22:00
  • 412

iOS8 study for ——iOS8新特性之扩展(Extension)

扩展(extension)是iOS8引入的新特性,
  • SakuraBurial
  • SakuraBurial
  • 2014年07月25日 18:37
  • 192

RMAN高级应用之Duplicate复制数据库(4)实战

  经过前面的准备工作,大展拳脚的时刻终于来临了。在正在创建复制之前,我们先来描述一下需求,一个明确的、清晰的、可实现的需求更加有助于我们操作的实施,所以语言描述能力也是一项非常高超的技巧,下面大家看...
  • junsisi
  • junsisi
  • 2007年12月06日 12:26
  • 658

linux应用之----进程通信

进程间通信基础 进程间通信的英文缩写: IPC  为什么需要进程间通信?数据传输,资源共享,通知事件,进程控制等。 Linux进程间通信方式(6种):管道,信号,消息队列,共享内存,信号量,套接...
  • cjnewstar111
  • cjnewstar111
  • 2012年03月22日 19:19
  • 266

linux应用之--网络编程

linux网络编程     一:网络参考模型参考模型,如下图所示:          二:TCP/IP协议 TCP协议(传输控制协议)和UDP协议(用户数据包协议)是工作在传输层的...
  • cjnewstar111
  • cjnewstar111
  • 2012年03月22日 19:21
  • 295

linux应用之----多线程

多线程编程 线程理论:线程(thread)技术早在上世纪60年代就已经提出来了,但真正应用到多线程操作系统当中是在80年代中期。 线程想比与进程的两大优势:一是创建和维护一个线程的开销比创建和维护...
  • cjnewstar111
  • cjnewstar111
  • 2012年03月22日 19:21
  • 299

十大最佳Android游戏下载平台

转载:十大最佳Android游戏下载平台 Android游戏的快速发展,让人感叹,后生可畏,不知道做为Android用户的您,是从哪里开始下载Android游戏的,甚至说你的手机第一张壁纸有事从哪儿...
  • wulong710
  • wulong710
  • 2013年05月03日 10:27
  • 1095
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux应用之----进程控制理论
举报原因:
原因补充:

(最多只允许输入30个字)