【Linux】进程

目录

  • 谈谈硬件
    • 冯诺依曼体系结构
    • 数据流向
  • 谈谈软件(操作系统)
    • 什么是操作系统?
    • 为什么需要操作系统?
    • 操作系统如何管理?
  • 谈谈进程
    • 管理进程
    • PCB
    • 查看进程
      • ps ajx
      • proc
      • kill -9 PID
    • 系统调用
      • getpid()
      • getppid()
      • fork()
    • 进程状态
      • linux下的进程状态
      • R
      • S
      • D
      • T/t
      • X
      • Z
    • 进程优先级
      • 什么是优先级?
      • 为什么要有优先级?
      • 设置了什么样的优先级?
        • 查看优先级
        • 更改优先级
    • 环境变量
      • $PATH
      • $HOME
      • $SHELL
      • 查看环境变量

谈谈硬件

冯诺依曼体系结构

存储器:指的是内存。
输入设备:键盘,鼠标,摄像头,话筒,网卡,磁盘等一些输入数据的东西。
输出设备:显示器,播放器,磁盘,网卡等。输入输出设备叫做外部设备,简称外设。
运算器:对数据进行计算任务(算数运算,逻辑运算)。
控制器:控制计算硬件的流程。运算器和控制器一起叫做中央处理器(CPU)。
这五个都是独立的个体,所以需要一些“线”连接起来,系统总线,IO总线。

数据流向

为什么CPU不直接连接输入输出设备?
因为CPU和输入输出设备的速度差距太大,所以引入一个速度适中的介质作为缓冲,可以把存储器看作是硬件级别的缓冲空间。
在这里插入图片描述
在这里插入图片描述
不过数据并不是单纯串行的,因为CPU和存储器交互的时候,存储器也可以同时和输入输出设备交互,可以把这一条线分成并行的三部分。
在这里插入图片描述
一个程序要运行,必须得先加载到内存中运行。为什么?
因为程序的代码和数据要让CPU去运行,又因为CPU只和内存交互,所以要把程序从外设加载到内存,这也是体系结构规定的。

谈谈软件(操作系统)

什么是操作系统?

操作系统是一款软件,负责管理软硬件资源。
操作系统包括:内核(进程管理,内存管理,文件管理,驱动管理),其他程序(例如函数库,shell程序等等)。
在这里插入图片描述

为什么需要操作系统?

因为需要通过操作系统帮助用户管理好底层的软硬件资源(手段),从而为用户提供一个良好(稳定,高效,安全)的执行环境(目的)。
但是操作系统不相信用户,为了保证自己的数据安全同时也能给用户提供服务,操作系统给用户提供了接口,用户通过接口调用操作系统内部的函数,这叫作系统调用,所以访问操作系统的行为都只能通过系统调用。
用户操作接口比如shell外壳,语言库,指令本质都是直接或间接进行系统调用,只不过多封装了一层。

操作系统如何管理?

操作系统通过对软硬件资源数据的管理来间接实现对软硬件资源的管理,数据由驱动程序提供。
软硬件资源数据太大太多,把它们用结构体描述起来,然后将这些结构体组织成某种数据结构,所以,对这些数据的管理就转化成对这个数据结构的增删改查。先描述,再组织。
在这里插入图片描述

谈谈进程

一个已经加载到内存的程序就叫做进程也叫任务。

管理进程

操作系统可以同时运行多个进程,如何管理进程呢?
先描述,再组织。
程序加载到内存变成进程的时候,操作系统会为该进程创建一个PCB(进程控制块)结构体来描述这个进程,并将里面的属性值初始化。
进程 = 该进程的PCB + 该进程的代码与数据。
操作系统有多个进程就意味着有多个PCB,操作系统这些PCB组织成某种数据结构,通过对数据结构的增删查改来对PCB进行管理从而间接管理进程。

PCB

PCB是指描述进程的东西,在linux下的PCB是task_struct,其他操作系统也会有自己的PCB。
task_struct结构体保存了进程的所以属性。

查看进程

ps ajx

PID:进程唯一ID值。
在这里插入图片描述

proc

proc目录里面存放了进程文件,每当你创建一个进程,这个目录就会创建一个以进程PID为名字的文件。
在这里插入图片描述

kill -9 PID

杀死进程
在这里插入图片描述

系统调用

getpid()

获取调用进程的ID。
在这里插入图片描述

getppid()

获取调用进程的父进程ID。
在这里插入图片描述

fork()

作用是创建一个子进程。
fork给父进程返回子进程的ID,给子进程返回0。
fork函数之后会分裂成两个执行流。
在这里插入图片描述
创建进程有两种方式,./是指令层面的,fork是代码层面的。

为什么给父子进程的返回值不同?给子进程返回0,给父进程返回子进程PID。
因为fork配合循环可以创建多个子进程,父进程想找到某个子进程就需要该进程的PID,而子进程找父进程直接getppid。
另外,创建子进程的目的是让父子进程做不同的事情,也就是让父子进程执行不同的代码块,所以需要fork有不同的返回值进行区分。

fork做了什么?
fork创建了一个子进程,一个进程包含PCB和代码与数据,子进程的PCB就是拷贝父进程的PCB然后修改部分属性,子进程没有代码,所以就指向父进程的代码,这也就是为什么fork之后父子进程代码共享。

fork是怎么做到返回两个值的?
因为fork本身也是函数,里面的return属于父子共享的,父进程会return一次,子进程也会return一次。
在这里插入图片描述

fork返回到一个变量,这个变量怎么做到有不同的内容?
之前提到子进程共享父进程的代码,其实子进程连数据都一起共享,只不过当子进程要修改数据时,操作系统会另开空间保存子进程修改的数据,从而不影响父进程的数据。所以保证了变量有不同的内容,因为这个变量父进程有一个空间,子进程也有一个空间。

进程状态

运行状态
CPU会维护一个运行队列,运行队列管理着PCB,谁到了就去CPU运行,其他的排队。
凡是处在运行队列的进程,它们的状态叫作运行态®,表示可以随时被调度。

阻塞状态
凡是处在等待队列的进程,它们的状态叫作阻塞状态。
每一个设备都有自己的等待队列,比如键盘设备,当某个进程需要读取键盘的数据时,此时键盘没输入,该进程就要在键盘的等待队列中。

挂起状态
当操作系统内存资源不足时,为了节省资源,会把一些正在队列排队的进程进行挂起。
进程排队时,操作系统就只留下对应PCB,把代码和数据放到磁盘中(换出),此时该进程的状态就是挂起状态,当排到该进程时,就把对应的代码和数据从磁盘拿回来(换入)。

linux下的进程状态

在这里插入图片描述

R

R是运行状态,+代表前台运行,也就是说这个进程运行的时候不能输入指令了。
在这里插入图片描述
加一个&可以变成后台运行。
在这里插入图片描述

S

S是阻塞状态,等待某种资源就绪,比如等待键盘输入。
在这里插入图片描述

D

D是深度睡眠,S是浅度睡眠可以响应外部的变化。
D也叫磁盘休眠。
假如你有数据要给磁盘,由于这段时间比较久你需要等待,此时操作系统内存不够把你进程杀了,过了一会,磁盘来反馈了,结果发现等待的进程不见了,那么磁盘数据可能会丢失,所以我们要让进程在等待磁盘写入完毕期间保证这个进程不会被任何人杀掉,这个状态就是D状态。

T/t

T代表暂停状态,给进程发19号信号就是让进程暂停。
S和T的区别,S一定是在等待某种资源,T不一定,可能只是被其他进程控制。
在这里插入图片描述
场景:gdb遇到断点停下,gdb控制目标进程停下。
在这里插入图片描述

X

X表示这个进程死了,意味着要回收资源了。

Z

Z表示僵尸状态。
子进程退出时,如果父进程没有主动回收子进程信息,子进程会进入僵尸状态,子进程的相关资源不会被释放比如PCB。
在这里插入图片描述

孤儿进程
如果子进程在等待父进程回收时父进程先退出了,此时子进程会变成孤儿进程,该进程由操作系统领养,父进程变成1号进程。

僵尸进程的危害
进程的退出状态必须被维持下去,因为他要告诉关心它的进程(父进程),你交给我的任务,我办的怎么样了。可父进程如果一直不读取,那子进程就一直处于Z状态。
维护退出状态本身就是要用数据维护,也属于进程基本信息,保存在task_struct(PCB)中,所以Z状态一直不退出,PCB一直都要维护。
一个父进程创建了很多子进程就是不回收,会造成内存资源的浪费,因为结构体对象本身就要占用内存。
内存泄漏。

进程优先级

什么是优先级?

拿优先级和权限做个对比,优先级表示对于资源的访问,谁先访问谁后访问,权限表示你能不能访问。

为什么要有优先级?

因为资源有限,多个进程之间要竞争。操作系统为了保证良性竞争,所以要确认优先级。
如果不设置合适的优先级会造成某个进程或某些进程长时间得不到CPU资源,该进程代码长时间无法推进,导致该进程饥饿问题。

设置了什么样的优先级?

查看优先级

ps查看进程优先级。
PRI:优先级,数字越小优先级越高。
NI:进程nice值。
一个进程的优先级是PRI = PRI + NI,所以NI越小优先级越高。
NI取值范围:-20到19。
在这里插入图片描述
每次变化old都是80。PRI = 80 + NI
在这里插入图片描述

更改优先级

top + r + pid + 要修改的NI值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

环境变量

$PATH

为什么运行指令不用带./,运行程序就要带./?
在这里插入图片描述
因为有环境变量。echo $PATH查看环境变量,它们都是路径用冒号分隔,当你使用指令时系统会在这些路径一个一个寻找。自己的程序在这些路径里面找不到。
PATH是linux系统的指令搜索路径。
在这里插入图片描述
把自己程序的当前路径加入到环境变量中,这样运行自己的程序就不用加./了,加的时候前面要加美元符合和PATH表示这是在之前的环境变量后面继续添加,不然就变成覆盖了。
在这里插入图片描述
不加./也能跑了。
在这里插入图片描述
不过这种修改是内存级的。

$HOME

shell登录时会识别用户,然后填充对应的HOME环境变量,也就是把自己放在这个目录下。
在这里插入图片描述

$SHELL

shell对应的可执行程序。
在这里插入图片描述

查看环境变量

env
在这里插入图片描述
这个表示保留1000条历史命令
在这里插入图片描述
终端设备,进程默认输出时,输出在这个设备。
在这里插入图片描述
cd - 是返回上一次所在路径,其实是被OLDPWD保存起来了。
在这里插入图片描述
LOGNAME代表当前登录的用户,USER代表当前使用的用户。
在这里插入图片描述
获取环境变量,
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/16163.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【comfyui教程】ComfyUI绘画|ComfyUI 本地部署(Windows系统)

前言 关于 ComfyUI 的部署,推荐使用 Window系统 英伟达显卡 的搭配组合。 整合包下载⏬ 所有的AI设计工具,安装包、模型和插件,都已经整理好了,👇获取~ PS:最好是下载到固态硬盘内,确保存储空…

飞牛云fnOS本地部署1Panel服务器运维管理面板并搭建Halo个人博客

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Python实现贪吃蛇 经典解压小游戏!附源码

大家应该都玩过诺基亚上面的贪吃蛇吧,那是一段美好的童年回忆,本文将带你一步步用python语言实现一个snake小游戏! 基础环境必备 版本:Python3 ●系统:Windows ●相关模块:pygame pip install pygame安…

史上最强大的 S3 API?介绍 Prompt API。

迄今为止,对象存储世界已由 PUT 和 GET 的 S3 API 概念定义。然而,我们现在生活的世界需要更多。鉴于 MinIO 的 S3 部署甚至比 Amazon 还多,因此我们不得不提出下一个出色的 S3 API。 这个新 API 就是 Prompt API,它很可能成为有…

微信小程序 — 农产品供销系统

农产品供销系统 一:基本介绍开发环境功能模块图系统功能部分数据库表设计 二:部分系统页面展示小程序登录界面小程序首页水果分类列表 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/415514d6c40c461c91c1739a4f682fea.jpeg#pic_center)小程序…

为什么说数字化转型需要用到RPA

在现代商业环境中,数字化转型已成为企业追求创新、提高竞争力和适应市场变化的重要战略。然而,数字化转型不仅仅是简单地将纸质文档转化为电子文件或引入新的IT系统,而是要全面优化和重塑企业的业务流程、运营模式和客户体验。在这一过程中&a…

海外媒体发稿:聚焦摩洛哥世界新闻 Morocco World News

关于摩洛哥世界新闻简介: 摩洛哥世界新闻:通过卓越的新闻报道倡导言论自由和深思熟虑的辩论 摩洛哥世界新闻致力于向广大受众提供摩洛哥和中东及北非地区的新闻,不带偏见或政治目的。摩洛哥世界新闻的愿景是成为言论自由的捍卫者&#xff0…

快速建造高品质音乐厅:声学气膜馆打造专业降噪空间—轻空间

随着音乐艺术在城市生活中的地位不断提升,各类音乐厅和演出场馆的需求量也逐年增加。然而,传统音乐厅的建设往往周期长、成本高,特别是在城市中心和文化聚集区,土地资源有限,建造优质的音乐厅面临诸多挑战。如何在有限…

Stable Diffusion Web UI - Checkpoint、Lora、Hypernetworks

Checkpoint、Lora、Hypernetworks是 Stable Diffusion Web UI 生图的重要工具,它们有各自的特点,结合不同的生图场景选择一个或者多个叠加使用,能够更好的命令 Stable Diffusion 生成理想状态的图片。 以人像生图用通俗的方式解释checkpoint…

深度学习神经网络热点全解:原理精析与丰富应用场景大揭秘

深度学习神经网络是人工智能领域的重要研究方向,以下是一些热点方向及其原理和具体应用场景: 这些深度学习神经网络的热点领域不断推动着人工智能技术的发展和创新,在各个行业和领域展现出了巨大的应用潜力,同时也面临着一些技术挑…

越南很火的slots游戏投放Google谷歌广告策略

越南很火的slots游戏投放Google谷歌广告策略 越南的slot游戏市场正在借助Google广告代投策略推动增长。随着智能手机的普及和互联网的普及,越南的游戏市场迅速增长,吸引了越来越多的投资者和开发者进入该市场。 在这个竞争激烈的市场中,广告…

构建安全的数据库环境:群晖NAS安装MySQL和phpMyAdmin详细步骤

文章目录 前言1. 安装MySQL2. 安装phpMyAdmin3. 修改User表4. 本地测试连接MySQL5. 安装cpolar内网穿透6. 配置MySQL公网访问地址7. 配置MySQL固定公网地址8. 配置phpMyAdmin公网地址9. 配置phpmyadmin固定公网地址 前言 本文将详细讲解如何在群晖NAS上安装MySQL及其数据库管理…

多边形Newell向量

多边形Newell向量 空间平面多边形的Newell向量可以用来表示一个该多边形所在平面的法向量而且 Newell向量的模是这个多边形的面积。 Code 计算多边形的法向量和中心点。 template<typename T> void PolygonTriangulation::ComputePolygonPlane(const TArray<TVect…

【9687】基于springboot+vue的在线考试系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取免费源码 项目描述 21世纪&#xff0c;我国就已普及互联网信息&#x…

出行如何用远程控制软件实现异地办公?

远程办公软件让你轻松享受假期&#xff01; 想象一下&#xff0c;像类似于国庆长假里&#xff0c;你在海边享受着悠闲时光&#xff0c;突然工作上有点急事需要处理。这时&#xff0c;如果你有一款好用的远程办公软件&#xff0c;一切就变得轻松多了。今天&#xff0c;我们就来…

力扣-Mysql-3252-英超积分榜排名 II(中等)

一、题目来源 3252. 英超积分榜排名 II - 力扣&#xff08;LeetCode&#xff09; 二、数据表结构 表&#xff1a;TeamStats --------------------------- | Column Name | Type | --------------------------- | team_id | int | | team_name | v…

用Python设置PowerPoint幻灯片背景

使用Python自动化处理Office文档&#xff0c;如PowerPoint演示文稿&#xff0c;是提高效率和创造力的重要手段。设置PowerPoint幻灯片背景不仅能够增强演示文稿的视觉吸引力&#xff0c;还能帮助传达特定的情感或信息&#xff0c;使观众更加投入。通过编程方式批量修改幻灯片背…

商业物联网详细指南:优势与挑战

物联网是信息技术行业最具前景的领域之一。为什么它如此热门呢&#xff1f;原因在于全球连接性。设备可以像人群一样相互协作。正如我们所知&#xff0c;协作能显著提高生产力。 物联网对普通用户和企业都有益处。许多日常流程可以通过传感器、扫描仪、摄像头和其他设备实现自…

国际专线网络:助力企业全球化转型的关键技术

随着全球经济一体化进程的加速&#xff0c;企业的业务和市场拓展逐渐跨越国界&#xff0c;国际化发展成为企业提高竞争力、拓展业务的重要战略。然而&#xff0c;在跨国运营中&#xff0c;如何确保信息传输的效率、稳定性与安全性&#xff0c;成为企业面临的一大挑战。传统的公…

C2工具vshell最新4.9.3版下载(带永久license)

简介 vshell 是一款安全对抗模拟、红队工具。提供隧道代理和隐蔽通道&#xff0c;模拟长期潜伏攻击者的策略和技术。vshell 为您提供隧道代理和隐蔽通道&#xff0c;以模拟网络中的持久化攻击行为。支持多种协议、高兼容性、及强大的协作能力&#xff0c;帮助蓝队更好的评估安…