计算机工作原理简单介绍

news2024/11/20 8:39:52

文章目录

  • 一、冯诺依曼体系结构
  • 二、CPU基本工作流程
    • CPU工作流程
  • 三、操作系统
    • 操作系统的基本功能
  • 四、进程(process)/任务(task)
    • 操作系统如何管理进程
      • 描述一个进程(进程的相关属性)
      • 组织若干进程
      • CPU的分配
      • 内存的分配
      • 进程间通信

一、冯诺依曼体系结构

冯诺依曼体系结构

  • CPU中央处理器:进行算术运算和逻辑判断
  • 存储器:分为外存和内存,用于存储数据(使用二进制存储)
  • 输入设备:用户给计算机发号施令的设备;
  • 输出设备:计算机给用户汇报结果的设备

存储空间的大小

硬盘>内存>>CPU
数据访问速度

数据访问速度

CPU >>(三到四个数量级) 内存 > 硬盘

二、CPU基本工作流程

CPU构成原理:电子开关 -> 基础门电路 -> 半加器 -> 全加器 -> 加法器 -> 进行加减乘除

算术逻辑单元:ALU
控制单元:CU
指令:指导CPU进行工作的命令,主要有操作码 + 被操作数组成。指令本身也是一个数字,用二进制形式保存在内存的某个区域中
指令周期
电子计算机中的CPU靠背后一个时钟来进行周期驱动

ALU + CU + 寄存器 + 时钟 = 中央处理器(CPU)

CPU工作流程

  1. 从内存中读取指令
  2. 解析指令
  3. 执行指令

小结:

  1. CPU中的PC寄存器,是决定CPU要执行哪条指令的关键
  2. 指令是由动作 + 操作对象组成
  3. CPU眼里只有指令,没有其他概念

#三、编程语言
编程语言
注意,一条高级语言的一条语句(statement)往往需要很多条指令(instruction)才能完成

三、操作系统

操作系统是一组做计算机资源管理的软件的统称
操作系统位于硬件和应用程序之间

操作系统的基本功能

操作系统是一个“搞管理的软件

1.对上,防止硬件被失控的应用程序滥用,要给各种软件提供稳定的运行环境
2.对下,向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备

四、进程(process)/任务(task)

进行就是在计算机里面运行中的程序

操作系统如何管理进程

需要管理两部分内容

描述一个进程(进程的相关属性)

由于操作系统里面主要是通过C/C++实现的,因此此处的描述就是使用C的“结构体
该结构体称为进程控制块(process control block)(PCB

基础属性

1.pid(进程id)。进程的身份标识
2.内存指针。指明了这个进程要执行的代码/指令在内存的哪里,以及这个进程执行中依赖的数据都在哪里(运行一个.exe文件时,操作系统就会把这个.exe文件加载到内存中,变成进程[包括指令和数据])
3.文件描述符表(程序运行过程中,经常要和文件打交道[文件是在硬盘上]),进程每次打开一个文件,就会在文件描述符表上多增加一项,(这个文件描述符表可以视为是一个数组,里面的每个元素又是一个结构体,对应一个文件的相关信息);一个进程启动后,默认打开三个文件,标准输入(System.in),标准输出(System.out),标准错误(System.err)

进程调度过程的属性
前提:并行和并发(通常统称为并发)

并行:微观上,两个CPU核心,同时执行两个任务的代码
并发:微观上,一个CPU核心,一个小的时间段执行一个进程的一小段任务,然后快速切换到其他进程,宏观上看起来就是多个进程同时执行一样

1.状态

就绪状态:随时可以去CPU上执行
阻塞/睡眠状态:暂时无法去CPU上执行

2.优先级

先给谁分配时间,再给谁分配时间;以及给谁分的多,给谁分的少的一种依据

3.记账信息

统计该进程被执行了多久,执行了哪些指令,排队了多久(给进程调度提供指导依据)

4.上下文

表示上次该进程释放CPU时执行的进度,然后在下次再使用CPU时恢复到这个状态,继续往下执行,即存档和读档
保存的内容就是当前CPU中各个寄存器中的数据(保存到上下文字段中<内存中>)。到时候恢复时直接把数据恢复到对应寄存器即可

组织若干进程

使用一些数据结构(Linux使用双向链表),存放描述进程的信息,方便增删改查

  • “创建进程”,就是先创建出 PCB ,然后把 PCB 加到双向链表
  • “销毁进程”,找到链表上的 PCB ,并且从链表中删除
  • “查看任务管理器”,遍历链表

CPU的分配

操作系统对于CPU的分配,采用的是时间模式———不同的进程在不同(或相同)的时间段去使用CPU资源(并发)

内存的分配

早期操作系统在一块内存运行着多个进程,如果一个进程出现bug(比如修改了0x0这种非常特殊的内存数据),那么就极有可能殃及池鱼,严重的导致系统进程崩溃。因此,现代操作系统采用了”虚拟地址“的方法,不让进程访问到实际的物理地址,每个进程只能使用系统分配给自己的那块内存,多个进程之间相当于隔离开(比如A和B的虚拟地址都是0x1000—0x2000,但实际上它们的内存地址并不是一块)

进程间通信

由于现代系统采用虚拟内存分配,因此各个进程之间就无法感知到各自的存在,但是有时进程之间需要“信息交换”,这个时候就需要提供所谓的“公共空间”,这样A将数据存到公共空间中,B再访问公共空间将数据取走,就实现了进程间通信
主流操作系统提供的进程通信机制有很多种,现在最主要的进程通信机制是下面两种:

1.文件操作
2.网络操作(socket)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐系统,计算广告模型论文,代码与数据集汇总

Rec-Models 更多细节参考项目&#xff1a;https://github.com/JackHCC/Rec-Models https://github.com/JackHCC/Rec-Models &#x1f4dd; Summary of recommendation, advertising and search models. Recall Papers PaperResourceOthers[2019阿里SDM模型] SDM: Sequen…

Zebec Chain缘何能成为新晋应用链,熊市下又为何值得我们关注?

流支付生态 Zebec 正处于发展的火热阶段&#xff0c;Zebec此前于12月20日举办的为期3天的Web3.0 TechHive Summit 2022 大会&#xff0c;目前已经落幕&#xff0c;此次大会参会项目多达34个囊括了公链、钱包、DID、GameFi等多个主流行业赛道&#xff0c;并围绕行业安全、发展趋…

ConvLSTM时空预测实战代码详解

写在前面 时空预测是很多领域都存在的问题&#xff0c;不同于时间序列&#xff0c;时空预测不仅需要探究时间的变化&#xff0c;也需要关注空间的变化。许多预测问题都只片面的关注时间问题&#xff0c;如预测某人未来3年患某种病的概率&#xff0c;食堂就餐人数等&#xff0c…

CSS--圆角边框

单独对四个角进行设置&#xff1a; boder-top-left-radius&#xff1a;30px&#xff1b; //左上角 boder-top-right-radius&#xff1a;30px&#xff1b; //右上角 boder-bottom-left-radius&#xff1a;30px&#xff1b; //右下角 boder-bottom-right-radius&#xff1a;30px&…

群晖 Sonology NAS DS920+ 拆机装机方法

文章内容&#xff1a;群晖 Sonology NAS DS920 拆机方法 关键词组&#xff1a;群晖&#xff0c;Sonology, nas, ds920, 拆机, 外壳 使用软件&#xff1a;无 虚拟环境&#xff1a;无 操作系统&#xff1a;无 目录一、事件起因三、拆装机方法一、事件起因 起初&#xff0c;由于机…

OpenCV环境下实现图像任意角度旋转的原理及代码

OpenCV环境下实现图像任意角度旋转的原理及代码 实现图像任意角度旋转的原理如下&#xff1a; Step01-把图像原点从左上角转换到旋转中心点。 Step02-利用极坐标系计算出旋转后各点的坐标。 Step03-确定旋转后图像的左边界、右边界、上边界、下边界&#xff0c;进而得出旋转后…

计数排序 [数据结构与算法][Java]

计数排序 计数排序和基数排序都是桶排序的一种应用 适用场景: 量大但是范围小 比如对10000个数进行排序, 但是这10000个数中只有10种数字(0 - 9)典型题目: 某大型企业数万名员工年龄排序如何快速得知高考名次(腾讯面试) 这里我们以某大型企业数万名员工年龄排序来进行一个…

RV1126笔记十四:吸烟行为检测及部署<二>

若该文为原创文章,转载请注明原文出处。 PC下yolov5环境搭建 我使用的训练环境是Windows10+MiniConda 接下来记录搭建全过程 备注:条件允许就使用ubuntu物理机,最好要有显卡,训练有显卡速度会快很多,没有显卡,训练300轮,亲测大概40小时,不值得。 一、miniconda 安装…

从零了解进程(操作系统定位,进程的概念,特征,虚拟地址)

目录 操作系统的定位 进程的概念 如何描述进程? 如何组织进程? 进程的特征 1.pid 2.内存指针 3.文件描述符 4.进程调度的相关属性 (1)进程的状态 (2)优先级 (3)上下文 (4)记账信息 进程是如何利用cpu资源的? 进程的虚拟地址 物理地址 内存随机访问的特性 为…

【ML实验7】人脸识别综合项目(PCA、多分类SVM)

实验代码获取 github repo 山东大学机器学习课程资源索引 实验目的 实验环境 实验内容 PCA 两种方法EVD-PCA和SVD-PCA的实现、效率对比见我之前的博客一个PCA加速技巧&#xff0c;这里补充SVD方法的数学推导&#xff1a; 首先&#xff0c;设方阵AAA的特征值分解为AUΣUTAU\S…

ZKP应用:石头剪刀布游戏

1. 引言 开源代码见&#xff1a; https://github.com/spalladino/zkp-tests 对比了分别使用&#xff1a; Iden3团队的circom语言&#xff08;易于学习ZKP&#xff09;ZCash团队的Halo2框架Aztec团队的Noir语言&#xff08;最友好&#xff09; 编写石头剪刀布游戏的ZKP证明…

IPv6(计算机网络-网络层)

目录 IPv6 的特点 IPv6 数据报的格式 IPv6 分组的格式 IPv6 的扩展首部 从计算机本身发展以及从互联网规模和网络传输速率来看&#xff0c;现在 IPv4已很不适用。 要解决 IP 地址耗尽的问题的措施&#xff1a; 采用无类别编址 CIDR&#xff0c;使 IP 地址的分配更加合理…

MySQL 锁机制

文章目录MySQL 锁机制表锁读锁场景一场景二场景三总结写锁场景一场景二场景三总结行锁场景一场景二总结间隙锁缺点如何锁定一行MySQL 锁机制 表锁 读锁 查看哪些表被加锁了 语法&#xff1a;show open tables 添加读锁 read 读锁关键字 | write 写锁关键字 语法&#xff1a;l…

qt下采用libcurl实现ftp与tftp功能,提供源代码程序

一、FTP简介 FTP&#xff08;文件传输协议&#xff09;&#xff0c;工作在应用层&#xff0c;是用于在网络上进行文件传输的一套标准协议。它使用 TCP 传输&#xff0c;客户在和服务器建立连接前要经过一个“三次握手”的过程&#xff0c; 保证客户与服务器之间的连接是可靠的&…

基于xml的自动装配之byName

基于xml的自动装配之byName 自动装配方式&#xff1a;byName byName&#xff1a;将自动装配的属性的属性名&#xff0c;作为bean的id在IOC容器中匹配相对应的bean进行赋值总结&#xff1a;当类型匹配的 bean 有多个时&#xff0c;此时可以使用 byName 实现自动装配 配置bean &…

02:损失函数总结

目录 nn.L1Loss: nn.NLLLoss: nn.MSELoss: nn.CrossEntropyLoss: 损失函数是用来估量模型的预测值与真实值的不一致程度&#xff0c;它是一个非负实值函数。我们训练模型的过程&#xff0c;就是通过不断的迭代计算&#xff0c;使用梯度下降的优化算法&#xff0c;使得损失函…

多叉树 [数据结构与算法][Java]

多叉树 在二叉树中每个结点只能有一个数据项, 并且最多有两个子节点, 如果允许每个结点可以有更多的数据项和更多的子节点, 那么就是多叉树 多叉树: multiway tree 那么我们为什么要提出多叉树? 因为二叉树有一定的问题: 即使二叉树的操作效率高, 但是也存在问题: 二叉树需…

django之前后端不分离的操作(增删改查)

背景&#xff1a; demo采用的是前后端不分离的操作&#xff0c;用Bootstrap作为前段页面框架使用 1.先说模板之间的继承&#xff08;针对HTML来讲&#xff09; 父模板中编写好公共代码块&#xff0c;例如一个网站的导航和footer部分 在内容部分注明 {%block content%} {%e…

53 记一次自定义 classloader 导致的 metadataspace OOM

前言 这是最近 flink 集群上面暴露出现的一个问题 具体的细节原因 就是 flink 上面提交任务的时候, 自定义的 classloader 加载 driver.jar 然后导致 metaspace OOM 由于这边的 TaskManager metadataspace 配置相对较小(MaxMetaspaceSize配置为96M), 然后导致 出现了 metada…

BUUCTF Misc [SUCTF2018]single dog 我吃三明治 sqltest [SWPU2019]你有没有好好看网课?

[SUCTF2018]single dog 下载文件 使用kali的binwalk工具分析 进行文件分离 解压其中的压缩包&#xff0c;得到1.txt 看内容应该是js加密后的结果&#xff0c;复制到AAEncode在线解密网站 得到flag flag{happy double eleven} 我吃三明治 下载文件 使用010 eito…