进程1学习

1. 进程描述-PCB

  我的理解:进程PCB是放进程属性的一个结构体,也就是说在计算机中任何一个事情,都是先描述,在组织,那么先用结构体**(PCB)**把所描述进程的属性先放到结构体描述出来,再组织起来。Linux操作系统PCB叫:task struct

2.了解基本操作

  上面写代码,生成myproc,./myproc运行起来,操作系统创建PCB,并且CPU调用指令,就跑起来了一个进程。我们用ps axj|head -1 && ps axj | grep myproc | grep - v grep我们可以查看进程信息。

  上面有个PID:进程ID,PPID:父进程ID,gepid,getppid分别获取这两个。

  在/proc这个目录下,每次启动1个进程就会创建一个进程所对应的目录,来管理这个进程。

  理解两个属性:exe:是可执行文件所在的目录。cwd:current work direction,当前的工作目录,也就是说我们用程序生成文件等时,会默认在这个目录下,可用chdir这个函数来设置。

  我们生成一个可执行程序,运行,创建子进程,在linux中,本质是由bash的进程来创建的。

3.创建进程

   pid_t fork(void)函数创建一个进程,也就是说向操作系统申请,那么会创建进程PCB,然后fork后面的代码会共享,然后把两个进程的数据会各自存储。给父进程返回子进程的PID,给子进程返回0.

  我们生成了一个可执行proc,fork之后,fork后面的代码父子进程代码会共享,但是数据不会共享,我们要理解,执行./proc之后,bash进程就会创建proc进程,这个proc进程运行起来之后,运行到fork代码,就会向操作系统申请在创建一个进程,fork之后的代码就会共享,由于父子进程都有返回值,因此id>0,父进程执行代码,id==0,子进程执行代码。

  上面代码创建10个进程,2369为可执行程序进程,其它都是2369的子进程。

相关推荐
AlfredZhao8 小时前
用脚本按顺序执行初始化 DB 的 SQL 文件
linux
瑞克-桑切斯9 小时前
企业生产环境:https部署+nginx高可用(业务不中断)
linux·服务器·数据库
浩浩测试一下15 小时前
Linux 底层知识点 1
linux·运维·服务器
Escalating_xu16 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
撩得Android一次心动17 小时前
Jetpack Compose 知识点整理2【个人用】
android·笔记·学习·kotlin·compose
忆挽篱笙歌17 小时前
环境变量,本地变量
linux·运维·服务器
dadaobusi18 小时前
学习:灵犀指令集
学习
xhyu6119 小时前
【学习笔记】图像质量评估方法 (5.生成图像是否符合用户要求)
笔记·学习·计算机视觉
吹什么轩19 小时前
linux系统复习:僵尸进程与孤儿进程
linux·运维·php
殷忆枫20 小时前
告别依赖地狱!在 Ubuntu 上用 Docker 极速部署 Home Assistant 与 MQTT,并接入 Siri 与嵌入式 C 终端
linux·ubuntu·docker