计算机基础

Posted dougeidianlia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机基础相关的知识,希望对你有一定的参考价值。

阅读目录

一、为什么要学习计算机  

  为什么要学习计算机呢?这是一个很好的问题,我认为我们现在的各行各业已经不能离开计算机了。它可以让我们的生活、工作、学习、交流和娱乐等都充分的得到升华。但是,很让人纳闷的是我们从小到大的教育环境确实极度缺少计算机的身影。

  我甚至可以充分的体会到很多的学生和他们的父母已经和这个社会需求脱节了,很多的同学基本到了大学时期才开始普遍的接触计算机,才开始对计算的使用有了更深入的了解和需求。这不能怪他们,因为他们没有去接触和学习计算机的机会啊!!!我相信所有的老师和家长的内心都依然存在一个根深蒂固的思想就是:一定要以学校的课程为主,绝不可顾此失彼。计算机对这些长辈来说就是洪水猛兽,在他们的思想里应该是严禁这邪恶的家伙靠近他们的孩子。

  错!错!错!一切的东西都有两面性,计算的好处大家也是有目共睹的,为什么要一棒子打死,只看到它邪恶的一面呢?一个人学好,还是学坏,不是因为这个世界上有好和坏,而应该是为什么没有人正确的去引导他们学好,避免学坏不是吗!

  要像更好的使用计算机那你就要学会如何与它交流------计算机编程语言。

  Python是一门编程语言,即通俗一点说就是语言。

  我们都知道世界上有很多种语言,比如:汉语,英语,阿拉伯语等等众多的语言。要想用这些语言去和人沟通,如果你想和英国人说话,你必须得会英语吧。而我们的计算机也有它自己的语言,你要想让计算机帮助我们做事情,你就需要和它沟通吧。那你就得懂得计算机语言吧,也就是编程。当然计算机也有很多语言,比如:C,Java,php,Python,C#等。所以我们就先从学习基础知识开始。也有人说学习基础理论知识很枯燥,但是,那还是得学。你要把它当成自己的兴趣,一点一点的去投入它,相信你会是很棒的。 

   程序用编程语言来写程序,最终开发的结果就是一个软件。就像大家都知道的QQ,腾讯视频,酷狗音乐等一系列软件。这些软件要想运行必须得有系统控制它吧。当然,有人会问:为什么要用操作系统呢?当然,很久以前的那些程序员确实是在没有操作环境下,编程语言是操作硬件来编写的。你可能觉得没问题,但是其实问题很严重。如果一直像以前那样会严重影响效率的。操作系统是出现在硬件之上的,是用来控制硬件的。所以,我们开发时只需要调用操作系统为我们提供的简单的接口就可以了。

   所以一套完整的计算机系统分为:计算机硬件,操作系统,应用软件,如下图。因而我们的python编程之路分为计算机硬件基础,操作系统基础,和python编程三部分,就让我们先从计算机硬件学起吧。

  技术分享图片

二、计算机硬件的发展史

  • 早期计算工具
  • 卡片时期
  • 程式化时期
  • 桌上型时期
  • 模拟时期
  • 早期数字电脑
  • 楚泽Z系列
  • 巨像电脑
  • 美国的发展
  • 埃尼阿克
  • 首代机构机种
  • 第三波世代

:这是计算机硬件的发展史的时代列表,每个时代具体介绍在度娘上有详细介绍,我就不一一说了。 

三、计算机硬件介绍

  计算机硬件有五大部分:

#1、控制器:计算机的指挥系统。控制器通过地址访问存储器,从存储器中取出指令,经译码器分析后,根据指令分析结果产生相应的操作控制信号作用于其他部件,使得各部件在控制器控制下有条不紊地协调工作。

#2、运算器:实现算术运算和逻辑运算的部件。 

#3、存储器:是计算机用来存放所有数据和程序的记忆部件。它的基本功能是按指定的地址存(写)入或者取(读)出信息。 计算机中的存储器可分成两大类:一类是内存储器,简称内存或主存;另一类是外存储器(辅助存储器),简称外存或辅存。 存储器由若干个存储单元组成,每个存储单元都有一个地址,计算机通过地址对存储单元进行读写。一个存储器所包含的字节数称为存储容量,单位有B、KB、MB、GB、TB等。

#4、输入设备:是向计算机中输入信息(程序、数据、声音、文字、图形、图像等)的设备。常见的输入设备有:键盘、鼠标、图形扫描仪、触摸屏、条形码输入器、光笔等。 外存储器也是一种输入设备。 

#5、输出设备:主要有显示器、打印机和绘图仪等。外存储器也当作一种输出设备。
  • CPU是人的大脑,负责运算
  • 内存是人的记忆,负责临时存储
  • 硬盘是人的笔记本,负责永久存储
  • 输入设备是人的耳朵或眼睛,负责接受外部的信息传给CPU
  • 以上所有的设备都通过总线连接,总线相当于人的神经

 

控制器+运算器=CPU,CPU、内存(主存储器)以及其他I/O设备都由一条系统总线(bus)连接起来并通过总线与其他设备通信,现代计算机的结构更复杂,包括多重总线,我们将在后面的小节介绍,此时暂且让我们以下图为例来介绍各个部件:

                                                                                                           技术分享图片

 

四、处理器

1.计算机的大脑是CPU,它从内存中取指令-?解码-?执行,然后在取指令,解码,执行,周而复始,直至整个程序被执行完成。

2. 寄存器是一个存储设备,最快的一种存储设备就是寄存器。

3.寄存器的分类:

①通用寄存器:用来保存变量和临时结果的。

②程序计数器:它保存了将要取出的下一条指令的内存地址。在指令取出后,程序计算器就被更新以便执行后期的指令

③堆栈指针:它指向内存中当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量

④程序状态字寄存器(Program Status Word,简称PSW):这个寄存器包含了条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O中,PSW非常重要。

4.内核态与用户态

       多数CPU都有两种模式,即内核态与用户态。        

    ①当cpu处于内核状态时,运行的是操作系统,能控制硬件(可以获取所有cpu的指令集)     

    ②当cpu处于用户太状态时,运行的是用户软件,不能控制硬件(可以获取所有cpu的指令集中的一个子集,该子集不包括操作硬件的指令集)

  这里有些人可能会含糊什么是内核态,什么是用户态?下面我来解释一下:

内核态:当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件)所以,归根结底通俗一点的话也就是上面①解释的那样

用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的。

5.内核态与用户态切换

用户态下工作的软件是不能之间操作硬件的,但是像我们的一些软件,比如暴风音影啊一类的软件,我们要想从磁盘中读取一个电影文件,那就得从用户态切换成内核态,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统, TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务。

五、存储器

1.计算机中第二重要的就是存储了,所有人都意淫着存储:速度快(这样cpu的等待存储器的延迟就降低了)+容量大+价钱便宜。然后同时兼备三者是不可能的,所以有了如下的不同的处理方式

                                                                                                     技术分享图片

   由上图可以很清楚的看见寄存器存储是速度非常快的,但是它的容量却很少。下来就是高速缓存了。我就不一一介绍了,我相信大家应该可以看得懂这个图。

2.寄存器即L1缓存:用与cpu相同材质制造,与cpu一样快,因而cpu访问它无时延,典型容量是:在32位cpu中为32*32,在64位cpu中为64*64,在两种情况下容量均<1KB。

3.高速缓存即L2缓存:主要由硬件控制高速缓存的存取,内存中有高速缓存行按照0~64字节为行0,64~127为行1。。。最常用的高速缓存行放置在cpu内部或者非常接近cpu的高速缓存中。当某个程序需要读一个存储字时,高速缓存           硬件检查所需要的高速缓存行 是否在高速缓存中。

4.内存:主存通常称为随机访问存储RAM,就是我们通常所说的内存,容量一直在不断攀升,所有不能再高速缓存中找到的,都会到主存中找,主存是易失性存储,断电后数据全部消失

5.EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的。还有一类存储器就是CMOS,它是易失性的许多计算机利用CMOS存储器来保持当前时间和日期。CMOS存储器和递 增时间的电路由一小块电池驱动,所以,即使计算机没有加电,时间也仍然可以正确地更新,除此之外CMOS还可以保存配置的参数,比如,哪一个是启动磁盘等,之所以采用CMOS是因为它耗电非常少,一块工厂原装电池往往能使用若干年,但是当电池失效时,相关的配置和时间等都将丢失。

六、磁盘

1.磁盘由磁头,磁道,扇区组成的。

2.磁道:每个磁头可以读取一段换新区域。把一个戈丁手臂位置上所以的磁道合起来,组成一个柱面

3.每个磁道划成若干扇区,扇区典型的值是512字节。

4.数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间,那么什么是寻道时间和延迟时间呢?

    平均寻道时间:机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间,找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置

    平均延迟时间:机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间

                              技术分享图片

 

 

                                    图1 老式磁盘一个盘片的结构 

                                 技术分享图片

 

图2 老式磁盘的整体结构

图2展示了由一个个盘片组成的磁盘立体结构,一个盘片上下两面都是可读写的,图中蓝色部分叫柱面(cylinder)

存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数 

虚拟内存:

许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,
方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,
这块地方成为虚拟内存,在linux中成为swap,这种机制的核心在于快速地映射内存地址,
由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit MMU)。

            

七、磁带

 

1.有些人会想磁带是用来干什么的呢?当然,它也是内存之一,是用来存储东西的,它的存储量是相当大的,而且价钱也便宜。当遇上火灾等紧急情况时,可以用磁带来存储我们的重要文件。常常用来做备份(常见于大型数据库系统中)。但是,它也有缺点,就是   运行速度特别慢,效率低。

2.cpu和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环。I/O设备一般包括两个部分:设备控制器和设备本身

  控制器的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口

  设备本身:有相对简单的接口且标准的,这样大家都可以为其编写驱动程序了。要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中。

 

八、输出设备

 

#1、输入设备
  输入设备的任务是把人们编好的程序和原始数据送到计算机中去,并且将他们转换成计算机内存所能识别和接受的信息方式。

  安输入信息的形态可分为字符(包括汉字)输入、图形输入、图像输入及语言输入等。目前,常见的输入设备有:键盘、鼠标、扫描仪等。辅助存储器(磁盘、磁带)也可以看作输入设备。另外,自动控制和检测系统中使用的模数(A/D)转换装置也是一种输入设备。

#2、输出设备
  输出设备的任务是将计算机的处理结果以人或其他设备所能接受的形式送出计算机。

  目前最常用的输出设备是打印机和显示器。辅助存储器也可以看做输出设备。另外,数模(D/A)转换装置也是一种输出设备。

    

九、总线 

北桥即PCI桥:连接高速设备

南桥即ISA桥:连接慢速设备

                              技术分享图片 

十、计算机启动流程简介 

  1.计算机加电 

  2.Bios开始运行,检测硬件:cpu、内存、硬盘等

  3.BIOS读取CMOS存储器中的参数,选择启动设备

  4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位) 

  5.根据分区信息读入bootloader启动装载模块,启动操作系统 

  6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,

     操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要进程并在每个终端上启动登录程序或GUI。

 

以上是关于计算机基础的主要内容,如果未能解决你的问题,请参考以下文章

视频二次裁剪时间计算出原片的时间片段算法

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

201555332盛照宗—网络对抗实验1—逆向与bof基础

VsCode 代码片段-提升研发效率

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础