深入理解计算机系统之旅(一)计算机系统漫游
1、计算机系统是什么?
我们直观的可以看到的计算机系统就是一台电脑。包含主机、显示器、键盘鼠标,然后显示器上会显示不同界面,用鼠标点击,键盘输入界面就会对应操作。
2、深入一点,他们是怎样工作的?
计算机系统是由硬件和系统软件组成,它们共同工作来执行应用程序。
3、再深入一点,硬件是什么?系统软件是什么?应用程序是什么?
硬件是组成计算机系统的基础,大家耳熟能详的就是CPU、内存、硬盘、主板等。
系统软件是执行在硬件之上的一层控制软件。就是我们常常听到的Windows XP、WIN7、Linux,它们的目的就是管理好各个硬件,屏蔽硬件的差异性,提供一个统一的应用软件工作的平台。
应用程序是执行在系统软件之上的一层软件。他们受到系统软件的管理,同一时候也享受系统软件提供的各种资源和功能接口,就是我们常常常使用的QQ、迅雷等等。
4、进入正题,计算机工作时的原理,它一直在做着什么样的处理工作?
计算机工作时一直在处理的是数据,计算机内部能处理的数据仅仅有两种形式。0和1,这是组成计算机硬件的半导体的电气特性。怎样让0和1能过表示现实世界的各种信息?那么就须要对他们进行组合和编码。
CPU的指令是由一组组的0和1编码构成。
我们在显示器上看到的各种字符和文字也是由0和1的组合编码而成,终于通过一定的方式在显示器上模拟出字符和文字的形状显示出来。
相同的0和1组成的位数据在不同的地方表示的意义不同,怎样差别这种数据?
计算机系统中全部的信息、数据——包含磁盘文件、内存中的程序、用户的数据以及网络上传送的数据,都是由一串比特表示,也就是0和1的位。区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。比方,在不同的上下文中,相同的字节序列可能表示一个整数、字符串或者机器指令。
5、程序在不同阶段的表示——由人类易懂的高级语言到机器易懂的低级指令
高级语言(比方C语言)编写的程序源代码可以被人读懂。可是计算机却不懂,为了能让计算机可以知道怎样执行程序,就须要把每条C语言程序语句都转化为一系列的低级机器语言指令,然后这些指令依照一种可执行目标程序的格式打包并以文件的形式存储在硬盘上。6、执行程序——存放在存储器中的机器可以懂的低级指令被读取、解释、执行
硬盘上的程序被执行时会首先由操作系统依照一定规则和格式读取并载入到内存中,然后调度并交由CPU执行,执行一个程序的过程很复杂,它须要系统中不同功能的硬件、软件一起协调工作。不管怎样整个过程中的数据信息流遵循输入——》输入出的原则,被各个器件处理然后流转。
7、漫游结束
计算机系统是由硬件和系统软件组成,它们共同协作以执行应用程序。计算机内部的信息被表示为一组组的0和1二进制位。它们根据不同的上下文有不同的解释方式。
程序被其它程序编译成不同的形式,開始时是源代码文本,然后被编译器和连接器翻译成二进制可执行文件。
处理器读取并解释存放在主存里的二进制指令。由于计算机花费了大量的时间在存储器、I/O设备和CPU寄存器之间拷贝数据,所以系统中的存储设备就被按层次排列,CPU寄存器在顶部。接着是多层的硬件快速缓存存储器,DRAM主存储器,DRAM主存储器和磁盘存储器。在层次模型中位于更高层的存储设备比低层的存储设备要快,可是单位存储价格也更高。
操作系统内核是应用程序和硬件之间的媒介。它提供三个主要的抽象概念,文件是对I/O设备的抽象概念。虚拟存储器是对主存和硬盘的抽象概念,进程是处理器、主存和I/O设备的抽象概念。
最后网络提供计算机系统之间通信的手段,从某个系统的角度来看。网络就是一种I/O设备。
相关文章
- 深入理解C#中的泛型(一)
- 深入理解HTML5:语义、标准与样式
- Shiro-Permissions 对权限的深入理解
- 深入阿里云大数据IDE–MaxCompute Studio
- 深入理解Spark:核心思想与源码分析. 3.3 创建metadataCleaner
- 深入理解Spark:核心思想与源码分析. 3.12 Spark环境更新
- 深入实践Spring Boot2.2.2 创建Redis服务类
- 深入实践Spring Boot3.5 运行与发布
- [转]深入理解Docker ulimit(docker容器启动报错library initialization failed - unable to allocate file descriptor table - out of memory问题解决)
- 【MySQL进阶-07】深入理解mysql性能优化以及解决慢查询问题
- 深入理解Java虚拟机——Hotpot虚拟机对象
- 《深入理解JavaScript》——1.7 运算符
- 《深入理解Android 5 源代码》——第1章,第1.2节剖析Android系统架构
- 深入理解JVM虚拟机读书笔记——运行时数据区
- swift 深入理解Swift的闭包
- 深入理解 iOS 开发中的锁
- 【转载】 深入理解TensorFlow中的tf.metrics算子
- 深入理解nodejs的HTTP处理流程
- 浅析日期格式化注解@DateTimeFormat无效的问题分析深入理解@RequestBody的应用
- 深入理解dataset及其用法
- 对PostgreSQL的prepared statement的深入理解
- 【Verilog基础】【计算机体系结构】深入理解Cache一致性(针对多核SoC系统)
- (3.16)mysql基础深入——mysql字符集
- 深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP
- C++实现爬虫,深入理解爬虫原理(最详细,最简单的教程)