3.王道_进程

3. 进程

3.1 背景简介

在这里插入图片描述

3.2 进程的概念

在这里插入图片描述

3.3 虚拟CPU和虚拟内存

虚拟CPU

在这里插入图片描述

调度器和优先级

在这里插入图片描述

虚拟内存

在这里插入图片描述

进程地址空间

在这里插入图片描述
在这里插入图片描述

内核态和用户态

在这里插入图片描述

3.4 进程管理

内核管理进程信息

在这里插入图片描述
在这里插入图片描述

进程标识符PID

在这里插入图片描述

进程的用户ID和组ID(不懂-------------------------------)

在这里插入图片描述
在这里插入图片描述

passwd命令的设计原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

sudo的实现原理

在这里插入图片描述

文件特殊权限

在这里插入图片描述
在这里插入图片描述
粘滞位(Stickybit),或粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。

3.5 进程的状态

在这里插入图片描述

3.7 进程相关的命令

在这里插入图片描述

ps

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

top

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

优先级和nice值

在这里插入图片描述

kill命令和任务控制

在这里插入图片描述

crontab设置计划任务

在这里插入图片描述

3.8 使用系统调用创建进程

system函数

在这里插入图片描述
在这里插入图片描述

fork函数

在这里插入图片描述

fork的实现原理

在这里插入图片描述

fork的资源

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 加入斜杠
    在这里插入图片描述
fork的写时复制

在这里插入图片描述

fork对打开文件的影响

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

exec函数族

在这里插入图片描述

在这里插入图片描述

3.9 进程控制

孤儿进程

在这里插入图片描述

僵尸进程

在这里插入图片描述

wait和waitpid

在这里插入图片描述
在这里插入图片描述

注意:返回值应设置为0-255之间,因为wait返回值的相关函数的原理
在这里插入图片描述
在这里插入图片描述

进程的终止

return只能再main函数中才能终止程序执行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
exit会清空缓冲区

在这里插入图片描述
在这里插入图片描述

守护进程

大致上来说,所谓守护进程(daemon),就是在默默运行在后台的进程,也称作“后台服务进程”,通常守护进程的命名会以d结尾。为了更准确地把握守护进程的概念,需要先了解一些其他的概念。

终端

终端是登录到Linux操作系统所需要的入口设备。终端可以是本地的,也可以是远程的。当操作系统启动的时候,init进程会创建子进程并使用 exec 来执行getty程序,从而打开终端设备或者等待远程登,然后再使用 exec 调用login程序验证用户名和密码。

进程组

在这里插入图片描述
在这里插入图片描述

  • setpgid(0,0)将本自己设置组长,只有fork后的子进程才可以,因为父进程已经是组长了,组长不能修改组ID

在这里插入图片描述

会话

  • 会话是通过终端控制的,一个会话最多只能连接一个终端。
    在这里插入图片描述
    在这里插入图片描述

  • 由于组长不能更换进程组,所以不能调用setsid
    在这里插入图片描述

  • 一个会话中最多只有一个前台进程组。

  • 终端断开,对应的会话中的进程终止

守护进程的创建流程****

脱离启动环境的进程。一般作为服务端。
所有的守护进程都是孤儿进程。
在这里插入图片描述


#include<54func.h>

void Daemon()
{
    // 新建会话
    if(fork())
    {
        exit(0);   // 从这里可以看到守护进程一定是一个孤儿。
    }
    setsid();
    // 关闭设备
    for(int i =0;i<64;i++)
    {
        close(i);
    }
    // 修改环境属性
    chdir("/");
    umask(0);
}
int main()
{
    Daemon();
    for(int i =0;i<20;i++)
    {
        syslog(LOG_INFO,"I am daemon ,i = %d\n",i);
        sleep(2);
    }
    return 0;
}

守护进程的日志

在这里插入图片描述

  • 浏览器是一个多进程app。好处是一个崩了,宁外一个不回挂。
  • nginx也是一个多进程服务器。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值