漫游计算机系统

news/2024/10/30 23:17:34/

1.信息就是位 + 上下文

        那么什么是信息呢?

        在计算机系统中,所有的信息——包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据。本质上是一串比特位。

        那么又要了解什么是比特了,比特(bit)就是二进制,只表示0和1。

        源程序实际上就是由值0和1组成的位(比特),8个位组成一组,称作字节。每个字节表示程序中的某些文本字符。

        文本文件是指只由ASCII字符构成的文件,而其他所有文件都是二进制文件。

        区分不同数据对象的唯一方法:就是读到这些数据对象的上下文。

2.程序被其他程序翻译成不同的格式

        一个程序要被执行,一般要执行4步:预处理、编译、汇编、链接

        预处理:读取以字符#开头的命令,把其表示的内容插入到程序文本中.i。

        编译:把程序文本文件.i翻译成文本文件.s,它是一个汇编语言程序。

        汇编:把文本文件.s翻译成机器语言指令.o文件(二进制文件)。

        链接:处理合并.o文件生成可执行文件。

3.系统的硬件组成

        总线:贯穿整个系统的一组电子管道。携带信息字节并负责在各个部件间传递。

通常被设计成传送定长的字节快(字word)。字中的字节数表示字长。

        I/O设备:系统与外部世界的联系通道。

        一般输入设备有:鼠标和键盘

        输出设备:显示器

        存储设备:磁盘(长期存储数据和程序)

        每个I/O设备都通过一个控制器或适配器与I/O总线相连。

        控制器:I/O设备本身或系统的主印刷电路板(主板)上的芯片组。

        适配器:一块插在主板插槽上的卡。

        两者封装方式不同,但两者功能都是在I/O总线和I/O设备之间传递信息。

        主存:临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。

        从物理上来说,由一组动态随机存取存储器(DRAM)芯片组成

        从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯一的地址(数组索引),而数组索引都是从0开始的。

        处理器:中央处理单元(CPU),是解释或执行存储在主存中指令的引擎。核心是一个大小为一个字的存储设备(寄存器,程序计数器PC)。在任何时候,PC都指向主存中某条机器语言指令(即含有该条指令的地址)。

        CPU在指令的要求下可能会执行的操作:

4.运行hello程序

5.高速缓存至关重要

        机械原理,较大的存储设备要比较小的存储设备运行得慢,而快速设备的造价远高于同类的低速设备。

        寄存器文件只存储几百字节的信息,而主存里可以存放几十亿字节;但处理器从寄存器文件中读数据比从主存中读取几乎要快100倍。而随着半导体技术的发展,处理器与主存之间的差距还在持续增大,故加快处理器的运行速度比加快主存的运行速度要容易和便宜得多。

        针对这种差异,系统设计者采用了更小更快的存储设备,称为高速缓存存储器(cache memory,简称cache或高速缓存),作为暂时的存储区,存放处理器最近可能会需要的信息。

        L1级高速缓存:容量可以达到数万字节,访问速度几乎和访问寄存器文件一样快。

        L2级高速缓存:访问的时间要比L1的时间长5倍,但还是比访问主存快5~10倍。

        L3级高速缓存:

        高速缓存使用一种叫做静态访问存储器(SRAM)的硬件技术实现的。

        为什么系统的存储器很大,同时访问速度也能很快呢?

        原因是利用了高速缓存的局部性原理,即程序具有访问局部区域里的数据和代码的趋势。

6.存储设备形成层次结构

存储器层次结构,从上至下,设备的访问速度越来越慢、容量越来越大,并且每字节的造价也越来越便宜。

存储器层次结构的主要思想是上一层的存储器作为低一层存储器的高速缓存。

7.操作系统管理硬件

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

        (1)防止硬件被失控的应用程序滥用

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

        通过抽象概念(进程、虚拟内存和文件)来实现这两个功能。

        文件是对I/O设备的抽象表示;虚拟内存是对主存和磁盘I/O设备的抽象表示;进程是对处理器、主存和I/O设备的抽象表示。

        进程是操作系统对一个正在运行的程序的一种抽象。一个系统中可以同时运行多个进程,而每个进程都好像在独占地使用硬件。

        并发运行是说一个进程的指令和另一个进程的指令是交错执行的。在大多数系统中,需要运行的进程数是多于可以运行它们的CPU个数的。

        操作系统通过处理器在进程间切换实现交错执行的机制称为上下文切换。

操作系统保持跟踪进程所需的所有状态信息,这种状态,就是上下文。

在任何一个时刻,单处理器系统都只能执行一个进程的代码。

        从一个进程到另一个进程的转换是由操作系统内核(kernel)管理的,内核是操作系统代码常驻主存的部分。

        内核不是一个独立的进程,它是系统管理全部进程所用代码和数据结构的集合。

        线程:一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。

        多线程之间比多进程之间更容易共享数据,常用于网络服务器对并行处理的需求。

        虚拟内存:抽象概念,为每个进程提供了一个假象,即每个进程都在独占地使用主存。

        基本思想是把一个进程虚拟内存的内容存储在磁盘上,然后用主存作为磁盘的高速缓存。

        文件:字节序列。每个I/O设备,包括磁盘,键盘,显示器,甚至网络,都可以看成是文件,即一切皆可文件。

8.系统之间利用网络通信

Amdahl定律:

        当我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度。

        若系统执行某应用程序需要时间为T(old),假设系统某部分所需执行时间与改时间的比例为a,而该部分性能提升比例为k。即该部分初始所需时间为aT(old),现在所需时间为(aT(old))/k。

        总执行时间为:

        主要观点:要想显著加速整个系统,必须提升全系统中相当大的部分的速度。

并发和并行

        并发指一个同时具有多个活动的系统;并行指的是用并发来使一个系统运行得更快。

        1.线程级并发

        多核处理器是将多个CPU集成到一个集成电路芯片上。

        L1高速缓存分为两个部分——一个保存最近取到的指令,另一个存放数据。

        超线程,也被称为同时多线程,是一项允许一个CPU执行多个控制流的技术。

        2.指令级并行

        现代处理器可以同时执行多条指令的属性称为指令级并行

        如果处理器可以达到比一个周期一条指令更快的执行速率,就称之为超标量处理器。

        3.单指令、多数据并行

        许多现代处理器拥有特殊的硬件,允许一条指令产生多个可以并行执行的操作,这种方式称为单指令、多数据,即SIMD并行。


http://www.ppmy.cn/news/97629.html

相关文章

面试题 01.01. 判定字符是否唯一

判定字符是否唯一 实现一个算法&#xff0c;确定一个字符串 s s s 的所有字符是否全都不同。 示例 1&#xff1a; 输入: s “leetcode” 输出: false 示例 2&#xff1a; 输入: s “abc” 输出: true 限制&#xff1a; 0 < len(s) < 100 s[i]仅包含小写字母 如果…

mysql错误码1045解决方案

用数据库连接工具访问提示 1045的错误码&#xff0c;在命令行输入mysql -u root –p&#xff0c;输入密码&#xff0c;经常出现下面的错误信息&#xff0c;相信该错误信息很多人在使用mysql时都遇到过。 ERROR 1045 (28000): Access denied for user rootlocalhost (using pas…

网站部署与上线(1)虚拟机

文章目录 .1 虚拟机简介2 虚拟机的安装 本章将搭建实例的生产环境&#xff0c;将所有的代码搭建在一台Linux服务器中&#xff0c;并且测试其能否正常运行。 使用远程服务器进行连接&#xff1b; 基本的Linux命令&#xff1b; 使用Nginx搭建Node.js服务器&#xff1b; 在服务器端…

3D项目中用到的一些算法

判断点是否在多边形内部&#xff08;冬奥&#xff09; &#xff08;1&#xff09;面积和判别法&#xff1a;判断目标点与多边形的每条边组成的三角形面积和是否等于该多边形&#xff0c;相等则在多边形内部。 &#xff08;2&#xff09;夹角和判别法&#xff1a;判断目标点与所…

Oracle数据库从入门到精通系列之十:基于Docker部署Oracle数据库19c的详细步骤

Oracle数据库从入门到精通系列之十:基于Docker部署Oracle数据库19c的详细步骤 一、下载Oracle数据库19c镜像二、查看Oracle数据库19c的镜像三、创建Oracle数据库19c的数据目录四、启动Oracle19c数据库容器五、查看Oracle19c数据库容器启动日志六、查看密码修改脚本七、修改sys…

Baumer工业相机堡盟工业相机使用BGAPISDK将工业相机设为Burst模式以及该模式的优势以及行业应用(C#)

Baumer工业相机堡盟工业相机使用BGAPISDK将工业相机设为Burst模式以及该模式的优势以及行业应用&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的Burst模式的技术背景Baumer工业相机使用BGAPISDK将设置Burst模式1.引用合适的类文件2.使用BGAPI SDK初始化相机设置Bur…

uni-app常用场景速查记录

记录一下uniapp开发过程中遇到的问题场景,方便后期查看. 1.elementUI中textarea文本如何设置换行显示 2.uniapp中实现文字滚动显示 3.下拉刷新和触底分页查询 1.elementUI中textarea文本设置换行显示 el-input标签中type为textarea中录入的文本内容,在表格中显示…

Prometheus之exporter详解

何为exporter Prometheus 监控基于一个很简单的模型: 主动抓取目标的指标接口(HTTP 协议)获取监控指标, 再存储到本地或远端的时序数据库. Prometheus 对于指标接口有一套固定的格式要求, 格式大致如下: # HELP http_requests_total The total number of HTTP requests. # TYPE…