当前位置: 首页 > news >正文

计算机工作原理(简单介绍)

计算机基础

  • 冯诺依曼体系
  • 指令(Instruction)
  • 编程语言(Program Language)
  • 操作系统(Operating System)
  • 进程调度
  • 线程
  • 进程和线程的区别

计算的需求是人类一直都需要的,从最初的计算工具机械计算机到目前的电子计算机的发展过程,追求更快速、更稳定、更微型

冯诺依曼体系

约翰·冯·诺依曼(John von Neumann,1903年12月28日—1957年2月8日) ,匈牙利裔美籍数学家、计算机科学家、物理学家和化学家,出生于布达佩斯犹太家庭,1926年获布达佩斯大学数学博士学位 ,1933年起任普林斯顿高等研究院教授,1937年当选美国国家科学院院士,计算机祖师爷
在这里插入图片描述
现在计算机大多数都是遵守这个冯诺依曼体系
1.cpu
2.存储器
3.输入设备
4.输出设备
访问速度:cpu > 内存 > 硬盘
存储空间:硬盘 > 内存 > cpu
在这里插入图片描述

cpu基本工作流程简单介绍,其有逻辑门、算数逻辑单元、寄存器等等,这里没有进行介绍,重要的介绍了指令的执行顺序

指令(Instruction)

指令就是cpu进行工作时候的一些命令,由操作码和操作数组成
分为取指令、解析指令和执行指令
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上面是运算 3 + 14的指令执行情况,不断取指令、解析指令和执行指令,解析指令时候根据操作码操作数知道,在那个位置进行什么操作,就这样不断的进行上面三步骤,知道取到指令为0就结束了,指令是由动作+操作对象组成,并且其cpu中只有指令,没有其他概念

编程语言(Program Language)

现在有 C / C++ 、Python、Java、Go等等这些高级语言进行编程

程序(Program)就是⼀组指令以及这组指令要处理的数据。
程序 = 指令 + 指令要处理的数据

由于计算机是指可以识别机器语言(由0和1组成)的,可以使用机器语言进行编写是非常痛苦的,因为二进制编程比较麻烦,为了提高编程效率,最早就创建出了汇编语言,其实就是汇编语言和机器语言是一一对应的,但是相对于1、0这些数字,发明了一些更好记忆和理解的符号对应起来,像上面的LOAD_A、LOAD_B等等,编写完以后就要使用汇编器将其翻译成机器语言,但是这样仍然不够高效,最终高级语言诞生了,高级语言借助封装让编程变得容易一些,高级语言的一条语句往往对应多条指令
在Java中,System.out.println(''hello world")运行语句会先在JVM上面调用C++版本的函数,在调用操作系统的API,操作系统把字符串给驱动程序,最后程序控制硬件完成显示操作
在这里插入图片描述

操作系统(Operating System)

操作系统是计算机资源管理的统称,目前的操作系统有:Windows系列、Unix系列、Linux系列、Android系列、ios系列等等
在这里插入图片描述
操作系统:管理好所有硬件设备和给软件提供稳定的运行环境

进程/任务(Process/Task)
在计算机上运行起来的应用程序称为进程/任务
进程是操作系统对一个正在运行程序的抽象,并且进程是操作系统进行资源分配的基本单位(资源分配的最小单位)

在这里插入图片描述
操作系统对进程管理分为两个环节
1.描述
因为操作系统主要是C语言写的,因此这里通过一个结构体变量,描述出一个进程的所有属性,称为PCB(进程控制块)
2.组织
使用一定的数据结构将这么多的PCB连接起来,使用的数据结构为链表、搜索树等等

PCB介绍

PID进程标识符,是整数,进程开始时候操作系统自动分配的,并且相同时刻是不会出现相同的PID

并且像这些浏览器每一页都是一个单独的进程,都要有自己单独的PID
在这里插入图片描述

2.内存指针
进程在运行是需要内存的,并且在其内存存储 空间中有的部分是‘指令’,有的部分是‘数据’,通过内粗指针知道那个是指令,那个是数据

3.文件描述符表
一个进程想要读写文件,需要先打开,打开的时候就会在PCB中构建一个文件相关的结构体,放到PCB的文件描述符表
文件描述符表中有很多的结构体,每一个结构体都有具体的文件信息,通过文件信息就可以知道文件在硬盘那个位置

进程调度

4 .进程状态
进程有很多状态,但是可以简短理解,将其分为两种 就绪和阻塞
" 就绪"就是处于随叫随到
阻塞” 状态一位置该进程无法参与到CPU调度执行上

5.进程的优先级
决定那个进程优先安排CPU资源,优先给重要的进程分配,相反不是特别重要的可以让其优先级低一点

6.进程的上下文
一个进程调度到CPU上执行,离开CPU过了一段时间可能还会回到CPU上接着之前的位置继续向下执行,像游戏的存档功能
在计算机中,CPU内部有很多的寄存器用于保存一些程序运行的一些中间状态,有些寄存器还可以记录到指令执行到了哪一条了等等,记录一些有关”上下文"相关的东西,因此其进程在执行的时候,其寄存器是在不停的变化的
当进程离开时候,会将寄存器的值全部拷贝出来保存内存中,当进程又开始执行时候,将其拷贝的寄存器的值全部重新写入寄存器中

7.进程的记账信息
统计机制,统计进程在CPU运行了多久
因为进程的优先级问题,可能使某一个进程吃到的CPU资源非常少
因此可以通过记账信息识别出来,这样可以灵活调整,使其更好的分配资源

进程,多任务的计算机中,多进程是”并发编程“ 解决方案,但是随着业务规模变大,一个服务器任务变多,有了更多进程,因此服务器会不断的 创建和销毁进程,这个过程是非常浪费时间的

线程

因为其进程没有办法解决这些问题,所以就有了线程
线程(Thread)也叫轻量级进程,线程的创建和销毁都要比进程低得多

进程包含了线程,进程是操作系统资源分配的基本单位
一个进程中有若干个线程,是可以共用操作系统的这些资源的,因此在同一个进程中的线程中共用PCB和内存指针和文件描述符表,但是其有各自的状态、上下文、优先级和记账信息等等

每一个线程都可以放到CPU上调度执行,线程是操作系统调度的基本单位
在这里插入图片描述
多进程的做法,就是在开辟一个空间,同时一人消灭50只
在这里插入图片描述
多线程的做法:直接添加人
在这里插入图片描述
随着线程数目变多,其效率也会提高,但是当过多了,可能会降低效率
如果太多了效率可能会降低,并且因为其共用资源,因此可能会发生冲突,可能会影响整个进程中其他线程的运行,这时候就是线程冲突问题

在这里插入图片描述

进程和线程的区别

线程:轻量级进程,线程是操作系统调度执行的基本单位(最小单位)
进程:操作系统资源分配的基本单位(最小单位)
关系:一个线程包含多个线程
区别:
1.每一个进程有自己独立的资源,进程和进程之间不能共享;同一个进程中的线程之间,共享相同的资源
2.进程之间不会相互影响,同一个进程的线程挂了,可能会对其他线程有影响
3.进程是操作系统资源分配的最小单位,线程是操作系统调度执行的基本单位
4.因为线程资源共享,因此线程中特别容易出现资源访问冲突,进程中基本上不会出现

http://www.dtcms.com/a/441806.html

相关文章:

  • 自己如何建设网站聊天室做医药代表去什么招聘网站
  • 指针和数组解析
  • 【AI4S】3DSMILES-GPT:基于词元化语言模型的3D分子生成
  • Transformer推理优化全景:从模型架构到硬件底层的深度解析
  • MySQL 索引全解析:结构、优化与索引下推实战指南​
  • clear configuration interface概念及题目
  • 设计模式(C++)详解——策略模式(1)
  • 基于html5设计的网站建设做一些购物网站
  • Vivado综合通关指南:从IP打包失败到工具崩溃的四重考验
  • 语义分割概述
  • 数据结构之排序算法
  • 绍兴网站建设优化手机企业网站建设开发
  • 偏导数解释
  • Linux内核与设备管理:USB存储驱动usb_storage/uas的安全卸载与复原
  • fallocate: fallocate failed: Text file busy
  • visio实现扇形图绘制的方式方法-以三等分扇形为例
  • 以太坊私有链搭建与智能合约部署指南
  • 网站开发 教学大纲网页设计图片与图片的位置
  • python+flask_socketio+pyautogui实现简易远程桌面功能
  • flask_socketio+pyautogui实现的具有加密传输功能的极简远程桌面
  • 深入了解linux网络—— TCP网络通信(上)
  • Android Jetpack 核心组件实战:ViewModel + LiveData + DataBinding 详解
  • 商务厅网站建设意见怎么做网站注册推广
  • Fragment 崩溃恢复后出现重叠问题的复现方式
  • 设计模式(C++)详解——策略模式(2)
  • 使客户能够大规模交付生产就绪的人工智能代理
  • Layui 前端和 PHP 后端的大视频分片上传方案
  • 无状态HTTP的“记忆”方案:Spring Boot中CookieSession全栈实战
  • Java 内存模型(JMM)面试清单(含超通俗生活案例与深度理解)
  • 2015网站建设专业建网站设计公司