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让出去。

相关推荐
ITOWARE_SAPer1 天前
选择SAP实施公司能否兼得官方授权与高性价比?
运维·能源·制造·零售
开压路机1 天前
进程控制
linux·服务器
香蕉鼠片1 天前
跨平台开发到底是什么
linux·windows·macos
Elastic 中国社区官方博客1 天前
Elasticsearch:快速近似 ES|QL - 第一部分
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索
2401_873479401 天前
如何从零搭建私有化IP查询平台?数据采集、清洗、建库到API发布全流程
服务器·网络·tcp/ip
AC赳赳老秦1 天前
OpenClaw生成博客封面图+标题,适配CSDN视觉搜索,提升点击量
运维·人工智能·python·自动化·php·deepseek·openclaw
Eric.Lee20211 天前
docker 启动停止命令
运维·docker·容器
samson_www1 天前
EC2的GRUB引导程序问题
运维·ai
bukeyiwanshui1 天前
20260417 DNS实验
linux
代码中介商1 天前
Linux 帮助手册与用户管理完全指南
linux·运维·服务器