linux操作系统之进程相关_下

  • 1. 进程的概念

    • 1.程序是一段存放在外存中代码的集合

    • 2.进程是一个程序动态执行的过程,包括创建,调度,消亡

    • 3.进程是一个动态过程(暂时),而程序是静态的(永存)

  • 2.进程的创建

    • 进程的创建

      • 进程创建后,系统分配独立的4G空间

      • 进程空间分为文本区,数据区,堆区,栈区和内存区

  • 3.进程的调度

    • 保障多个任务同时执行(宏观并行,微观串行)

    • 调度算法:先来先执行;短作业优先;时间轮转算法

    • pcb块(内核区):保存进程标志符,当前工作路径,保护现场信息,记录位置

  • 4.进程状态

    • 就绪态

      • ./a.out 进入就绪态,执行态时间片结束回到就绪态

    • 执行态

      • CPU调度 进入执行态

    • 阻塞态

      • 执行态输出io事件进入阻塞态,io事件到达进入就绪态

  • 5.进程相关命令

    • ps -aux

      • 查看进程状态

      • ps -aux | grep ./a.out

    • top

      • 根据CPU占有率查看信息

    • ps -ef

      • 查看当前时刻进程信息

    • pstree

      • 查看进程之间的关系

      • ps -p 查看所有关系

      • ps -sp +id号 查看ID对应进程关系

      • kill

        • 给进程发送信号

        • kill + 进程数字名

  • 6.进程创建关系

    • 父子进程

      • 父进程

        • 创建新进程的进程称为新进程的父进程

      • 子进程

        • 被创建的进程称为原进程的子进程

        • to be continue...

  • 7.进程相关接口

    • fork

      • pid_t fork(void);

        • 功能:通过函数从当前进程克隆一个同名新进程,新进程执行过程是从forkhanshu之后执行 成功父进程返回子进程的pid,子进程返回0

          • 一次调用,会返回两次

          • 父子进程运行顺序不确定,变量不共享 子进程会复制父进程的0~3g空间和父进程内核中的pcb,但id号不同

    • getpid

      • pid_t getpid(void);

        • 获得调用该函数进程的pid

    • getpid

      • pid_t getppid(void);

        • 获得调用该函数进程的父进程pid号

    • exit

      • void exit(int status);

        • 进程结束

        • 1. C库函数,结束之前会清理IO缓冲区 2.关闭所有的流及打开的文件 3.执行注册的退出清理函数

    • atexit

      • int atexit(void (*function)(void));

        • 注册一个进程退出前执行的函数,一般做清理工作

  • 8.僵尸进程

    • 进程执行结束,空间没有被回收

    • 子进程运行结束,父进程没有回收子进程空间

    • 如何避免产生僵尸进程: 1.可以使用wait或waitpid回收子进程空间 2.让父进程先结束,子进程后结束,产生孤儿进程,由操作系统帮忙回收资源

    • 孤儿进程(一般为后台进程):当前进程的父进程结束,当前进程称为孤儿进程,父进程变成systemd(进程组组长)

  • 9.进程回收

    • wait

      • pid_t wait(int *status);

        • 回收子进程空间

        • 阻塞等待回收子进程资源状态 实现同步功能

      • WIFEXITED(status) 检测进程是否正常结束

      • WEXITSTATUS(status) 获得进程结束时返回的值

      • WIFSIGNALED(status) 检测进程是否被信号杀死

      • WTERMSIG(status) 获得杀死进程的信号编号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值