冯诺依曼体系结构、进程、环境变量
- 一、冯诺依曼体系结构
- 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定义的环境变量会在重启或退出登录时失效。
本文到这里就结束了,如有错误或者不清楚的地方欢迎评论或者私信
创作不易,如果觉得博主写得不错,请务必点赞、收藏加关注💕💕💕