寻合规之道,共筑数据保障之堡。专注为数据安全管理者、技术专家、隐私法务、律师等专业人士打造的知识共享与交流平台。点击 "合规社" > 点击右上角“···” > 设为星标⭐筑基,我要筑基
欲在数字世界修个仙,那我们先了解下这个数字世界吧,也顺带看看我们要掌握哪些技能。下面我们将跟大家一起重温下我们曾经的青葱岁月,回顾下大学时期学的一些理论知识。先别急着喷,而是想让大家回顾下相关要点,以及哪些点我们在后续会实实在在的用到。
咦,啥是计算机?
提起计算机,大家可能会不屑的说,不就是一台计算器嘛,哦,不对,不就是一台电脑嘛。这么说,没毛病,完全没毛病。其实计算机系统由“硬件”和“软件”构成,所谓硬件就是计算机的实体部分,就是我们看得见摸得着的部分,比如主机、鼠标、键盘;而软件呢,就是看得见摸不着的东西,比如操作系统,微信,微博等。硬件是计算机系统的物理基础,它决定了计算机系统的天花板,而软件决定了我们可以将硬件的性能发挥到怎样的程度。所以,计算机性能的好坏取决于软硬件功能的总和。软件又可以划分为系统软件和应用软件,系统软件又称为系统程序,主要用来管理整个计算机系统,例如操作系统,数据库管理系统(DBMS),标准的程序库以及语言处理程序(将用户编写的高级语言编译翻译为机器语言)等;应用软件又称为应用程序,它是根据任务需求编制成的各种程序。上面这段话相当官方了,不过也确实如此。计算机的历史啥的,我们就不扯了,简单了解下两个计算机的系统结构还是有必要的。大家如果对计算机的组成及系统比较感兴趣的话,可以去看下唐朔飞教授的《计算机组成原理》,来自我母校的教授哟。02
冯.诺依曼结构
简单来说,我们的计算机就是用来处理数据的,要让计算机处理数据,我们首先得有一个输入设备,把数据输入到计算机当中,这的数据包含真实的数据也包含了指令集合。因此,输入设备的作用就是将信息转换成机器能识别的形式(机器语言),我们需要输入的数据程序,通过输入设备处理后,这些数据是先流向了运算器,然后通过运算器中转,才会把程序数据放到内存(存储器)中。所以存储器的作用呢就是用来存储数据以及指令的。中间的运算器最主要的就是实现算术运算(加减乘除)和逻辑运算(与或非)。经过运算器的处理之后这些数据的运算结果会经过输出设备把它转换为我们人类熟悉的形式。另外,还有一个非常重要的部件叫控制器,控制器会用一些电信号来协调其他部件的相互配合的工作,控制器也会负责来解析存储器里面的程序指令。因此控制器的作用就是指挥程序有条不紊的运行的。冯诺依曼计算机的特点:
- 指令和数据都是用二进制表示,其原因是我们可以很方便的使用电信号来表示0,1两种状态;
- 指令由操作码(需要完成何种类型的操作)和地址码(操作的数据存储在内存的位置)组成;
涌过冯诺依曼计算机的特点中,它是以运算器为中心,但是我们输入的数据和程序本来就是想要直接放入存储器中,但是冯诺依曼这种结构的计算机都是会通过运算器作为中转站把它转存到存储器中,这就产生了一个问题,本来我们的运算器本来是用来处理数据的核心部件,但现在所以的部件中转还需要运算器来完成,那这样会导致数据计算效率降低。因此便出现了以存储器为核心的现代计算机结构。03
传统的冯诺依曼计算机都是以运算器为中心,而现代的计算机结构则是以存储器为中心,也就是说输入设备它的数据是直接放到存储器里面,当运算器处理完这些数据后,输出设备也会直接从存储器里面取走计算结果输出,那这样的话就可以更多的解放运算器的时间,可以让运算器做更多的运算。具体结构如下所示:
由于运算器与控制器这个部件联系十分紧密,所以在大规模集成电路中,这两个部件通常集中在一个芯片中,就组成了我们熟悉的CPU。现代计算机可以认为由三大部分组成:CPU,IO设备及主存储器(也就是内存)。而CPU与主存储器合起来可称为主机,IO设备又可称为外部设备。具体如下图所示:说到这里,我们要点一下,我们之所以要了解计算机的组成,是想让大家再重温下计算机的工作原理,这里面也牵涉到一些我们后续会遇到的一些问题的调优。比如:- 程序内存的调优(Java JVM内存管理,C++内存管理防泄露);
04
推开操作系统这个大门
所谓操作系统其实就是控制并管理计算机系统的硬、软件且分配调度资源的系统软件。读起来有点绕口。操作系统在计算机系统中处于承上启下的地位,向下衔接硬件层的物理设备,向上为应用软件提供运行环境;操作系统实现计算机软件运行、外设与资源管理、资源利用效率最大化。我们且看下操作系统在整个计算机体系中的位置,如图:图2-4:操作系统的位置
由上图,我们也不难看出,在计算机体系中,操作系统是其最基本也是最为重要的基础性系统软件。相比于其它上层软件,操作系统是最贴近硬件的第一层软件,其它系统软件都受操作系统的管理和控制,在操作系统上运行,依赖操作系统提供的底层服务和支持才能和底层硬件协同,进而才能对外提供应用服务能力。类比下我们人体来说,我们的五官和四肢外设,身体是主机,大脑就是操作系统,大脑中的一个又一个想法就是我们上层的应用程序。- 统一管理计算机资源,例如:处理器资源,IO设备资源,存储器资源,文件资源;
- 对计算机资源进行抽象管理,例如:IO设备管理软件提供读写接口,文件管理软件提供操作文件接口;
- 定义用户与计算机之间的接口:GUI(图形用户界面),命令形式,或其它系统调用形式。
05
操作系统的核心能力
经过上面小章节的了解,我们基本了解了操作系统的一些基本概念。接下来,我们主要来看看操作系统的一些常见的核心能力,增加一些基本的认知以及相关的技能要求。06
进程管理
在计算机上运行的每一个软件,无论是在后台还是在前端,都是一个进程。处理器管理是程序运行的执行单元。操作系统确定处理器和进程的状态,选择作业及其处理器,将处理器分配给进程,并在进程完成后重新分配处理器。说白了,就是在多编程环境中,操作系统决定进程访问处理器的顺序,以及每个进程有多少处理时间。操作系统的这个功能称为进程调度:- 操作系统通过为处理器分配各种作业来管理处理器的工作,并确保每个进程从处理器接收到足够的时间来正常工作。
- 跟踪进程的状态。执行这项任务的程序被称为交通控制器。将CPU(处理器)分配给进程。当一个进程不再需要时,取消分配处理器。
CPU的调度算是一个中枢协调任务的一个过程,主要目的一方面是为了更合理的利用CPU,另一方面也确保每个计算机设备都有机会使用CPU。我们也简单熟悉下常见的CPU调度的一些算法:说到底就是为了提高系统的效率,将计算资源最大化,将计算效率最大化。那我们也罗列几点于架构师而言要思考的一些点:- 进程间的数据交互:RPC、Restful、TCP,UDP?
进程的启停,及资源使用管控;
07
内存管理
内存管理主要是指计算机操作系统处理和组织其主内存的过程。它包括跟踪系统内存中的每个字节,并决定如何分配它们以满足系统需求。主存储器是快速存储器,它可以被CPU直接访问。对于要执行的程序,它应该首先加载到主存中。操作系统管理各种进程的内存分配和回收,并确保其他进程不会消耗分配给一个进程的内存。- 跟踪主内存使用情况,也就是说,哪个用户进程使用了哪些内存字节,已经分配的内存地址和尚未使用的内存地址。
- 在多道程序设计中,操作系统决定进程被授予内存访问的顺序和访问时间。
- 它在进程请求时为进程分配内存,并在进程终止或执行I/O操作时释放内存。
内存管理于架构设计而言算是一个比较重要的思考因素,也给各位看官罗列几点:08
提到操作系统的文件管理,它其实是一个相当庞杂的体系,从存储体系(主存,辅存,外存),到文件目录体系,再到权限体系等等,它管理着计算机系统内的所有信息的存储、读取及交互。在前面的小节中我们简单了解了主存(内存)管理,在此小节,我们就不做展开了。我们接下来简单了解下文件系统吧。文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统被组织成目录,以便于高效或容易地导航和使用,这些目录可能包含其他目录和其他文件。操作系统执行以下文件管理活动:- 文件操作:跟踪信息存储的位置、用户访问设置、每个文件的状态等等;
- 信息维护:以一种有组织的方式跟踪有关文件的创建、删除、传输、复制和存储的信息;
- 访问控制:通过防止未经授权的访问来维护存储在这些文件中的数据的完整性,包括文件目录结构;
- 资源分配和回收:指定哪个进程接收文件以及接收多长时间等;
来,我们再看看常见的文件系统,画重点了,这个是我们做文件系统挂载经常用到的。文件类型 | 使用场景 |
FAT | Windows9X系统使用的文件系统,包括FAT16,FAT32。 |
NTFS | NTFS文件系统是一个基于安全性的文件系统,是Windows NT所采用的独特的文件系统结构,Win 2000采用了更新版本的NTFS文件系统NTFS 5.0,还有WindowsXP及后来者基本都是这个。 |
Ext | GNU/Linux 系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,包括Ext2,Ext3,Ext4。 |
XFS | 一种高性能的日志文件系统,最早于1993年,由Silicon Graphics为他们的IRIX操作系统而开发,之后被移植到Linux 内核上,特别擅长处理大文件,同时提供平滑的数据传输。常见于Linux系操作系统。 |
其它 | NFS,RAW,这种一般不太会遇到,如有,则可以搜一下具体的用法。 |
作为架构师来说,特别是基础设施架构师(Infrastructure Architect),对文件系统一般会用到飞起,从硬件磁盘的挂载,到物理分区,再到逻辑分区,再到挂载文件系统,再到使用。我们也简单罗列下这个图,如图2-6。
图2-6:文件系统的层级结构
而对于普通的架构师而言,我们会用文件系统,会挂载磁盘,会扩容物理卷(PV)、逻辑卷(LV)即可,知道这些个概念。其实这套东西,在我们后续所讲的容器和Kubernetes中也会有相应的概念。如果你有比较好的了解的话,后续Kubernetes中相关的有状态服务所需的存储结构及相关的存储逻辑,就会有一个更清晰的认识了。陈学进,资深架构师和AI技术专家,早年就职于国信朗讯和上海惠普担任资深架构师等职务;后加入平安科技、众安科技、恒生电子等金融科技公司,从事过基于AI大模型的人工智能体系的建设,也主管过基于大数据的数字化营销产品线,后又从事高性能极速交易的金融投资核心系统的架构设计和技术管理工作。常年浸润于技术一线,对于ToB的系统建设,ToC的互联网系统建设都有比较深的见解,多样的经历,也造就了丰富的技术认知,期待跟大家一起在数字世界修个仙。
-END-
还没有评论,来说两句吧...