献县城市住房建设局网站,wordpress商品采集,注册公司一年需要多少费用,网络设计与实施一、计算机发展史 计算的需求在⼈类的历史中是广泛存在的#xff0c;发展大体经历了从⼀般计算⼯具到机械计算机到目前的电子计算机的发展历程。 人类对计算的需求#xff0c;驱动我们不断的发明、改善计算机。目前这个时代是“电子计算机”的时代#xff0c;发展的潮流是…一、计算机发展史 计算的需求在⼈类的历史中是广泛存在的发展大体经历了从⼀般计算⼯具到机械计算机到目前的电子计算机的发展历程。 人类对计算的需求驱动我们不断的发明、改善计算机。目前这个时代是“电子计算机”的时代发展的潮流是更快速、更稳定、更微型。 推荐大家看《计算机简史》这里就不过多介绍了 。
二、冯诺依曼体系 现代的计算机, ⼤多遵守 冯诺依曼体系结构。 CPU 中央处理器: 进行算术运算和逻辑判断. 存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储) 输入设备: 用户给计算机发号施令的设备. 输出设备: 计算机给用户汇报结果的设备。 针对存储空间硬盘 内存 CPU 针对数据访问速度CPU 内存 硬盘 认识计算机的祖师爷 -- 冯诺依曼 冯·诺依曼John von Neumann1903年12⽉28⽇-1957年2⽉8⽇, 美籍 匈⽛利 数学家、 计算机 科学家、 物理学家 是 20世纪 最重要的数学家之⼀。冯·诺依曼是 布达佩斯大学 数学博⼠在现代 计算机 、 博弈论 、 核武器 和 生化武器 等领域内的科学全才之⼀被后⼈称为“现代计算机之父”、“ 博弈论 之父”. 三、CPU的四个构成部分 从功能方面看CPU的内部由以下四部分组成
寄存器寄存器用来暂存指令、数据等处理对象可以看作是内存的一种。控制器负责把内存上的指令、数据等读入寄存器并根据指令的执行结果来控制整个计算机。运算器负责运算从内存读入寄存器的数据。时钟负责发出CPU开始计时的时钟信号。不过也有些计算机的时钟位于CPU的外部。时钟信号以Hz赫兹为单位代表每秒的频率时钟信号的频率越高CPU的运行速度越快。
四、CPU 基本工作流程 首先我们先介绍下我们需要到的指令 所谓指令即指导 CPU 进行工作的命令主要有操作码 被操作数组成。 其中操作码用来表示要做什么动作被操作数是本条指令要操作的数据可能是内存地址也可能是寄存器编号等。 指令本⾝也是⼀个数字用二进制形式保存在内存的某个区域中。 接下来我们演示指令运行的⼀个周期
CU控制单元ALU算术逻辑运算单元 第⼀条指令的运行其实没有用到我们之前制作的 ALU 部件但这只是其中⼀些指令而已大家可以尝试自己把剩余的 3 条指令运行一次观察并理解这个过程。 我们可以得到指令周期取指令--分析指令-- 执行指令
小结
CPU 中的 PC 寄存器是决定 CPU 要执行哪条指令的关键 指令是由 动作 操作对象组成 CPU 眼中只有指令没有其他的概念
五、编程语言
1、程序Program 所谓程序就是⼀组指令以及这组指令要处理的数据。狭义上来说程序对我们来说通常表现为⼀ 组文件。 程序 指令 指令要处理的数据。 2、编程语言发展 为了提升编程效率最早创造了汇编语⾔的概念。其实汇编语⾔和机器语言也就是指令直接是完全⼀⼀对应的只是相对于 0、1 这些数字发明了⼀些帮助⼈类记忆和理解的符号将其对应起来也就是我们上面看到的类似 LOAD_A、LOAD_B 等。 程序员完成编程之后需要使⽤汇编器 assembler将汇编语言翻译成机器语言。虽然汇编降低了程序员的记忆成本但要求程序还是必须掌握计算机硬件的所有知识而且随着计算机厂商越来越多⼀次编写的程序往往只适用于⼀类计算机。 这个是远远不够的所以更为高级的语⾔诞生了高级语言屏蔽了硬件细节让程序员可以站在更高的层⾯上思考自己的业务。这⾥以 C 语言为例程序员完成程序的编写之后需要使⽤编译器compiler和连接器linker将程序翻译成汇编语⾔再借助汇编器变成最终的机器语⾔。借助封装的思想我们学习编程变得越来越容易。不过有利则有弊⾼度的抽象导致很多的程序员把计算机视为⼀个⿊箱完全⽆法理解⾃⼰的程序是如何⼯作起来的。 注意⾼级语⾔的⼀条语句(Statement)往往对应很多条指令(Instruction)才能完成。
六、操作系统 操作系统是⼀组做计算机资源管理的软件的统称。⽬前常见的操作系统有Windows系列、Unix系 列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。 1、操作系统的定位 操作系统的两个基本功能
管理各种硬件设备给软件提供稳定的运行环境
2、什么是进程/任务 每个应⽤程序运⾏于现代操作系统之上时操作系统会提供⼀种抽象好像系统上只有这个程序在运⾏所有的硬件资源都被这个程序在使⽤。这种假象是通过抽象了⼀个进程的概念来完成的进程可以说是计算机科学中最重要和最成功的概念之⼀。 进程是操作系统对⼀个正在运行的程序的⼀种抽象换⾔之可以把进程看做程序的⼀次运⾏过程同时在操作系统内部进程又是操作系统进行资源分配的基本单位。 3、进程控制块抽象 计算机内部要管理任何现实事物都需要将其抽象成⼀组有关联的、互为⼀体的数据。操作系统一般是用C/C实现的因此就可以用类或结构体来描述这一特征。 我们就给 表示进程信息的结构体起了个名字PCB进程控制块。 这样每⼀个 PCB 对象就代表着⼀个实实在在运⾏着的程序也就是进程。 操作系统再通过这种数据结构例如线性表、搜索树等将 PCB 对象组织起来⽅便管理时进⾏增删查改的操作。 PCB中的一些核心属性
pid进程的身份标识系统会保证同一个机器上同一时刻每个进程的pid都是唯一的。内存指针一组描述了进程使用内存资源的详细情况进程都能使用哪些内存进程也需要知道哪里存的是指令哪里存的是数据文件描述符表描述了这个进程所涉及的硬盘相关的资源。 进程经常要访问硬盘。操作系统对于硬盘这样的硬件设备进行了封装抽象为”文件“按照”文件“的方式来操作。 一个进程要想操作文件需要先”打开文件“就是让进程在文件描述符表中分配一个表项构造一个结构体表示这个文件的相关信息。 4、CPU 分配⸺进程调度 我们假设CPU是一个舞台要执行的指令进程要执行指令是一个演员。一个CPU可能有一个核心也可能有多个核心每个核心都是一个舞台演员需登上舞台才能表演同一时刻一个舞台上只能有一个演员进程 如果一个电脑的CPU有16个核心但系统上的进程远远不止16个这时候就不够分了这就涉及到一个非常关键的概念——分时复用并发。 也就是让演员轮流上场。 对于单核CPU 单核CPU也能支持一个“多任务操作系统”的运行。这就是用到了“分时复用并发”。 CPU的核心只有一个先执行进程1的代码执行一会儿后让进程1下来进程2上进程2执行一段时间后换进程3以此类推。 只要切换速度足够快人们是感知不到这个切换的过程的在人眼看起来多个任务/进程就是“同时执行”的。对于CPU频率都是多少GHz一秒钟执行几十亿条指令意味着短时间内CPU就可以进行很多次的进程切换只要速度够快人们就感知不到。当然也会存在极端情况比如系统的进程太多负担太重就会出现卡顿的现象。 对于多核CPU
多核CPU的产生同时执行进程就变得更加复杂。 假设有一个四核CPU同时就可以有四个不同的进程在各自的“舞台”上进行执行此时微观上这几个进程也是“同时执行”的而不是靠快速地切换模拟的“同时执行”单核CPU这时也称为“并行执行”。但是针对每个核心前面的“并发执行”也依然存在。 当前现代的计算机的执行过程往往是并行并发同时存在的 因此往往将“并行”和“并发”统称为“并发”对应的编程方式称为“并发编程”解决一个问题同时搞多个任务来执行共同协作解决问题。 对于实现进程调度就需要PCB提供一些属性来支持系统完成对这些进程的调度。以下属性
状态描述一个进程是否能去CPU上执行如一个进程处于阻塞状态就不方便到CPU上执行。对于就绪状态就是随时准备好到CPU上去执行。优先级多个进程等待系统的调度时根据其优先级来确定其调度次序。记账信息针对每个进程占据了多少CPU时间进行了一个统计会根据这个统计结果进一步调整调度的策略因此就需要在下一轮次进行调整至少保证不会出现进程完全捞不着CPU的情况。上下文支撑进程调度的重要属性相当于游戏中的存档和读档。 每个进程在运行过程中就会有很多的中间结果在CPU的寄存器中。 存档在进程调度出CPU之前把当前CPU寄存器中的这些信息给单独保存到一个地方。 读档在该进程下次再去CPU上执行的时候再把这些寄存器的信息给恢复回来。 5、内存分配⸺内存管理 操作系统对内存资源的分配采⽤的是空间模式⸺不同进程使用内存中的不同区域互相之间不会干扰。 6、进程间通信 进程是操作系统进⾏资源分配的最⼩单位这意味着各个进程互相之间是⽆法感受到对方存在的这就是操作系统抽象出进程这⼀概念的初衷这样便带来了进程之间互相具备“隔离性”。 但现代的应⽤要完成⼀个复杂的业务需求往往⽆法通过⼀个进程独⽴完成总是需要进程和进程进⾏配合地达到应⽤的⽬的如此进程之间就需要有进⾏“信息交换”的需求。进程间通信的需求就应运⽽⽣。 ⽬前主流操作系统提供的进程通信机制有如下 管道 共享内存 ⽂件 ⽹络 信号量 信号 其中网络是⼀种相对特殊的 IPC 机制它除了支持同主机两个进程间通信还支持同一网络内部非同⼀主机上的进程间进行通信。