linux进程相关内容

版权声明:[email protected] https://blog.csdn.net/qq_271334644/article/details/86359135

操作系统:管理系统调用接口
                进程:进程就是运行起来的程序,站在操作系统的角度就是pcb,Linux是task_struct结构体
                查看: /proc   ps -ef   ps aux  getpid()
                创建: fork--复制
状态:阻塞 就绪 运行
         liunx下的进程状态:运行 R(task_runing)、可中断睡眠(S 可随时被唤醒)、
        不可中断睡眠(D 使用特殊手段唤醒)、停止 T、僵尸 Z;死亡和追踪(不常用)
        终止一个进程命令kill pid;kill -9 pid强制终止

 僵尸进程:处于僵尸状态的进程
          危害:资源泄漏
          产生:子进程先于父进程退出,操作系统通知父进程,但是父进程没有管,然而操作系统不敢
         擅自释放子进程的资源(一旦释放就没地方保存退出原因),因此子进程就成了僵尸进程
         处理:退出父进程
          预防:进程等待
孤儿进程: 父进程先于子进程退出子进程将称为孤儿进程,孤儿进程的父进程将变为1号init进程
            并且孤儿进程退出,不会产生僵尸进程
守护进程/精灵进程:特殊的孤儿进程
    
进程优先级: 数字
        功能:决定cpu资源的优先分配权
        优先级查看:ps -l 
        优先级无法直接修改,但是可是设置NI的值进而对优先级做出修改
        真正优先级计算公式 PRI=PRI+NI 
        修改命令: nice -n 5    renice
        nice取值范围; -20——19

进程的相关概念:竞争性    独立性    并发性      并行性

环境变量:用于设置系统运行环境参数的变量---全局特性
    查看: env   set    echo $NAME
    声明一个环境变量 :export  myval=1000 声明为环境变量
                       myval=1000  局部变量
    删除一个环境变量:  unset
    作用:让程序运行更加高效,环境变量具有全局特性
    如何在代码中获取环境变量:
        getenv()    main第三个参数   全局变量 char**environ
        
        
程序地址空间:
    每个程序都有自己的程序地址空间
    内存地址:内存区域的编号
    我们常说的程序地址空间,实际上是一个进程的虚拟地址空间,目的是为了告诉进程
    每个进程都有一个完成的连续的内存,但是真正一个进程使用的内存经过页表映射之后
    可能智能使用很少的一部分物理地址

    
    页表:记录虚拟地址与物理地址的映射关系,并且对内存进行访问控制
                写时拷贝技术:---提高创建子进程的效率
    分页式内存管理:提高内存利用率,内存访问控制
    
进程调度:cpu调度进程调度的就是pcb
    大O(1)调度算法

    
        

猜你喜欢

转载自blog.csdn.net/qq_271334644/article/details/86359135