进程概念:
运行起来的程序;但是在操作系统层面,pcb(进程控制块)就是进程,linux下pcb是一个结构(task_struct)
cpu 的分时机制:轮循去调度运行一个个的程序,目的就是为了让所有的程序能同时推进
时间片:cpu在一个程序上运行的时间段
pcb中的描述信息: 内存指针,程序计数器,上下文数据,标识符PID,进程状态,进程优先级(cpu资源的优先分配权)
文件的IO状态信息,记账信息
进程查看:
ps -ef/-aux pid_t getpid(void) /proc/
进程创建:
fork-------- pid _t fork(void) ------- 通过复制调用进程创建一个新的子进程
vfork---------创建子进程,共用同一个虚拟地址空间
创建子进程的流程------写时拷贝技术;
创建子进程的意义:分摊任务处理压力;
如何让子进程完成其他任务:分辨出父子进程
返回值:
对于父进程来说,fork返回值是子进程的pid;创建子进程失败返回-1
对于子进程来书,fork返回值是0
用户通过fork的返回值不同对父子进程运行流程进行分流
复制:操作系统通过复制父进程创建子进程,因此父子进程“数据独有,代码共享”
进程状态: 运行,就绪,阻塞
Linux 下进程的状态: 运行R 可中断休眠S 不可中断休眠D (磁盘休眠状态) 停止T 僵死Z
僵尸进程:处于僵死状态的进程---资源泄露
僵尸进程产生原因:
子进程先于父进程退出,因为要保留退出原因,因此操作系统不能直接释放所有资源,通知父进程获取退出原因,
允许操作系统释放资源,但是父进程没有关注这个通知导致子进程退出后无法释放所有资源,处于僵死状态,成为僵尸进程
僵尸进程的危害:资源泄漏
如何让避免:进程等待
处理方式:退出父进程
孤儿进程: 父进程先于子进程退出,子进程成为孤儿进程,运行在后台,父进程成为1号进程(init--孤儿院)
守护进程/精灵进程 : 特殊的孤儿进程-----
环境变量: 存储系统运行环境参数的变量
env ----查看所有的环境变量 若指定某一个环境变量----env | grep +该环境变量
set----- 也可以查看,但查看的不仅仅是环境变量,也包含普通变量 set | grep +该变量
echo $PATH ----- 查看PATH这个环境变量
export ------ 声明或设置环境变量
unset------- 删除环境变量
常见环境变量: HOME PWD SHELL PATH
环境变量特性:全局特性(继承)
shell 终端下所运行的进程能够获取所有环境变量,但不能获取普通变量
环境变量在代码中的获取:char* getenv(char*name)
main函数的第三个参数 int main(int argc,char*argv[],char*env[])
extern char**enviornment; 声明全局变量
环境变量的使用场景:通常是父进程通过子进程设置环境变量来达到向子进程传递数据的功能
进程创建和僵尸进程

最新推荐文章于 2023-03-07 23:54:30 发布