进程是一个具有一定独立功能的程序的一次运行活动。
    程序是静态的代码,进程是动态的。
    进程特点:动态性(相对于程序来说)、并发性(多个进程同时执行)、独立性(进程之间互不干扰)、异步性(进程执行有先后顺序)
    进程状态:就绪(进程刚被创建还没有分到CPU时间片,进程时间片用完)、阻塞(IO请求未完成)、执行(就绪态经过进程调度进入执行态)
    进程ID(PID)是标识进程的唯一数字。
    父进程ID(PPID)
    启动进程的用户的ID(UID)
    进程互斥:有若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了该资源为止。
    临界资源
    临界区
    进程同步:一组并发的进程按照一定的顺序执行的过程。具有同步关系的一组并发进程称为合作进程,合作进程间互相发送的信号称为消息或者事件。
    进程调度:按照一定的算法,从一组待运行的进程中选出一个来占有CPU运行。
    调度方式:先来先服务、短进程优先、高优先级优先、时间片轮转
    linux操作系统中,优先级数值越大优先级越高,其他操作系统要视具体情况。
    死锁:多个进程因竞争资源形成一种僵局,如果没有外力作用,这些进程将永远不能向前推进。

    fork创建子进程,被调用一次,却返回两次,可能有三种不同的返回值:父进程中返回子进程PID,子进程中返回0,出错返回一个负值。
    fork之后,父子进程共享代码。子进程的数据空间和堆栈空间都会从父进程得到一个拷贝,而不是共享。
    fork和vfork的区别:
    fork:子进程拷贝父进程的数据段
    vfork:子进程和父进程共享数据段
    fork:父子进程执行顺序不确定
    vfork:子进程先运行,父进程后运行
    exec函数族用被执行的程序替换调用它的程序。fork创建一个新进程,产生一个新的PID,exec函数族启动一个新程序,替换原有的进程,进程的PID不变。
    int system(const char* string)函数,调用fork产生子进程,由子进程来调用/bin/sh -c string来执行参数string所代表的命令。
    pid_t wait(int* status)阻塞该进程,直到其某个子进程退出。

Posted on 2011-11-27 10:53  SomethingReview  阅读(195)  评论(0)    收藏  举报