【linux进程概念】
目录:
- 冯诺依曼体系结构
- 操作系统
- 进程
- 基本概念
- 描述进程-PCB
- task_struct-PCB的一种
- task_ struct内容分类
- 组织进程
- 查看进程
- fork()函数
冯诺依曼体系结构
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系,包括输入设备、存储器、输出设备、运算器和控制器。所以,我们所认识的计算机,都是有一个个的硬件组件组成:
输入设备:包括键盘, 鼠标,扫描仪, 写板等
中央处理器(CPU):含有运算器和控制器等
输出设备:显示器,打印机等
这里的存储器指的是内存不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。一句话,所有设备都只能直接和内存打交道。
操作系统
概念:
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS),简单来说就是一个进行软硬件资源管理的软件,笼统的理解,操作系统包括进程管理,内存管理,文件管理,驱动管理,其他程序还有(例如函数库,shell程序等等)。
设计OS的目的:
与硬件交互,管理所有的软硬件资源为用户程序(应用程序)提供一个良好的执行环境。
定位:
在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件。这里的管理就是通过合理的软件管理资源,为用户提供良好的高效的执行环境。
进程
概念:进程是程序在某个数据集合上的一次运行活动,也是操作系统进行资源分配和保护的基本单位。
基本概念
书本概念:程序的一个执行实例,正在执行的程序等
内核观点:担当分配系统资源(CPU时间,内存)的实体
描述进程-PCB
进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。我们称之为PCB(process control block),Linux操作系统下的PCB是: task_struct。
task_struct-PCB的一种
在Linux中描述进程的结构体叫做task_struct。task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。
task_ struct内容分类
标示符: 描述本进程的唯一标示符,用来区别其他进程。
状态: 任务状态,退出代码,退出信号等。
优先级: 相对于其他进程的优先级。
程序计数器: 程序中即将被执行的下一条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
组织进程
可以在内核源代码里找到它,所有运行在系统里的进程都以task_struct链表的形式存在内核里。
查看进程
在linux下,进程的信息可以通过 /proc 系统文件夹查看:

通过系统调用getpid()函数来可以获取进程标识符:

输入kill命令让这个进程停下来:kill -9 32161

查看./myproc这个文件的进程ID,输入命令:ps ajx | head -1 && ps axj | grep ‘myproc’,注意我们查看之前不要杀掉这个进程否则进程ID就找不到了,因为一个进程每一次被重新启动它就会重新加载到内存,就意味着OS每一次都要给这个进程,相当于重新创建task_struct,重新分配pid。

上图中也可以查看到我们文件./myproc的进程标识符是32161。
fork()函数
fork函数的作用是创建子进程,fork()之后,会有父进程+子进程两个进程在执行后续的代码,fork后续的代码,被父子进程共享,通过返回值的不同,让父子进程执行后续共享代码的一部分!

图中写了个两个死循环,为什么这两个循环能同时跑起来呢?因为我们调用fork()函数之后就变成了两个执行流,父子进程同时在跑,这就是多进程!

相关文章:
【linux进程概念】
目录: 冯诺依曼体系结构操作系统进程 基本概念描述进程-PCBtask_struct-PCB的一种task_ struct内容分类组织进程查看进程 fork()函数 冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺…...
直击成都国际车展:远航汽车多款车型登陆车展,打造完美驾乘体验
随着市场渗透率日益高涨,新能源汽车成为今年成都国际车展的关注焦点。在本届车展上,新能源品牌占比再创新高,覆盖两个展馆,印证了当下新能源汽车市场的火爆。作为大运集团重磅打造的高端品牌,远航汽车深度洞察高端智能…...
android nv21 转 yuv420sp
上面两个函数的目标都是将NV21格式的数据转换为YUV420P格式,但是它们在处理U和V分量的方式上有所不同。 在第一个函数NV21toYUV420P_1中,U和V分量的处理方式是这样的:对于U分量,它从NV21数据的Y分量之后的每个奇数位置取数据&…...
使用Nacos与Spring Boot实现配置管理
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
初识【类和对象】
目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 5.类的作用域 6.类的实例化 7.类的对象大小的计算 8.类成员函数的this指针 1.面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的…...
软考高级系统架构设计师系列论文八十六:论企业应用集成
软考高级系统架构设计师系列论文八十六:论企业应用集成 一、企业应用集成相关知识点二、摘要三、正文四、总结一、企业应用集成相关知识点 软考高级系统架构设计师系列之:企业集成平台技术的应用和架构设计二、摘要 2022年10月,我参加了***车站综合信息平台项目的开发,承…...
HarmonyOS ArkUI 属性动画入门详解
HarmonyOS ArkUI 属性动画入门详解 前言属性动画是什么?我们借助官方的话来说,我们自己简单归纳下 参数解释举个例子旋转动画 位移动画组合动画总结 前言 鸿蒙OS最近吹的很凶,赶紧卷一下。学习过程中发现很多人吐槽官方属性动画这一章比较敷…...
基于XGBoots预测A股大盘《上证指数》(代码+数据+一键可运行)
对AI炒股感兴趣的小伙伴可加WX:caihaihua057200(备注:学校/公司名字方向) 另外我还有些AI的应用可以一起研究(我一直开源代码) 1、引言 在这期内容中,我们回到AI预测股票,转而探索…...
5G NR:PRACH频域资源
PRACH在频域位置由IE RACH-ConfigGeneric中参数msg1-FrequencyStart和msg1-FDM所指示,其中, msg1-FrequencyStart确定PRACH occasion 0的RB其实位置相对于上行公共BWP的频域其实位置(即BWP 0)的偏移,即确定PRACH的频域起始位置msg1-FDM的取值…...
设计模式——组合模式
什么是组合模式 组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以…...
get属性是什么?有什么用?在什么场景用?get会被Json序列化?
在JavaScript中,对象的属性不仅可以是数据属性(即常规的键值对),还可以是访问器属性(accessor properties)。访问器属性不包含实际的数据值,而是定义了如何获取(get)和设…...
这可能是你看过最详细的 [八大排序算法]
排序算法 前置知识 [排序稳定性]一、直接插入排序二、希尔排序三、直接选择排序四、堆排序五、冒泡排序六、快速排序七、归并排序八、计数排序(非比较排序)排序复杂度和稳定性总结 前置知识 [排序稳定性] 假定在待排序的记录序列中,存在多个…...
docker的安装
CentOS7 安装 Docker 安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 添加下载源 yum-config-manager --add-repo http://mirrors.aliyun.com/…...
【业务功能篇75】微服务项目环境搭建docker-mysql-redisSpringCloudAlibaba
项目环境准备 1.虚拟机环境 我们可以通过VMWare来安装,但是通过VMWare安装大家经常会碰到网络ip连接问题,为了减少额外的环境因素影响,Docker内容的讲解我们会通过VirtualBox结合Vagrant来安装虚拟机。 VirtualBox官网:https:/…...
学习笔记|认识数码管|控制原理|数码管实现0-9的显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第九集:数码管静态显示
文章目录 1.认识数码管2.控制原理十进制转换为任意进制其它进制转十进制 3.数码管实现0-9的显示1.用数组定义0-9的内码段码跟位码的区别2.尝试用延时实现0-9的循环显示3.用按键控制数字的加或者减。 总结课后练习: 1.认识数码管 数码管按段数可分为七段数码管和八段…...
CentOS 7/8 firewall 转发端口
#开启系统路由模式功能 echo net.ipv4.ip_forward1>>/etc/sysctl.conf sysctl -p #开启firewalld systemctl start firewalld 打开防火墙伪装IP # 检查是否允许伪装IP,返回no表示没开启,反之开启伪装IP firewall-cmd --query-masquerade #设置…...
mysql自动备份脚本
备份脚本 #!/bin/bash #author cheng #mysql数据自动备份 mysql_user“root” mysql_password“passwprd” mysql_host“localhost” mysql_port“3306” mysql_charset“utf8mb4” #备份文件存放地址(根据实际情况填写) backup_location/usr/cheng/msg_manager/sql #是否删…...
VUE笔记(九)vuex
一、vuex的简介 1、回顾组件之间的通讯 父组件向子组件通讯:通过props实现 子组件向父组件通讯:通过自定义事件($emit)方式来实现 兄弟组件之间的通讯:事件总线($eventBus)、订阅与发布方式来实现 跨级组件的通讯…...
Webpack高频面试题
Webpack高频面试题 1 谈谈你对webpack的看法 现在的前端网页功能丰富,特别是SPA(single page web application 单页应用)技术流行后,JavaScript的复杂度增加和需要一大堆依赖包,还需要解决Scss,Less……新…...
数字基带传输系统
文章目录 前言一、数字基带系统基本组成二、基本码型1、数字基带信号2、6 种基本码型 三、数字基带信号的频谱特性四、数字基带信号选码1、原则2、常用的传输码型①、AMI 码(传号交替反转码)②、 H D B 3 HDB_3 HDB3 码(3 阶高密度双极性码…...
Azure ML算法速查表:面向工程交付的算法选型决策地图
1. 这张“Azure ML算法速查表”到底是什么,又为什么值得你花时间细看?我第一次在客户现场看到这张表,是在一个凌晨三点的模型选型评审会上。客户CTO把一张A3纸拍在桌上:“别再扯XGBoost和LightGBM的区别了,我要知道——…...
深入理解 MCP 协议:原理、架构与实战开发指南
前言 2024年底 Anthropic 发布了 MCP(Model Context Protocol),短短几个月内 GitHub 星标突破 8 万。这个协议解决了一个核心问题:如何让大模型标准化地连接外部工具和数据源。 本文将从协议设计原理出发,手把手带你实…...
开源架构企业管理软件适合哪些类型的公司
开源架构企业管理软件适合哪些类型的公司 很多人一听到“开源架构”,第一反应是技术人员、开发者、极客项目。放到企业管理软件里,其实开源架构更像一种长期可控的建设方式:企业能看见系统如何运行,也能在需要时改造它。 对中小…...
工作中常用的注解梳理
注解是贴在类、方法、变量上的标记标签,以开头,本身不执行业务代码。作用主要有以下几点:代码标识说明替代配置文件自动生成代码框架识别驱动数据约束与校验单元测试序列化转换日常工作中常用的注解主要有以下十三类:JDK原生注解J…...
【性能评估】信标辅助双跳认知无线电无线中继选择方案的性能评估研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
互联网大厂 Java 求职面试实战:音视频场景中的技术挑战
互联网大厂 Java 求职面试实战:音视频场景中的技术挑战在这个互联网飞速发展的时代,越来越多的求职者走进了大厂的面试现场。今天,我们将跟随一位搞笑的程序员燕双非,来看看他在面试中的表现,以及他如何应对各种技术问…...
CyberChef:浏览器端数据处理的模块化架构解析
CyberChef:浏览器端数据处理的模块化架构解析 【免费下载链接】CyberChef The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis 项目地址: https://gitcode.com/GitHub_Trending/cy/CyberChef CyberChef 是一款…...
终极开源RGB灯光控制指南:一个软件统一管理所有硬件设备
终极开源RGB灯光控制指南:一个软件统一管理所有硬件设备 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcProgrammer1/OpenRGB. Rele…...
Mac Mouse Fix终极指南:将普通鼠标打造成专业级触控板体验
Mac Mouse Fix终极指南:将普通鼠标打造成专业级触控板体验 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix Mac Mouse Fix是一款专为…...
独立开发者如何一站式管理多个AI项目的API密钥
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何一站式管理多个AI项目的API密钥 对于独立开发者而言,同时维护多个AI应用项目是常态。每个项目可能对接不…...
