Linux C 的进程调度

来源:互联网 发布:买淘宝号一个多少钱 编辑:程序博客网 时间:2024/05/29 08:43

进程调度

     概念:按一定的算法,从一组待运行的进程中选出一个来占用CPU的运行。

  调度方法: 抢占式 、   非抢占式

  调度算法:1)先来先服务   2)短进程优先    3)高优先级优先    4)时间片轮转法

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


 获取ID的头文件:#include <sys/types.h>  、<unistd.h>

                             pid_t.getpid(void)     获取本进程ID

                            pid_t. getppid(void)       获取父进程ID


 进程的创建: 创建子进程   pid_t    fork(void)


  一次调用,返回两个进程,可能有三种返回值;

  1)返回 失败    < 0

 2)父进程            返回子进程ID

 3)子                       返回0


    init---------始祖进程:所有进程的源头

  fork与vfork的区别:

 1)fork:子进程拷贝父进程的数据段或资源(一模一样), 调用的头文件    <unistd.h>

      vfork:子进程与父进程共享数据段

2)fork:父、子进程的执行顺序不确定

     vfork:子进程先运行,父进程后运行


exce函数族:  #include <unistd.h>

1 int execl(const char *path, const char *arg1,..............)

参数: path:被执行程序名(包含完整的路径)

  arg1......argn:被执行的程序所需的命令行参数,含程序名,以空指针(NULL)结束


2  int  main(int  argc,  char  **argv)    .......命令行参数               sleep( );

  exec用被执行的程序替换调用它的程序      

   区别:

   fork:创建一个新的进程,产生一个新的PID

  exec启动一个新的程序,替换原有的进程,因此进程的PID不会发生改变   ............俗称  借尸还魂


进程的等待: #include <sys/types.h>              #include <sys/wait.h>


 pid_t wait(int   status)


功能: 阻塞该进程,直到其某个子进程退出。

0 0
原创粉丝点击