Linux---进程(一):初识进程

冯·诺依曼体系结构

1、我们首先来了解一下冯·诺依曼体系结构。

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

冯·诺依曼体系结构是现代计算机最核心的设计思想,它主要有三大核心思想:

1、采用二进制;计算机内部数据、指令都用二进制表示、电路实现简单可靠

2、存储程序原理:程序和数据一样存放在内存中,计算机自动存内存取指令、执行指令,不用手动接线改程序。

3、五大核心硬件组成

有如上图的五大部件组成,输入设备、输出设备、存储器、运算器、控制器,其中运算器和控制器组成中央处理器。

工作流程:

输设备入把数据/程序送入存储器,控制器从存储器取指令,运算器按指令完成运算,结果存回存储器,最后由输出设备输出结果。

存储分级

2、体系结构效率问题

外设相比于cpu速度太慢了。 所以在外设和cpu之间引入了存储器。

在数据层面,cpu不和外设之间打交道,只会和内存打交道。计算机中"木桶效应",最慢的就是外设。

局部性原理导致数据可以提前加载,大部分情况下,处理数据的时候就可以成为cpu和内存的交互。(此时,计算机的效率就以内存为主了。)

局部性原理

什么是局部性原理呢? 简单来说就是程序在一段时间之内,倾向于,反复访问同一批数据或附近的数据。

这个原理是缓存(Cache)、虚拟内存等技术的核心理论基础。

两种主要的局部性:

1、时间局部性

如果一个数据项被访问了,那么它在不久的将来很可能被再次访问,

2、空间局部性

如果一个数据项被访问了,那么与它地址相邻的数据项在不久后的将来也很可能会被访问。

问题1:我们说的输入输出,是站在谁的角度考虑的?

站在内存的角度,也就是硬件 ,加载到内存中程序的角度, Input和Output,计算机数据流动的过程,本质就是拷贝。

操作系统

操作系统是什么? 操作系统其实就是电脑的总指挥,它管硬件、管软件、管你和机器沟通,没它电脑就是一块铁。

问题2 为什么要有操作系统呢?

答:操作系统是一个以人为本的软件。

操作系统是一款软件,是一款进行软硬件资源管理的软件;对下它把软硬件资源管理好,对上它给人提供一个良好的使用环境。(稳定的、高效的、安全的)

问题3 在C++中为什么要有类和STL?

答:根据先描述再组织。

(1)c++中为什么要有类? 任何事物都有 属性+行为 比如学生:属性是:学号、姓名、成绩

行为:学习、考试、查分

代码怎么对应? 在c语言中只能分开写,(变量一堆、函数一堆,)->乱、不安全、不好维护;

但是在c++中用类来组织, 封装、继承、多态------> 代码更像现实世界、好写、好改、好拓展

(2)C++为什么要有STL?

一、在日常生活我们写程序都要写这些,存一堆数据:数组、链表、栈和队列等等,做一些常用操作:查找、排序、遍历、删除。

再组织:总不能每次都重写吧?

以前大家都自己造轮子,每个人写的链表、栈都不一样,容易错、效率低、不通用。

STL就是标准库统一好的,容器是:vector、list、map、stack.........

算法:sort、find、reverse......

STL==把常用的数据结构和算法【标准化组织】,拿来就用。

进程

1、定义:进程是具有独立功能的程序在一个数据集合上的一次执行过程,是操作系统进行资源分配和调度的基本单位。

进程和程序的区别

---程序是静态的,是存放在磁盘上的代码和文件。

---进程是动态的,是程序的一次执行过程

---程序永久存在,文件不删除就一直存在

---进程临时存在,运行完就消失。

---程序不能占用资源。

---进程是操作系统分配资源(cpu、内存)的基本单位。

程序被加载到内存里,并且操作系统为它创建了PCB(进程控制块),它就变成了进程。

进程=内核数据结构(PCB)+自己程序的代码和数据

PCB

PCB,process control block ,在Linux中,进程控制块就是 struct task_struct.

在操作系统中,可以同时运行很多程序,每一个都要加载到内存,一定会同时存在很多的进程,

操作系统要对进程进行管理,用一个结构体如下图:

CPU内存在寄存器。

进程上下文切换
  1. 上下文是什么?

图里的"寄存器"和"程序计数器(PC)",就是一个进程在 CPU 上运行时的上下文(Context)。它记录了进程执行到哪一步、用到了哪些数据。

  1. 为什么要切换?

当一个进程的时间片用完,或者被更高优先级的进程打断时,操作系统需要把 CPU 让给另一个进程,这就是进程切换。

  1. 切换时做什么?

保存现场:把当前进程在 CPU 寄存器和程序计数器里的值,保存到它的 PCB( struct task_struct )中。

恢复现场:把下一个要运行的进程的 PCB 中保存的寄存器和程序计数器的值,恢复到 CPU 中。

当代计算机,会给每个进程分配一个时间片,时间片执行完毕,就自动出让cpu,让另一个进程执行,一个进程没有执行完,就可能会把cpu让出去。

相关推荐
淡唱暮念2 小时前
Linux系统使用夸克网盘CLI上传服务器数据至网盘教程,解决大数据备份苦恼
linux·服务器·ubuntu
阿莫西林夹馍2 小时前
ubuntu安装gitlab
linux·ubuntu·gitlab
香蕉你个不拿拿^2 小时前
Linux中make和makefile基本使用
linux·运维·服务器
悲伤小伞2 小时前
Linux_应用层自定义协议与序列化——网络计算器
linux·服务器·c语言·c++·ubuntu
袁袁袁袁满2 小时前
Linux怎么创建Shell脚本.sh文件
linux·运维·服务器·shell·shell脚本.sh文件·创建shell脚本·创建.sh文件
济6172 小时前
I.MX6U 开发板网络环境搭建---- NFS环境搭建-- Ubuntu20.04
linux
FIT2CLOUD飞致云2 小时前
支持OpenClaw智能体管理,新增企业微信、钉钉和飞书告警通知,1Panel v2.1.0版本发布
服务器·ai·开源·1panel
天空属于哈夫克32 小时前
企微API自动化:高效安全的群运营方案
linux·运维·服务器
dcmfxvr2 小时前
【无标题】
java·linux·前端