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

相关推荐
A.A呐28 分钟前
【Linux第十三章】缓冲区
linux·服务器
想唱rap1 小时前
Linux线程
java·linux·运维·服务器·开发语言·mysql
JFSJFX1 小时前
手机短信误删怎么办?这4种恢复办法亲测有效,轻松找回短信
运维·服务器
yuzhuanhei2 小时前
docker常用命令
运维·docker·容器
無名路人2 小时前
Zsh 脚本 + VS Code 任务:NestJS + Vue3 一键部署到 1Panel
运维·后端·自动化运维
anarckk2 小时前
docker volume 导入导出命令
运维·docker·容器
cccccc语言我来了2 小时前
Linux(9)操作系统
android·java·linux
Lueeee.2 小时前
Linux驱动中为什么既有 sysfs,又有字符设备?以 DHT11 驱动为例彻底讲透
linux·驱动开发
信创DevOps先锋2 小时前
Gitee:中国开发者生态的数字化转型基石与创新加速器
运维·gitee·devops
Crazy CodeCrafter2 小时前
房租年年涨,客流年年少,服装店还要开吗?
大数据·运维·微信·自动化·开源软件