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

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

  • 一、冯诺依曼体系结构
    • 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、结构图

冯诺依曼体系结构、进程、环境变量_第1张图片

2、示例

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

3、CPU与数据

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

二、进程

1、概念

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

2、查看进程

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

冯诺依曼体系结构、进程、环境变量_第2张图片

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

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

冯诺依曼体系结构、进程、环境变量_第3张图片
冯诺依曼体系结构、进程、环境变量_第4张图片

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

(3)通过系统调用

冯诺依曼体系结构、进程、环境变量_第5张图片

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

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

(1)fork函数

pid_t fork(void)

(2)fork函数功能

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

(3)示例

冯诺依曼体系结构、进程、环境变量_第6张图片

4、进程状态

(1)进程状态的概念

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

(2)示意图

冯诺依曼体系结构、进程、环境变量_第7张图片

5、Z(zombie)僵尸进程

(1)僵死状态(Zombies)

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

(2)示例

冯诺依曼体系结构、进程、环境变量_第8张图片
冯诺依曼体系结构、进程、环境变量_第9张图片

  • 第一张图片为测试的代码。
  • 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)示例

冯诺依曼体系结构、进程、环境变量_第10张图片
冯诺依曼体系结构、进程、环境变量_第11张图片

三、进程优先级

1、概念

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

2、查看系统进程

冯诺依曼体系结构、进程、环境变量_第12张图片

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、示例

冯诺依曼体系结构、进程、环境变量_第13张图片

四、关于进程的其他概念

  • 竞争性:系统进程数目众多,而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、示例

在这里插入图片描述
冯诺依曼体系结构、进程、环境变量_第14张图片

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

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

你可能感兴趣的:(Linux,服务器,运维,linux,centos,c语言,vim)