进程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的子进程。

相关推荐
测试界的小码农2 小时前
【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】
linux·运维·服务器
一条破秋裤4 小时前
【1114】【并发控制】【笔记】
linux
Star(up up up)5 小时前
Redis Windows 安装教程:使用Windows 的 Redis 压缩包
redis·笔记·学习·程序人生·云原生·学习方法·改行学it
2035去旅行5 小时前
ADB的底层原理
linux·adb·嵌入式·arm·soc
武子康6 小时前
单卡 A6000 跑 Qwen-Drive:怎样留下可比较的第一条基线?
linux·人工智能·深度学习
女神下凡6 小时前
芯参谋(107):杰理AC_中科蓝讯_开发指南
linux·服务器·网络·单片机·嵌入式硬件
落羽的落羽6 小时前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习
乌暮8 小时前
Spring AOP 与 Spring 事务:用大白话彻底理解原理与实践
java·数据库·spring boot·后端·sql·学习·spring
爱和冰阔落10 小时前
【Linux网络】TCP 半包粘包怎么解决?从长度报头、JSON 拆包到网络计算器完整实战
linux·运维·网络·tcp/ip
蒸蒸yyyyzwd12 小时前
从邓明学习的后端笔记
笔记·学习