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

相关推荐
云边有个稻草人1 小时前
【Linux系统】进程地址空间
linux·虚拟地址空间·进程地址空间·虚拟地址空间是怎么实现的?·为什么要有虚拟地址空间?·怎么理解虚拟地址空间?
weixin_514253181 小时前
511-qwen3.5-patch
服务器
谁似人间西林客3 小时前
工厂大脑如何让汽车制造告别“救火式”运维?
运维·汽车·制造
飞飞传输3 小时前
数字化科研提速关键 构建安全可控一体化跨网数据传输体系
大数据·运维·安全
wanhengidc4 小时前
服务器中带宽的重要性
运维·服务器·网络·安全·web安全
189228048614 小时前
H27QCG8T2ELR-BCF海力士H27QCG8UDBIR-BCB
大数据·服务器·人工智能·科技·缓存
云游牧者5 小时前
K8S故障排查三板斧-CSDN博客
运维·docker·云原生·kubernetes·k8s·容器化·故障排查
程序员老邢5 小时前
【技术底稿 32】Nginx 经典大坑复盘:本机公网域名自环代理,导致接口返回首页 / 404 实战排障
java·运维·nginx·前后端分离·技术底稿·后端部署
сокол5 小时前
【网安-Web渗透测试-内网渗透】局域网ARP攻击与DNS劫持
服务器·网络·网络安全
忧云5 小时前
开源 SSH 客户端 Netcatty:免费替代 Termius,带 AI 的现代化运维工具
运维·开源·ssh