进程知识点总结(liunx)

一、进程概念:

  • 定义:(分配系统资源的基本单位)

    程序的一个执行实例,正在执行的程序;
  • 具体内容:(创建PCB、创建页表、维护虚拟地址到物理地址的映射)

    PCB:为方便操作系统对进程的管理,建立的包含进程所有属性的结构体;(Linux 下 task_struct结构体)
               (PID、进程状态、优先级、内存指针)
    页表:保证虚拟地址空间映射到物理地址空间;
    虚拟地址空间:通过页表映射到物理地址空间;

  • 进程状态

    R运行状态:并不意味着一定在运行中,表明进程在运行中或者在运行队列中
    S睡眠状态:表明进程在等待事件完成;(睡眠可中断)
    D磁盘休眠状态:即不可中断状态,通常会等待IO结束;
    T停止状态:可以通过SIGSTOP信号给进程来停止,这个被暂停的进程可以发送SIGCONT信号让进程继续运行;
    X死亡状态:这个状态只是一个返回状态,不会再任务列表里看到这个状态;
    Z僵尸进程:进程死亡后仍保留部分数据的进程(父进程等待回收);(内存泄漏问题)
    孤儿进程:父进程提前退出;(被1号进程领养,也会被回收)
     
  • 进程优先级:

    CPU资源分配的先后顺序,即进程的优先级(priority)
    优先级搞得进程有优先执行的权利 ,配置进程优先级可以改善系统性能;
    UID(执行者)、PID(进程代号)、PPID(父进程代号)、PRI(优先级)、NI(nice 值)
    真正优先级=优先级+NI   (值越小,越先执行)
  • 特点:

    并发性:在同一个时间段内,有多个任务同时推进。
    并行性:在任何时刻,有多个任务同时推进。
    独立性:一个进程都会有独有的套PCB、页表及虚拟地址,运行过程不受其他进程影响。(代码共享单只有可读性,数据资源写时拷贝)
    竞争性:多个进程,但CPU资源有限。
     

二、进程操作:

  • 创建进程:fork 

    1、函数:
        #include<unistd.h>
         pid_t fork(void)

    2、返回值:
         子进程返回0;
          父进程大于0(即子进程pid);
          创建失败小于0;

    3、fork之前,父进程独立执行,fork之后,父子两个执行流分别执行;(执行顺序由调度器决定)
     
  • 进程终止:

    1、退出结果分三种情况:
          代码运行完毕,结果正确;
          代码运行完毕,结果不正确;
          代码异常终止;

    2、退出方式:
         从main返回;
         调用exit;(void exit(int status),关闭所有打开的流,所有的缓存数据均被写入)关闭空闲进程
         _exit;(关闭所有进程)
         异常退出:Ctrl+c  信号终止
  • 进程等待:

    1、wait方法:
        pid_t  wait(int *status)
        返回值:成功返回pid,失败返回-1。
        参数:输出型参数,获取子进程退出状态,不关心则设置成NULL;
    2、waitpid方法:
        pid_t waitpid(pid_t pid,int *status,int options);
        返回值:
                当正常返回时候waitpid 返回收集到的子进程的进程ID;
                如果设置了WNOHANG,而调用waitpid发现没有已退出的子进程可收集,则刚返回0;
                如果调用中出错,则返回-1,这时errno会被设置成相应的值一指示错误所在;
    3、获取子进程status:
           输出型参数,由操作系统填充;
           如果传递NULL,表示不关心进程的退出状态信息;
           子进程会根据参数,将子进程的退出信息反馈给父进程;
           status 不能简单的当作整型来看待,可以当作位图看待。       
    4、进程阻塞:
          进程由于检测某一tiaojian条件不就绪而被挂起的现象;
          挂起:将PCB从R队列到某个非R队列;
          唤醒:将PCB从非R队列到R队列;

(三)守护进程:          
             
系统服务进程不受用户登录注销的影响,会一直运行的进程;
              (自成进程组、自成会话、自成作业)——特殊孤儿进程

             

 

 









 

阅读更多
换一批

没有更多推荐了,返回首页