计算机基础

作者: ADO_AI | 来源:发表于2020-08-05 00:54 被阅读0次

    近日复习计算机基础,看到老汤说_计算机基础,深入浅出,很有借鉴意义。做如下笔记,以捋清思路,以便后续回忆。


    计算机基础_内容导图.png
    一、计算机的基本组成
      1. 硬件主要包括主机和外设。主机:CPU和内存;外设:输入/出+外存
      1. 软件主要包括系统软件和应用软件。本文主要关注系统软件中的操作系统,因为它是计算机硬件和其他计算机软件的桥梁和中转


        计算机系统.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; \color{red}{不可能出现超过四位的情况})

      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),也是目前最为通用的编码方式。\color{red}{它规定了Unicode编码中具体的十六进制数究竟应该以多少Byte的二进制数进行存储}
        image.png
    • 2.3.4. GBK是我国编制的,专为中文设计的编码规则

    三、操作系统

    上述我们在讲到计算机运行的基本原理中提到,其本质是\color{red}{对数据的操作,具体形式是将所有的地址、操作、数据都进行二进制编码} \color{red}{CPU中的控制器通过地址获取操作和数据,运算器负责执行操作} 计算机可以通过三种语言进行操控:1.机器语言 2. 汇编语言 3. 高级语言(如C,C++,Java,Python). 即在\color{orange}{计算机发展的初期,我们是完全可以通过机器语言或者汇编语言直接操作计算机的} \color{orange}{即没有操作系统我们也可以运行计算机。}

    操作系统的诞生是为了更方便、更易扩展地对计算机进行操作!它去对接底层的计算机硬件(CPU/内存),即它帮助我们做了机器语言或者汇编语言的事情;而将更易用的接口提供给更高级的软件,极大提升了我们计算机操作的丰富性和易用性,是现代计算机的标准结构。总结起来\color{blue}{操作系统有两部分功能:1.面向底层硬件的功能 2.面向用户的功能。}面向用户的功能其实就是我们日常生活中电脑使用的一些功能,略去。本部分我们主要介绍操作系统面向底层硬件的功能:\color{red}{管理CPU、内存、进程/线程/}。下图为整个计算机系统中,操作系统作为连接计算机硬件和其他软件的桥梁: image.png
    • 3.1 操作系统管理CPU、内存、进程/线程
      \color{red}{操作系统管理的基本功能是进行资源调度}。即程序要运行,就要占用CPU和内存资源;而操作系统则负责资源调度,为程序运行做保障。与其说理解操作系统如何管理CPU、内存、进程/线程,不如说操作系统是如何调用这些资源的。内存的调用较为简单,存储空间的分配有两种方式:1. 类似于顺序表的一体式存储结构2. 顺序表的分离式存储结构;即按照以上方式进行空间分配即可。\color{blue}{真正让我感到困惑的,就是关于CPU的调用,以及多核、多进程、多线程等概念}\color{blue}{而这些概念的模糊,就是对CPU资源调用模式的不清晰所致}。接下来用一段话进行概括:

    一个独立核心的CPU,在一个时间段内,是只能干一个活的。要想干活干得多,则有几个办法:

    1. 增加核心数: 一个CPU可以有很多个核心(core),则干活的就多了,即为“多核”
    2. 多进程:有了多核(C),则每个核可以负责一个任务,多个任务并行运算,即为多进程
    3. 多线程(T):原则上一个核在一个时间段内只能干一个活,但是利用超线程技术将一个物理核(实实在在有的核) 模拟出两个逻辑核(虚拟出来,能够执行核心所负责的活),此时一个物理核变成了两个逻辑核,故能够干两个活,因而称为多线程。
    4. 以马万琴给我的服务器配置为例: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

    相关文章

      网友评论

        本文标题:计算机基础

        本文链接:https://www.haomeiwen.com/subject/zswirktx.html