近日复习计算机基础,看到老汤说_计算机基础,深入浅出,很有借鉴意义。做如下笔记,以捋清思路,以便后续回忆。
计算机基础_内容导图.png
一、计算机的基本组成
- 硬件主要包括主机和外设。主机:CPU和内存;外设:输入/出+外存
-
软件主要包括系统软件和应用软件。本文主要关注系统软件中的操作系统,因为它是计算机硬件和其他计算机软件的桥梁和中转
计算机系统.png
-
二、计算机运行的基本原理
-
2.1 计算机运行的本质是对数据的操作,具体形式是将所有的地址、操作、数据都进行二进制编码,CPU中的控制器通过地址获取操作和数据;运算器负责执行操作。因此,计算机可以通过三种语言进行操作:1)机器语言(即二进制码),直接通过二进制码输入来操作机器 2) 汇编语言:与二进制码之间有着某种直接对应关系,也属于比较原始的低级语言 3) 高级语言(又分编译型语言和解释型语言),更接近于自然语言的编程语言,如C,C++,Java,Python;
计算机基础.jpg -
2.2 进制之间的转化
计算机只能识别二进制,二进制是计算机的运行和计算基础。而十进制是我们人类便于阅读的格式;十六进制(0-9,A-F)本质上是二进制的延伸,能够更为精炼地表达二进制数据(说白了就是可以更短地表达二进制数据)。1Byte == 8位;即1字节可以存储0-255(2的八次方-1)-
2.2.1. 二进制/十六进制 转十进制举例:
image.png -
2.2.2. 十进制转二进制/十六进制:采用余数定理,直到商为0,然后自下往上组合,即为所得
image.png - 2.2.3. 二进制和十六进制之间的转化(尤其在字符编码中能够体现):4位转化法(我自己命名的,嘿嘿 16 = 2的四次方)
十六进制跟二进制是 一位十六进制==四位二进制
二进制 111101 转十六进制(不足四位,则自动补零)
image.png
十六进制转二进制(1位16进制==4位2进制,若不足四位,则自动补0; )
image.png
-
-
2.3 各种编码(ASCII/Unicode/UTF-8/GBK) : 上文提到计算机会将所有数据和操作都进行二进制编码,供计算机识别和运行。那么如何将数据和操作进行二进制编码呢?过程无外乎就是 数据/操作---数字---二进制数字的转化。我们真实世界中的一切数据都可以由计算机进行处理,如文字及符号、声音、图像。声音和图像本身就可以由数字进行表示;而文字及符号则需要有一套专门的对应关系来转化为数字,这就是编码的作用。
- 2.3.1. ASCII码是1968年诞生的,由美国制定的文字(英文)+符号与数字的对应关系,参见https://baike.baidu.com/item/ASCII
- 2.3.2. Unicode码包含了世界上所有语言符号与数字的对应关系,用16进制数进行表达;比二进制表达更为紧凑,增加了可阅读性;但由于世界上所有的文字和符号数量级达到了百万,导致Unicode编码的十六进制数字,如果转为二进制,则其存储位数可在1-4 Byte之间变动;而Unicode并没有规定这些变动的二进制该以什么样的规则进行存储。
- 2.3.3. UTF-8是Unicode编码的实现方式之一(还有UTF-16/32),也是目前最为通用的编码方式。
image.png
-
2.3.4. GBK是我国编制的,专为中文设计的编码规则
三、操作系统
上述我们在讲到计算机运行的基本原理中提到,其本质是 计算机可以通过三种语言进行操控:1.机器语言 2. 汇编语言 3. 高级语言(如C,C++,Java,Python). 即在
操作系统的诞生是为了更方便、更易扩展地对计算机进行操作!它去对接底层的计算机硬件(CPU/内存),即它帮助我们做了机器语言或者汇编语言的事情;而将更易用的接口提供给更高级的软件,极大提升了我们计算机操作的丰富性和易用性,是现代计算机的标准结构。总结起来面向用户的功能其实就是我们日常生活中电脑使用的一些功能,略去。本部分我们主要介绍操作系统面向底层硬件的功能:。下图为整个计算机系统中,操作系统作为连接计算机硬件和其他软件的桥梁: image.png
- 3.1 操作系统管理CPU、内存、进程/线程
。即程序要运行,就要占用CPU和内存资源;而操作系统则负责资源调度,为程序运行做保障。与其说理解操作系统如何管理CPU、内存、进程/线程,不如说操作系统是如何调用这些资源的。内存的调用较为简单,存储空间的分配有两种方式:1. 类似于顺序表的一体式存储结构2. 顺序表的分离式存储结构;即按照以上方式进行空间分配即可。,。接下来用一段话进行概括:
一个独立核心的CPU,在一个时间段内,是只能干一个活的。要想干活干得多,则有几个办法:
- 增加核心数: 一个CPU可以有很多个核心(core),则干活的就多了,即为“多核”
- 多进程:有了多核(C),则每个核可以负责一个任务,多个任务并行运算,即为多进程
- 多线程(T):原则上一个核在一个时间段内只能干一个活,但是利用超线程技术将一个物理核(实实在在有的核) 模拟出两个逻辑核(虚拟出来,能够执行核心所负责的活),此时一个物理核变成了两个逻辑核,故能够干两个活,因而称为多线程。
- 以马万琴给我的服务器配置为例:2 X Intel Xeon Gold 6258R Processor/2.70 GHz/38.5 MB/28C/56T/205W/2UPI/2933MHz 意思是每块CPU参数为28C/56T,共2块CPU。
这里的“时间段”,是计算机执行时间的最小单位,称为时间片;
进程是操作系统分配资源的最小单元, 线程是操作系统调度的最小单元。
每个进程在执行过程中拥有独立的内存单元,而一个进程的多个线程在执行过程中共享内存。
一个应用程序至少包括1个进程,而1个进程包括1个或多个线程,线程的尺度更小。
总结起来,特定计算机的资源(算力)是固定的(有多少核,多少线程);操作系统的作用就是根据当前计算机接到的任务,合理地进行计算资源的分配;当然在我们编程的过程中(Python),我们也可以通过coding的方式,显式地指定资源调用的方式。
python多进程/多线程的内容非常值得深入阅读,待续……https://zhuanlan.zhihu.com/p/46368084
image.png参考文献
每个程序员必须懂的计算机基础知识老汤说https://www.bilibili.com/video/BV1uz411v75t?p=24
没有操作系统时,人们是如何操控计算机的?
https://www.jianshu.com/p/855be71576e8
ASCII
https://baike.baidu.com/item/ASCII
Python 多进程和多线程
https://zhuanlan.zhihu.com/p/46368084
关于多核,多进程,多线程
https://zhuanlan.zhihu.com/p/82123111
超线程_百度百科
https://baike.baidu.com/item/%E8%B6%85%E7%BA%BF%E7%A8%8B/86034?fromtitle=%E8%B6%85%E7%BA%BF%E7%A8%8B%E6%8A%80%E6%9C%AF&fromid=276864
网友评论