2.20计算机如何工作

news2024/9/22 15:45:02

一.计算机组成

1.冯诺依曼体系

  • CPU 中央处理器: 进行算术运算和逻辑判断.

  • 存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)

  • 输入设备: 用户给计算机发号施令的设备.

  • 输出设备: 计算机个用户汇报结果的设备

内存和外存的区别(面试)

访问速度:内存快,外存慢

存储空间:内存小,外存大

成本:内存高,外存低

持久化存储:内存掉电后数据丢失,外存掉电后数据仍然在'

2.cpu

CPU芯片上集成了非常多的运算单元

2.1逻辑门

1)电子开关-机械继电器(Mechanical relay)

2)门电路

最基本的门电路有三种

3)算数逻辑单元 ALU

ALU 是计算机中进行算数、逻辑运算的核心部件,是计算机的数学大脑。

1.半加器.针对两个比特位,进行加法运算

2.全加器:针对三个比特位,进行加法运算

4)逻辑单元

逻辑单元主要用来进行逻辑操作,最基本的操作就是 与、或、非操作,但不只是一位(bit)数的比较。

5)总结

逻辑链条

2.2计算

有了加法器,可以进行加减乘除

原码,反码,补码

计算机中

如果是一个正数,直接使用正数,直接用原码

如果表示一个负数,就使用补码

原码,符号位不变,再按位取反,再加1

使用补码为了统一加减法

2.3门电路

一个cpu上有很多电子开关,电子开关越多,计算能力就越强

CPU中除了运算器以外,还有控制单元和寄存器

2.4寄存器

寄存器是CPU内部用来存储数据的组件

2.5 控制单元(CU)

控制单元( CU)协调CPU进行工作

最主要的工作是能够执行指令

指令

1.机器语言

2.汇编语言

2.6指令的执行

举例:计算两个数相加

CPU的工作流程

1.从内存中读取指令

2.解析指令.

3.执行指令

这些都是通过CU控制单元来实现

二.操作系统

一个软件.计算机上最重要也最复杂的软件之一

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

1.对下,要管理好各种硬件设备

2.对上,要给各种软件提供稳定的运行环境

操作系统由两个基本功能:

1) 防止硬件被时空的应用程序滥用;

2) 向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备

三.进程

1.概述

进程:跑起来的程序

一旦开始运行这些.exe文件

操作系统就会把这个exe给加载到内存中,并且让CPU开始执行exe内部的一些指令(exe内部存放了这个程序对应的

二进制指令).

这些运行起来的可执行文件 便被称为"进程"

什么是线程

是进程内部的一个部分,进程包含线程

如果把进程想象成一个工厂,那么线程就是工厂内部的一个生产线

操作系统如何管理一个进程?

1.先描述一个进程(明确一个进程上的相关属性)

2.再组织若干个进程(使用一些数据结构,把很多描述进程的信息给放到一起,方便进行增删改查)

2.PCB(process control block)

2.1PCB基础属性

1)进程ID

进程的身份标识 ---进程的身份证号

2)内存指针

指明了这个进程要执行的代码/指令再内存的哪里,以及这个进程执行中依赖的数据都在哪里

当运行exe,操作系统就会把这个exe(进程要执行的二进制指令和一些重要的数据)加载到内存中,变成进程

3)文件描述符表

程序运行过程中,经常要和文件打交道(文件是在硬盘上的)

进程每次打开一个文件,就会在文件描述符表上多增加一项

这个文件描述符表就可以视为一个数组,里面的每个元素又是一个结构体,对应着一个文件的相关信息

2.2PCB调度属性

为了实现进程的调度

这里涉及的问题就是所谓的进程调度

并行和并发(面试问题)

并行:微观上,两个CPU核心,同时执行两个任务的代码

并发:微观上一个CPU核心,先执行一会任务1 ,再执行一会任务2 ,...再执行一会任务1 .只要切换的够快,宏观上看

就好像这么多任务上同时执行

举例

1)状态

描述了当前这个进程接下来该怎么进行调度

就绪状态:随时可以去CPU上执行

阻塞状态/睡眠状态:暂时不可以去CPU上执行

2)优先级

先给谁分配时间,后给谁分配时间

以及给谁分的多,给谁分的少

3)记账信息

统计了每个进程,分别执行了多久,分别都执行了哪些指令

分别排队多久

为进程调度提供指导依据

4)上下文

表示了上次进程被调度处CPU的时候,当时程序执行状态

下次进程上CPU的时候,就可以恢复之前的状态,然后继续执行

进程被调度出CPU之前,要先把CPU中的所有的寄存器的数据都给保存到内存中(pcb的上下文字段)

相当于存档

下次进程再次被调度上CPU的时候,就可以从刚才的内存恢复这些数据到寄存器中,

相当于读档

存档+读档的过程,存档的存储的信息,就称为上下文/

3.进程的调度

就是操作系统在考虑CPU资源如何给各个进程进行分配

内存资源是依靠虚拟地址空间分配的

3.1.隔离

3,2 通信

进程之间现在通过虚拟地址空间,已经各自隔离开

但是在实际工作中,进程之间有的时候需要相互交互

4.总结

四.线程

系统支持多任务,程序员需要并发编程

为什么低效,因为找合适的资源需要时间精力

如何解决问题

思路1:进程池(数据库连接池,字符串常量池)

思路2 :通过线程来实现并发编程

为什么线程比进程更轻量?

因为进程重量重在资源申请释放(在仓库找东西)

线程是包含在进程中,一个进程中多个线程,共用同一份资源(同一份内存+文件)

五,进程和线程的区别和联系(面试)

  1. 进程包含线程,一个进程里可以有一个线程或者多个线程

  1. .进程和线程都是为了处理并发编程这样的场景

但是进程有问题,频繁创建和释放资源的时候效率低,相比之下,线程因为少了申请释放资源的过程更轻量,所以效率高

  1. 操作系统创建进程,要给进程分配资源,进程是操作系统分配资源的基本单位

操作系统创建线程,要在CPU上调度执行,线程是操作系统调度执行的基本单位

  1. 进程具有独立性,每个进程有各自的虚拟地址空间,一个进程挂了,不会影响到其他进程.

同一个进程中多个线程,共有同一个内存空间,一个线程挂了,可能会影响到其他线程,甚至导致整个进程崩溃.

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

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

相关文章

AI 看唇语,在嘈杂场景的语音识别准确率高达75%

事实上,研究表明视觉线索在语言学习中起着关键的作用。相比之下,人工智能语言识别系统主要是建立在音频上。而且需要大量数据来训练,通常需要数万小时的记录。 为了研究视觉效果,尤其是嘴部动作的镜头,是否可以提高语…

关于MySQL镜像构建过程中添加自动初始化数据库

需求描述一般而言,我们在拉取了 mysql 镜像并运行之后,其中的并不会存在我们自定义的数据库,都是在镜像运行后,自己主动导入数据库,那么有没有方式可以一运行 mysql 镜像,对应生成的 mysql 容器中就有我们自…

STM32 OTA应用开发——自制BootLoader

STM32 OTA应用开发——自制BootLoader 目录STM32 OTA应用开发——自制BootLoader前言1 环境搭建2 BootLoader工作原理以及常见分区介绍3 BootLoader的制作4 烧录下载配置5 运行测试结束语前言 什么是OTA? 百度百科:空中下载技术(Over-the-Ai…

【Java基础】IO流

IO流 最后一定要关闭流,防止资源泄露 字节流 一次读取1字节,8比特 FileInputStream import org.junit.jupiter.api.Test;import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;public class CopyBytes {pub…

2023最新网络工程师面试大全,全都答得上offer绝对拿到手软

一、目录 TCP和UDP都可以实现客户端/服务端通信,这两个协议有何区别? 是第几层的协议,其作用是什么? 请说一下FTP,SSH,TELNET,DNS,HTTP,HTTPS,SMTP协议的端口…

我的三周年创作纪念日——学习不止,创作不停

机缘 最开始写文章博客,是为了用输出倒逼自己输入。 从校园离开后,才逐渐意识到学习的不容易。没有写好的教材课程、没有画好的考点重点,没有一起学习的同学,更没有明确的学习方向和路径。 数据分析方向可以学的东西太多了&…

SUMO安装并实现交通仿真Demo

sumo简介sumo是一种开源,微观,多模态的交通模拟仿真软件,每辆车都是明确建模的,有自己的路线,并在网络独立移动下载安装sumo前往sumo官网下载,如下图红色标注所示,一键安装。实现Demo3.1加载道路文件.net.x…

软件工程学习

文章目录前言软件特点分类软件工程软件危机项目管理工具总结前言 本博客仅做学习笔记,如有侵权,联系后即刻更改 科普: 软件 软件的定义 软件不是程序,而是程序、数据以及开发、使用和维护程序需要的所有文档的完整集合。 特点 …

100份简历才找一个合适的,2023,软件测试岗位饱和了吗?

各大互联网公司的接连裁员,政策限制的行业接连消失,让今年的求职雪上加霜,想躺平却没有资本,还有人说软件测试岗位饱和了,对此很多求职者深信不疑,因为投出去的简历回复的越来越少了。 另一面企业招人真的…

为什么启动一个线程不用run()方法,而是用start()方法

在使用java多线程时,有三种方式创建线程 复习传送门 当使用继承Thread来实现多线程时, 我们会把线程执行的代码写在run() 方法中, 使用Thread的start()方法来启动一个线程。 代码如下: public class ThreadDemo extends Thread{O…

RocketMQ快速入门:消息发送、延迟消息、消费重试

一起学编程,让生活更随和! 如果你觉得是个同道中人,欢迎关注博主gzh:【随和的皮蛋桑】。 专注于Java基础、进阶、面试以及计算机基础知识分享🐳。偶尔认知思考、日常水文🐌。 目录1、RocketMQ消息结构1.1…

算法训练营 day50 动态规划 单词拆分 多重背包理论基础

算法训练营 day50 动态规划 单词拆分 多重背包理论基础 单词拆分 139. 单词拆分 - 力扣(LeetCode) 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词…

佳能iC MF645CX彩色激光多功能打印机报E302-0001故障码检修

故障现象: 一台佳能iC MF645CX彩色激光多功能一体机开机报E302-0001故障代码,如果设备未恢复,请联系经销商或客户支持中心。 维修分析: 佳能iC MF645CX彩色激光多功能一体机开机报E302-0001故障代码的

java中NumberFormat 、DecimalFormat的介绍及使用,java数字格式化,BigDecimal数字格式化

文章目录前言一、NumberFormat1、概述2、实例化方法3、货币格式化4、百分比格式化5、NumberFormat的坑5.1、不同的格式化对象处理相同数值返回结果不同问题源码分析:二、DecimalFormat1、概述2、常用方法3、字符及含义0与#的区别分组分隔符的使用“%” 将数字乘以10…

Python 基本数据类型(二)

1. 列表 列表是 Python 最常用的数据类型,它是有序元素的集合,元素之间以逗号分隔,用中括号括起来,可以是任何数据类型。同时它也是一种序列,支持索引、切片、加、乘和成员检查等。 **数组:**数据类型必须…

程序员的接单外卖平台

今天王同学给大家安利一款非常实用并且能接单的一款非常好的平台—— 独自开 独自开的功能非常之多 简直不要太香~ 集成第三方数学接口,形成标准化解决方案,提供开发者调用 支付分账功能电子签单功能税务接口硬件接口 独自开的开发功能简直不要太多~ 如…

LinkedList集合对元素进行增、查、删操作

ArrayList集合在查询元素时速度很快,但在增删元素时效率较低,为了克服这种局限性,可以使用List接口的另一个实现类LinkedList。LinkedList集合内部包含有两个Node类型的first和last属性维护一个双向循环链表,在链表中的每一个元素…

Python机器学习入门笔记(3)—— 线性回归

目录 线性回归 算法简述 LinearRegression() API SGDRegressor API LinearRegression() 和 SGDRegressor对比 过拟合与欠拟合 岭回归 应用场景 线性回归 算法简述 线性回归是一种基本的机器学习算法,它用于建立自变量和因变量之间的线性关系模型。它假设…

【Linux系统】第七篇:Linux调试器gdb的使用

文章目录一、gdb简介二、gdb的安装三、gdb使用3.1、release和debug版本3.2、gdb基本使用命令1、启动gdb2、调试命令3、显示代码(list)4、断点命令(breakpoint)5 、变量命令(variable)6、特殊调试命令7、调用…

企业微信的聊天机器人来了,免费下载(Python版)

大家好,这里是程序员晚枫,个人网址:python-office.com 上次分享了微信机器人的视频以后,视频下面有一个热门评论: 什么时候开发企业版微信机器人?自动回复、自动群发等等~ 在经历了一段时间的查找和开发以…