查看原文
其他

数据治理 | 有效防止跑数据卡顿!社科人必须掌握的计算机知识

快点关注→ 数据Seminar 2022-12-31

目录

前言

一、计算机硬件系统

现代计算机的鼻祖——冯·诺依曼 计算机

  1. CPU——原来软件版本与CPU架构有关

  2. 内存——原来 Stata 会把数据导入内存

  3. 硬盘——想要读写数据数据更快?你需要了解这些硬盘知识

    ‍内存&硬盘 小结——Stata 用户如何防止内存爆满?

  4. GPU——为什么深度学习依赖 GPU,而非 CPU

二、计算机软件系统

1. 应用软件

2. 系统软件

总结

本文共5890个字,阅读大约需要15分钟,欢迎指正!

前言

随着计算机在近几十年的飞速发展,电脑,手机等设备已经成为我们工作生活中的硬核角色。我们可以使用计算机中做各种事情,刷剧,游戏,编程……而对于本公众号的读者来说,我们经常需要使用如 Stata,MATLAB,Python,R 等软件或编程语言来进行数据工作。多数社科学者并没有计算机相关专业背景,故而对计算机组成一知半解,对于经常需要使用电脑的我们来说,这方面知识要尽早储备起来!本文将会从实际应用出发,为大家介绍工作生活中可能用到的计算机组成基础知识,对于计算机的使用者,尤其是初学编程的社科学者来说,一定会学有所得,受益无穷。

一、计算机硬件系统

下文将对一些重要计算机硬件做简单的介绍,阐述一些计算机硬件的基本工作原理,以便我们在编程实践中能够更加深刻地去理解程序的执行规律。

现代计算机的鼻祖——冯·诺依曼 计算机

美籍匈牙利数学家,计算机科学家,物理学家冯·诺伊曼提出了组成计算机的五大部件:运算器,存储器,控制器,输入设备和输出设备。
计算机五大组成部件功能
运算器将对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
控制器是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
存储器用来存储数据和程序,可分为主存储器(内存)和辅助存储器(外存),内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失。外存包括软盘、硬盘和光盘等设备,存放在其中的数据靠磁来维持,因此可永久保存数据。
输入设备鼠标、键盘、麦克风等, 可以将人类熟悉的信息形式转为计算机能够识别的信息形式。
输出设备显示器、音响、打印机等, 可以将计算机中的信息或计算结果转为人类能够接受的信息形式。
五大部件中一些组件被高度集成在一起,如运算器和控制器被集成在CPU中,对于需要处理,分析和管理数据的学者来说,需要重点关注的硬件设备是CPU(运算器和控制器)和存储器(主要是内存和硬盘)

1.CPU——原来软件版本与CPU架构有关

CPU 也叫处理器,就像人类的大脑一样,它是计算机的运算核心和控制中心,它集成了运算器和控制器,能够进行各种各样的运算以及协调计算机各个组件的有序运行。
计算机是如何执行程序员编写好的程序或者应用软件呢?开始执行一个程序时,会先把待执行的部分装载到内存,程序背后的代码就相当于CPU要执行的指令集合。CPU从内存中取出指令,然后对指令进行解码,最后执行解码后的指令。再然后取下一个指令、解码、执行,以此类推直到程序执行结束。取指令、解码、执行三个过程构成一个CPU的基本周期。现代 CPU 的运算速度快得离谱,在频率为 2.30GHz 的 CPU 核心上,大部分简单指令的执行只需要一个时钟周期,也就是 1/3 纳秒。即使是在真空中传播的光,在这段时间内也只能走 10 厘米。把上述事实记在心中是有好处的,当你要对程序做优化的时候就会想到,执行指令的开销对于 CPU 而言是多么的微不足道。既然 CPU 的运算速度这么快,那为什么计算机会卡顿,宕机呢?这是因为相对CPU 而言,内存速度不够快,也就是数据传输的速度拖慢了计算机的运行速度。每一类 CPU 都有一套自己可以执行的专门的指令集。因此,“x86” 架构的 CPU 不能执行 “ARM” 程序,“ARM” 架构的 CPU 也不能执行 x86 程序。个人电脑一般使用 Intel 和 AMD 的 CPU,它们都是 x86 架构,而手机上的 CPU 一般是 ARM 架构。了解这些对使用计算机,尤其是使用电脑是有巨大帮助的。首先要说明的是,操作系统的系统架构一般是根据 CPU 架构设计的,用户只需关注操作系统架构,而许多大型软件的官网都为用户提供了不同系统架构的程序安装包,正确地选择安装包才能成功安装并使用这些软件或程序,如 Python,MySQL 等产品。Windos系统用户可以在命令提示符中使用systeminfo命令查看计算机的相关信息,其中包含了操作系统架构。操作步骤为:win + R ,输入 cmd 后回车打开命令提示符,然后输入“systeminfo”,稍等片刻即可查看自己计算机安装的操作系统所使用的架构和其他信息。
如图所示,上图中系统类型“x64”实际上就是“x86-64”的简称,代表基于x86架构开发的64位操作系统,除64位操作系统外,还有32位操作系统,CPU也有64位和32位。近些年来的电脑产品中很少在使用32位的CPU及操作系统,因为64位操作系统是32位操作系统的升级版,一般64位CPU可以向下兼容安装32位操作系统,而32位CPU却不能反过来做。前面讲到了解系统架构有助于选择与自己计算机相匹配的程序安装包,下面以Python和MySQL举例说明。
如上图所示,在 Python 官网 python3.8 的下载页面中,用户可以根据自己使用的操作系统和操作系统位数选择合适的程序安装包进行安装和使用。

2. 内存——原来 Stata 会把数据导入内存

内存是计算机中最重要的部件之一,它是程序与 CPU 进行沟通的桥梁。一般情况下,计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。
内存又被称为主存,其作用是存放 CPU 中的运算数据,以及与硬盘等外部存储设备交换的数据。只要计算机处在运行状态中,CPU 就会把需要运算的数据调到内存中进行运算,当运算完成后 CPU 再将结果传输出来,所以内存的稳定时刻影响着计算机的稳定运行。事实上,CPU只访问内存,任何程序、软件或数据想要在计算机上运行,都必须先被加载到内存中。内存的内部是由各种集成电路组成的,主要分为三种:随机存储器(RAM),只读存储器(ROM) 以及 高速缓冲存储器(Cache)。我们通常所说的“内存”,“内存条”主要就是指随机存储器,也就是我们常说的电脑或者手机的运行内存。它是非常重要的存储器,既可以从中读取数据,也可以写入数据。断电时,内存中的信息会瞬间丢失。这也是为什么电脑重启后,先前运行的程序会被关闭。对于学者来说,使用编程语言或者软件(如 Stata,Excel)从硬盘中导入或打开数据时,一般都会先把数据导入到内存中,数据只有被导入内存,才能灵活地计算和分析。可是内存的容量是有限的,如果内存中装载了太多数据,就会使内存的运行效率大打折扣,这时计算机就会卡顿。并且内存中的数据并不只是数据集,任何应用软件、网页信息、计算机指令等都是内存中数据的一种,同样使用内存资源。所以使用计算机时需要注意,尽量不要一次性将数据量大于本身内存容量的数据导入内存中,内存不足时,及时关闭后台不使用的软件,清理不使用的数据。

3. 硬盘——想要读写数据数据更快?你需要了解这些硬盘知识

硬盘(Hard Disk)是计算机最主要的存储设备。一般情况下,我们日常使用的操作系统、应用程序、表格、文档、图片和视频等任何可见的文件都存放在硬盘上。同为存储设备,硬盘与内存的区别非常大,下表列举了两者的几点不同。

内存硬盘
对应的物理设备内存条实体硬盘
制造关键材料半导体材料磁性材料
访问速度极快较慢
成本较高较低
空间大小较小 (一般4~64GB )较大 (一般128GB~2TB)
稳定性不稳定,断电丢失数据稳定,断电不会丢失数据
硬盘主要分为两种,固态硬盘(SSD)和机械硬盘(HDD),这两种硬盘的异同可以参考下表:

固态硬盘机械硬盘
体积大小较小,形态各异较大
读写速度较快较慢
制造成本较高较低
数据恢复能力困难容易
其他功耗小,不易损坏功耗大,稍易损坏
如上表所示,固态硬盘在性能和安全性上完胜机械硬盘,它缺点是成本高昂,容量较小,这也正是多数电脑采用小容量固态硬盘外加大容量机械硬盘的组合的原因。我们是否经常听到这样的说法:我的 C 盘快满了,电脑变得很卡……这是因为人们习惯将固态硬盘分区到 C 盘(也称系统盘),好处是我们可以将操作系统部署在性能较高的 C 盘,这样一来,无论是开机速度还是程序运行速度都会大大提高,这得益于固态硬盘较高的性能。但 C 的空间往往比较小,因为其成本高昂。而 D、E 等其他盘多使用机械硬盘,因为机械硬盘容量大,价格低,更适合存储较大的视频,数据等大文件。随着制作工艺的成熟, 市场上固态硬盘的价格已经非常稳定,越来越多的用户开始选择全固态硬盘,即全部使用固态硬盘,不使用机械硬盘。这样一来无论硬盘如何分区,都不需要在顾及是否是 C 盘,因为所有的盘都是高性能的固态硬盘。除了个人电脑之外,服务器也会使用到硬盘,不过服务器硬盘与电脑硬盘差异十分明显。由于固态硬盘价格高,容量小,主流的服务器硬盘还是以机械硬盘为主。在电商平台搜索会发现,服务器硬盘的价格是要远高于普通硬盘的。这是因为服务器的使用场景和电脑是不同的,个人电脑一般是处于间歇性工作的,而服务器基本上是不会休息的。所以服务器对硬盘的稳定性要求很高,许多服务器硬盘甚至做了防磕碰处理。另外,服务器一般需要为不止一个用户服务,硬盘的性能也不能低,并且支持热插拔(在服务器不停机的状态下,拔出或者插入硬盘,系统会自动识别硬盘的变化)。

内存&硬盘 小结——Stata 用户如何防止内存爆满?

内存实际上是 CPU 与硬盘之间的桥梁,因为内存的速度是极快的,且 CPU 只从内存中访问数据。所以当我们打开某个应用软件,或者需要编写代码读取,导入某个数据,实际上都是将硬盘中的数据先导入到内存中,这样才能被 CPU 访问和处理,而这个过程的效率,往往取决于硬盘的性能。
由于内存的容量较小,所以当我们使用 Stata 导入或者使用 Python 读取一个非常大的数据表时,因为内存的容量不足,会导致电脑宕机;即使数据导入成功,分析计算数据也没有足够的内存可供使用了。那么多大的数据才算“非常大”呢?假如你的电脑内存为 8 G,在内存空闲的情况下,大概超过 3 GB 的文件最好不要导入到内存,这是因为数据从硬盘被导入到内存的过程中,数据格式发生了变化,3 GB 的文件实际占用的内存容量可能会超过 8 GB,这是一个非常重要的知识点。具体情况可以参考此文:?数据治理 | 数据量越来越大,Stata总奔溃?看来……
也有一些程序主要依赖硬盘来处理数据,比如数据库(MySQL,Oracle等),因为数据库中往往存储着较大较多的数据,不能完全依赖内存进行工作。知道这些也是有好处的,如果将数据库部署在机械硬盘中,那么它的工作效率是很高的。

4. GPU——为什么深度学习依赖 GPU,而非 CPU

GPU(Graphic Process Unit,图形处理器)也是现代计算机非常重要的一部分,GPU 最基本的作用是将数字信号转换成显示器能够识别的模拟信号,是处理图像的一把好手,我们习惯称之为显卡,显卡分为两种,一种是集成显卡,它被集成在计算机主板上或者集成在CPU中,不可拆卸与更换;另外一种是独立显卡,这是一种独立于主板的显卡,主板上有专门的卡槽用于安装显卡。同期的独立显卡的图形处理能力是远高于集成显卡的,而且集成显卡没有独立的存储器,使用的是内存,这样会增加内存的压力和 CPU 的散热压力。而独立显卡是有独立的显示存储器的。但是不论哪一种显卡,他的核心都是GPU,也就是说GPU是显卡的核心,除 GPU 外,独立显卡还有显存,散热器等其他组件。
我们知道,现在的独立显卡的运算能力是非常强大的,也就是说这些显卡的核心 GPU 的计算能力非常强大。同时前面也有讲到,CPU 的计算能力也是非常强悍的,那么 CPU 和 GPU 到底谁的计算能力更强大呢?恐怕这个问题没有一个绝对的答案,因为 CPU 和 GPU 的强大是完全不同的。CPU 的强大之处在于它像大脑一样可以处理各种各样的逻辑非常复杂的问题,但是它的并行能力较弱,一次只能处理一件事情;GPU 的强大则在于它强悍的浮点运算能力和并行计算能力,可以像一个工厂一样,可以同时处理非常多的事情,但是这些事情都比较简单,也就是说 GPU 的并行计算能力非常强,适合做一些简单,重复性高,计算量大的事情,例如计算量很大的深度学习,密码破解,大数据分析等(包括 Wa-Kuang)。我们知道,图像是由一个个像素点构成的,处理这些像素点并不需要强大的逻辑运算,但却需要强大的并行计算能力,因此 GPU 做图形处理更加得心应手。对于 CPU 和 GPU 的不同应用场景,我们可以简单地理解为“CPU 不怕困难,GPU 不怕吃苦”。GPU 的并行计算能力如此强大,只做图像处理会不会有些浪费呢?在数据爆炸式增长的时代,人们其实早就盯上了GPU强大的的计算能力,现在已经有一些基于GPU的编程语言。在机器学习/深度学习中,也有一些使用GPU的计算框架,例如 Python 的 Pytorch。

二、计算机软件系统

应用软件

应用软件(Application Software)是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,分为应用软件包和用户程序。应用软件包是利用计算机解决某类问题而设计的程序的集合,供多用户使用。计算机软件分为系统软件和应用软件两大类。应用软件是为满足用户不同领域、不同问题的应用需求而提供的软件。它可以拓宽计算机系统的应用领域,放大硬件的功能。比如用于处理图像的 Photoshop、用于处理文档的Word、用于娱乐的游戏软件、用于播放音乐的音乐软件等等。

系统软件

系统软件是指控制和协调计算机及外部设备,支持应用软件开发和运行的系统,是无需用户干预的各种程序的集合,主要功能是调度,监控和维护计算机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。系统软件并不是指我们的设备出厂自带的软件,计算机的系统软件主要是指操作系统、数据库管理系统以及各种程序设计语言的编译系统等,其中最重要的系统软件是操作系统。比如说 Windows 操作系统,Linux 操作系统等。

总结

文本简单介绍了有数据处理需要的社科学者应当了解的计算机基础知识,读完本文后,相信你对计算机有了一个全新的认识。下期文章我们将会继续介绍计算机基础知识,为大家介绍计算机操作系统的相关知识。
我们将在数据治理板块中推出一系列原创推文,帮助读者搭建一个完整的社科研究数据治理软硬件体系。该板块将涉及以下几个模块(点击标题即可跳转至相应合集):
  1. 计算机基础知识
  2. 编程基础
  3. 数据采集
  4. 数据存储
  5. 数据清洗
  6. 数据实验室搭建
  7. 数据治理特别篇



星标⭐我们不迷路!想要文章及时到,文末“在看”少不了!

点击搜索你感兴趣的内容吧

往期推荐


基本无害 | 第三章第一节(全)—— 回归的基本原理

数据治理 | 地址数据可视化—教你如何绘制地理散点图和热力图

基本无害 | 使回归有意义——基本原理(3)

数据治理 | 根据地址获取经纬度及行政区划——API的妙用

基本无害 | 使回归有意义——基本原理(2)

数据治理 | 工企地址清洗——Python的妙用





数据Seminar




这里是大数据、分析技术与学术研究的三叉路口


文 | 《社科领域大数据治理实务手册》


    欢迎扫描👇二维码添加关注    

点击下方“阅读全文”了解更多


内存&硬盘 小结——Stata 用户如何防止内存爆满?

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存