冯诺依曼体系结构、进程、环境变量

news/2024/7/21 13:31:21 标签: 服务器, 运维, linux, centos, c语言, vim

冯诺依曼体系结构、进程、环境变量

  • 一、冯诺依曼体系结构
    • 1、结构图
    • 2、示例
    • 3、CPU与数据
  • 二、进程
    • 1、概念
    • 2、查看进程
      • (1)通过/proc系统文件夹
      • (2)通过top和ps用户级工具
      • (3)通过系统调用
    • 3、通过系统调用创建进程
      • (1)fork函数
      • (2)fork函数功能
      • (3)示例
    • 4、进程状态
      • (1)进程状态的概念
      • (2)示意图
    • 5、Z(zombie)僵尸进程
      • (1)僵死状态(Zombies)
      • (2)示例
      • (3)显示进程头部部分代表的意思
      • (4)危害
    • 6、孤儿进程
      • (1)概念
      • (2)示例
  • 三、进程优先级
    • 1、概念
    • 2、查看系统进程
    • 3、PRI和NI
    • 4、更改已存在进程的nice值
    • 5、示例
  • 四、关于进程的其他概念
  • 五、环境变量
    • 1、概念
    • 2、常见环境变量
    • 3、与环境变量相关的命令
    • 4、查看环境变量的方法
    • 5、示例

一、冯诺依曼体系结构

1、结构图

在这里插入图片描述

2、示例

  • 存储器:内存。
  • 输入设备:键盘、摄像头、话简、磁盘、网卡等等。
  • 输出设备:显示器、音响、磁盘、网卡等等。
  • 运算器:算术运算、逻辑运算等等。
  • 控制器:使CPU具有可以响应外部事件的功能,即协调外部就绪事件,如拷贝数据到内存或者从内存中拷贝数据出去。

3、CPU与数据

  • CPU读取数据(数据+代码)需要从内存中进行读取,即站在数据的角度来看,CPU不和外部设备(输入或输出设备)直接进行交互。
  • CPU处理数据(数据+代码),需要先将数据从外部设备加载到内存,即站在数据的角度来看,外部设备只和内存直接进行交互。

二、进程

1、概念

  • 一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是操作系统动态执行的基本单元,担当分配系统资源(CPU时间,内存)的实体。在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
  • 进程信息被放在一个叫做进程控制块的数据结构中,它是进程属性的集合,可以称之为PCB(process control block),在Linux操作系统下,PCB是一个名为task_struct的结构体,它会被装载到RAM(内存)里。

2、查看进程

(1)通过/proc系统文件夹

在这里插入图片描述

  • 被圈中的每一个数字都代表一个进程。

(2)通过top和ps用户级工具

在这里插入图片描述
在这里插入图片描述

  • ps一般搭配管道命令|和grep使用,筛选出想要查找的进程。当进程(程序执行)存在,将输出进程信息。

(3)通过系统调用

在这里插入图片描述

  • getpid是获取当前进程的进程号,getppid是获取当前进程父进程的进程号。

3、通过系统调用创建进程

(1)fork函数

pid_t fork(void)

(2)fork函数功能

  • 创建一个子进程,并将子进程的进程号返回给它的父进程(执行fork的进程),返回0给自己。
  • 创建出来的子进程和父进程共用一份代码,各自开辟空间存储数据(采用写时拷贝)。

(3)示例

在这里插入图片描述

4、进程状态

(1)进程状态的概念

  • R运行状态(running):处于此状态的进程并不意味着它一定在运行中,只是表明进程要么是在运行中,要么在运行队列里。
  • S睡眠状态(sleeping):也叫做可中断睡眠(interruptible sleep)状态,处于此状态的进程意味着它在等待某个事件的完成。
  • D磁盘休眠状态(Disk sleep):也叫做不可中断睡眠(uninterruptible sleep)状态,处于此状态的进程通常会等待IO的结束。
  • T停止状态(stopped):可以通过发送 SIGSTOP 信号给进程来停止进程。这个被暂停的进程可以通过发送 SIGCONT 信号来让进程继续运行。
  • X死亡状态(dead):这个状态只是一个返回状态,用户不会在任务列表里看到这个状态。

(2)示意图

在这里插入图片描述

5、Z(zombie)僵尸进程

(1)僵死状态(Zombies)

  • 一个比较特殊的状态,当进程退出并且它的父进程没有读取到子进程退出的返回代码时,就会产生僵尸(死)进程。即只要子进程退出而父进程还在运行,但父进程没有读取子进程的退出状态时,子进程就会进入Z状态。
  • 僵尸进程会以终止状态保持在进程表中,并且一直在等待父进程读取退出状态代码。

(2)示例

在这里插入图片描述
在这里插入图片描述

  • 第一张图片为测试的代码。
  • while :; do ps -al | head -1 && ps -al | grep test; sleep 1; echo “---------------”; done的作用是循环输出进程的信息。

(3)显示进程头部部分代表的意思

  • UID:执行者的身份。
  • PID:本进程的代号,即进程号。
  • PPID:本进程是由哪个进程发展/衍生而来的,即父进程的代号。
  • PRI:本进程可被执行的优先级,其值越小越早被CPU执行。
  • NI:本进程的nice值,即优先级的修正数值。

(4)危害

  • 如果父进程一直不读取子进程的退出信息,那子进程就会一直处于Z状态。
  • 进程在Z状态一直不退出,PCB就要一直维护。
  • 内存资源的浪费,即内存泄漏。

6、孤儿进程

(1)概念

如果父进程退出,而它的子进程依然存在,则此时的子进程就称为孤儿进程。这个孤儿进程会被1号init进程(系统本身)领养,即1号init进程将等待被它领养的孤儿进程退出并回收它。

(2)示例

在这里插入图片描述
在这里插入图片描述

三、进程优先级

1、概念

  • CPU资源分配的先后顺序,就是进程优先级(priority)的体现。
  • 优先级高的进程有被CPU优先执行的权利,配置进程的优先级和把进程运行到指定的CPU上,即把不重要的进程安排到某个CPU上执行,可以改善系统整体的性能。

2、查看系统进程

在这里插入图片描述

3、PRI和NI

  • PRI值越小越快被CPU执行,当加入nice值后,PRI变化为:PRI(new)=PRI(old)+nice。
  • PRI(old)是进程最开始的优先级,即每次设置优先级时,都要以进程最开始的优先级为基础去设置。
  • 当nice值为负值的时候,该程序优先级的值将变小,而优先级将变高,即其越快被CPU执行,反之,越慢被CPU执行。
  • 在Linux下,调整进程优先级,就是调整进程的nice值。而nice的取值范围是-20至19,一共40个级别。
  • 进程的nice值不是进程的优先级,而是影响进程优先级的变化。

4、更改已存在进程的nice值

输入“top”命令
进入top后按“r”–>输入欲修改nice值的进程PID–>输入修改后的nice值。

5、示例

在这里插入图片描述

四、关于进程的其他概念

  • 竞争性:系统进程数目众多,而CPU资源只有少量,甚至只有1个CPU,所以进程之间是具有竞争属性的。而为了高效完成任务和更合理地竞争相关资源,就有了优先级的存在。
  • 独立性:多进程运行时,各个进程需要独享各种资源,即在这期间,各进程互不干扰。
  • 并行:多个进程分别在多个CPU下同时运行。
  • 并发:多个进程在一个CPU下采用进程切换的方式执行各个进程,即在一段时间之内,让多个进程都能被执行。

五、环境变量

1、概念

在操作系统中用来指定操作系统运行环境的一些参数,通常具有某些特殊用途和全局特性。

2、常见环境变量

PATH:指定命令的搜索路径。
HOME:指定用户的主工作目录,即家目录。
SHELL:当前使用的Shell,通常是/bin/bash。

3、与环境变量相关的命令

  • echo:显示某个环境变量值。
  • export:设置一个新的环境变量。
  • env:显示所有环境变量。
  • unset:清除环境变量。
  • set:显示本地定义的shell变量和环境变量。

4、查看环境变量的方法

  • echo $NAME
  • NAME为欲查看的环境变量的名称。

5、示例

在这里插入图片描述
在这里插入图片描述

  • export定义的环境变量会在重启或退出登录时失效。

本文到这里就结束了,如有错误或者不清楚的地方欢迎评论或者私信
创作不易,如果觉得博主写得不错,请务必点赞、收藏加关注💕💕💕


http://www.niftyadmin.cn/n/5134872.html

相关文章

C# Onnx 用于边缘检测的轻量级密集卷积神经网络LDC

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Onnx…

Android NDK开发详解之ndk-gdb

Android NDK开发详解之ndk-gdb 要求用法选项 线程支持 NDK 包含一个名为 ndk-gdb 的 Shell 脚本,可以启动命令行原生调试会话。偏好使用 GUI 的用户则应阅读在 Android Studio 中调试这篇文档。 要求 要运行命令行原生调试,必须满足以下要求&#xff1…

阐述I9-14900K优缺点 180.188.16.X

I9-14900K是英特尔的顶级桌面处理器,它的优点包括: 高性能:I9-14900K是英特尔目前的顶级桌面处理器,拥有超强的计算能力和处理速度。 超线程技术:I9-14900K采用超线程技术,在处理多任务时能更高效地利用处…

IP证书是什么?

随着互联网的飞速发展,网络安全问题日益突出,对于只能通过IP地址访问的网站来说,如何实现IP地址的网络数据传输安全保护成为难题。为了解决这一难题IP证书应运而生,IP SSL证书简称IP证书。那么IP证书是什么意思?IP证书…

挑战「二八定律」!千元级方案搅局,高阶智驾格局恐生变

在相关车型的放量带动下,高阶智驾的行业拐点逐渐显现。 高工智能汽车研究院监测数据显示,今年1-8月,中国市场乘用车标配NOA的新车交付贡献占比最高的,30万元以上车型达到80%左右。而30万元以上车型的新车销量规模仅占全市场的不到…

c语言数据类型的定义

c语言数据类型的定义 c语言数据类型的定义 c语言数据类型的定义一、数据类型的定义二、变量三、常量 一、数据类型的定义 数据类型的定义 在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利…

Linux病毒疯狂增长,我们该如何…

导读国家信息中心日前与瑞星联合发布的《2017年上半年中国网络安全报告》(以下简称《报告》)指出,目前Linux系统病毒已快速增长。《报告》对2017年1至6月的网络安全现状与趋势进行统计、研究和分析后指出,Linux系统的勒索软件数量…

OceanBase安装部署

OceanBase自动化安装部署OBD 前提条件一、 OceanBase 集群部署规划1、创建用户2、规划目录 二、安装OceanBase环境1、 方案一:若机器能联网执行如下命令在线下载并安装 all-in-one 安装包2、 方案二:若机器不能联网需要在官网下载 all-in-one安装包&…