文章目录
前言
`这篇文章我会为大家简单介绍什么是计算机大致的工作,我们会针对,计算机原理,以及操作系统和内存管理(虚拟内存空间)来简单帮助大家认识计算机的工作
一、计算机原理
温馨提示:前面看的懵懵懂懂的可以根据我后面写的如何理解计算机原理部分(总结部分)去理解这个部分
1.冯诺依曼体系
提到计算机原理,这我就不得不提到冯诺依曼体系(Von Neumann Archiecture),对于冯诺依曼这个人,我们也简单进行介绍,他被称作计算机之父,因为他提出了程序存储的思想,并成功将其运用在计算机的设计之中,将计算机的发展代入了一个新的台阶.
那么冯诺依曼体系又是由什么构成的,他又为什么这么重要呢?
大体上,冯诺依曼体系的结构是由输入设备,输出设备,以及储存器和控制器构成.大致图形如下
其中运算器和控制器统称为cpu(cpu中央处理器),储存器包括内存和外存,
各自作用如下
CPU 中央处理器: 进行算术运算和逻辑判断
存储器: 分为外存和内存,用于存储数据(使用二进制方式存储)
输入设备: 用户给计算机发号施令的设备
输出设备: 计算机个用户汇报结果的设备
冯诺依曼体系为什么这么重要?
冯.诺依曼结构消除了原始计算机体系中,只能依靠硬件控制程序的状况(程序作为控制器的一部分,作为硬件存在),将程序编码存储在存储器中,实现了可编程的计算机功能,实现了硬件设计和程序设计的分离,大大促进了计算机的发展。
2.计算机的三大语言
计算机语言可以分为三个大类,机器语言,汇编语言和高级语言
其中机器语言就是由二进制构成的,肉眼看不懂的,即给机器看(给cpu看)的语言
高级语言则是我们都知道的,c语言,Java,python这些我们可以读懂的语言
汇编语言则是介于它们之间,通过使用"助词符"来代替二进制指令,也是人不太好理解的语言
3.总结
通过上述介绍,我们应该大概对计算机原理有了一定的认识,那么什么是计算机原理呢?,即,计算机在运行时,先从内存中取出第一条 指令 ,通过控制器的 译码 ,按指令的要求,从 存储器 中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。. 接下来,再取出第二条指令,在控制器的指挥下完成规定操作。. 依此进行下去。. 直至遇到停止指令。. 程序与数据一样存取,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作是计算机最基本的工作原理.
这是冯诺依曼最先提出的,我们要怎么去理解呢?
即内存中(存储器里分内外存)取出指令(由输入设备输入到内存中的),通过控制器的编译,让其成为机器能看懂的语言(就是将计算机三大语言里,那三种语言的转换),按指令要求,再取进行加工,最后再送回内存中,进行输出,这样不断不断,一步步的,自动化的实现过程就是计算机原理.
二、 操作系统
1.什么是操作系统
操作系统(Operation System, OS) 是指控制和管理整个计算机系统的硬件和软件资源,并合理的组织和调度计算机的工作和资源的分配,以提供给用户和其它软件方便的接口和环境,它是计算机系统中最基本的系统软件.
我们可以简单化,我们把操作系统看成可操作的软件,软件我们都知道,qq,微信,都是软件,那么对上可以为这些软件提供稳定的运行环境的,对下可以管理硬件设备的软件,我们就称之为操作系统.
2.操作系统有哪些
(1)
我们最熟悉的操作系统就是Windows了
Windows又有Windows98,Windows7,8,9,11,Windows xp等等.
(2)
其次就是Linux,这个是对于我们程序员来说比较熟悉,且要掌握的操作系统
(3)
其它的操作系统还有mac呀,手机上的操作系统比如安卓,等等
3.操作系统的定位
(1)操作系统整体的结构
应用程序是我们程序员主要应对的部分.
系统调用则可以看成操作系统为应用程序提供的api(扩展一下,api你可以理解成方便应用执行的小方法,比如你java程序系统给你提供的方法就是api,比如println方法)
操作系统内核,则是操作系统的核心功能,就是管理上和下的,怎么理解呢,以及为什么要操作系统内核呢?其实你可以理解成你去食堂打饭,你是一个用户,你可以自由决定你想吃什么,你就是一个用户态,但是实际上有些什么菜是你决定不了的,这就需要食堂内部去决定,这就是一个内核太,即操作系统内核决定的.(即操作系统内核的代码不受程序员控制,由操作系统内核决定)
驱动程序和硬件设备,硬件设备没什么好说,驱动程序即众多的硬件设备中,每个厂商都有自己的驱动程序,有了对应的驱动程序,才能识别硬件设备.
三.操作系统的进程管理
1.什么是进程/任务
每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一
进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位.
简单去理解的话,就可以理解为,一个跑起来的程序就是一个进程,你可以打开任务管理器看,
这些都是进程,没有跑起来的程序则不算进程.
电脑为什么变卡呢?每个进程都会消耗资源,因此当进程很多的时候,电脑自然就卡了.
2.进程组成
进程是一个很重要的"软件资源",是由操作系统内核来负责管理的.
进程的俩个重要特征分别是描述和组织
描述:目的是讲清楚都有哪些属性特征
使用结构体(c语言的结构体)来描述进程属性.
其中给这个结构体取了一个特殊的名字,PCB(进程控制块)
**组织:**通过一定的数据结构(双向链表),把多个基本单位给连接起来.
创建一个进程,本质上就是创建一个 PCB 这样的结构体对象,把它插入到链表中.
销毁一个进程,本质上就是把链表上的 PCB 节点删除掉
.任务管理器查看到进程列表,本质上就是遍历这个 PCB 链表
3.进程调度的属性
(1)进程的状态
就绪状态:就是准备就绪,可以随叫随到.进程随时可以去CPU上执行
运行状态:顾名思义,正在运行
阻塞状态:就是没得空,暂时无法在CPU上执行了
(2)优先级
进程也是有优先级的!
(3)上下文(存档)
当操作系统在进行进程切换的时候,需要把进程执行的状态给记录下来,相当于是存档,当下次该进程再上CPU上执行的时候,就可以再根据这个存档继续.
对于上下文,就是CPU各个寄存器的值(寄存器就是CPU储存数据的模板,保存的就是程序运行的中间的结果).
(4)记账信息
操作系统,统计每个进程在 cpu 上用的时间和执行的指令数目根据这个来决定下一阶段如何调度
四.CPU分配
CPU分配我们上面也讲了,属于操作系统内核来决定的,程序员是感知不到的,CPU具体会怎么去继续分配进程,大致方法有俩个
一个是并行一个是并发.
并行,就是比如有多个核心,几个核心的进程是同时进行的.
并发,就是多个核心,一个核心进程在执行,其它就等待,但是谁执行可以快速切换.