• <Linux系统复习>进程概念


    一、本章重点

    1、冯诺依曼体系结构

    2、进程的概念

    3、getpid和getppid

    4、查看进程

    5、命令进程的父进程

    6、用fork创建子进程

    01 冯诺依曼体系结构

     冯诺依曼体系结构的五大组成部分:输入设备、输出设备、存储器、运算器、控制器。

    其中运算器和控制器组成cpu。(这里的存储器就是我们常说的内存)

    常见的输入设备:键盘、鼠标、麦克风、磁盘、网卡、摄像头等

    常见的输出设备:显示器、音响、磁盘、网卡、显卡、打印机等

    黑线代表数据信号、红线代表控制信号

    cpu不与输入设备和输出设备直接进行数据信号上的交互,但可以直接进行控制信号上的交互。

    同时可以看出该结构是以存储器为中心的,任何数据信号的交互都得通过存储器,这种有了存储器的计算机硬件结构可以大大提高cpu的利用效率。

    介绍一下:从硬件角度出发,用qq发送“一段文字”给你的好友时,数据的流向大概是怎样的?

    02 进程概念

    01、进程的概念

    进程简单来说就是一个运行起来的程序

    02、getpid和getppid

    pid作用:标识进程的唯一性,类属于学号、身份证这样的概念。

    ppid:代表父进程的pid。

    03、查看进程

    1、用ps命令

     2、查看/proc/目录

    /proc目录下记录了实时进程的信息,可通过/proc/的方式找到当前进程对应的文件夹。

    我们目前只关系下面这两个文件

    cwd:代表当前工作目录

    exe:代表该进程对应的磁盘文件

    cwd需要仔细谈谈,看下面一段代码试验:

     当我们运行./test的时候,我们发现在当前工作目录下生成了a.c

    具体什么是当前工作目录呢?

     我们发现,当我们进入demo,用../test的方式执行test,发现在demo目录下生成了a.c,说明当前工作目录就是

    3、用top命令

    04 为啥进程的ppid是不变的?

     因为ppid是bash的pid,它负责解释你的命令文件,你所执行的命令都是bash的子进程。

    运行原理:bash不断的创建子进程,然后该子进程利用进程替换的方式来执行你的命令文件的代码。当子进程执行完毕或者被终止结束掉,父进程bash就会重新创建新的子进程来帮你继续执行下面的命令。

    05 用fork创建子进程

     fork是一个系统调用,常用来创建一个子进程,创建后的子进程的代码拷贝自父进程,数据则会发生写实拷贝(进程的独立性)。

     试验结果:打印了两次,且id的值不同。

    问题一:fork如何做到返回两个值?

    fork在准备返回之前就已经生成了子进程的pcb,cpu执行父进程的代码时,返回子进程的pid,cpu执行子进程的代码时就返回0。后续在讲解进程虚拟地址空间和物理地址的关系会详细介绍id有两个不同值的问题。

    问题二:fork为啥给父进程返回子进程的pid,给子进程返回0。

    父进程可能有多个子进程,给父进程返回子进程的pid方便父进程管理子进程,给子进程返回0,子进程只有一个父亲。返回大于等于0的数字,代表fork调用成功,如果子进程需要父进程的pid,可通过getppid()来获取。

  • 相关阅读:
    区间合并算法的实现
    Ubuntu20.04 (VMware 虚拟机) fdisk -l 权限不够的解决办法
    Day45-SpringBoot仿牛客网社区开发01-项目介绍
    字符集 - java案例分析
    ​人机交互中的反馈与前馈
    小小博客项目(servlet实战演练)
    Postman报错:Error:‌ NETERR:‌ getaddrinfo ENOTFOUND localhost
    day34 Set
    zabbix二级目录反代部署
    DeepLinQ 用于隐私保护的数据共享的分布式多层分类账本
  • 原文地址:https://blog.csdn.net/m0_62171658/article/details/127309180