计算机基础知识

计算机基础知识

冯.诺依曼体系结构下计算机的硬件分成5大组成部件:运算器、控制器、存储器、输入设备和输出设备。

运算器和控制器是计算机的核心,合称中央处理单元(Central Processing
Unit,CPU)或处理器。CPU的内部还有一些高速存储单元,被称为寄存器。
其中运算器执行所有的算术和逻辑运算;控制器负责把指令逐条从存储器中取出,经译码后向计算机发出各种控制命令;而寄存器为处理单元提供操作所需要的数据。
存储器是计算机的记忆部分,用来存放程序以及程序中涉及的数据。它分为内部存储器和外部存储器。
内部存储器用于存放正在执行的程序和使用的数据,其成本高、容量小,但速度快。外部存储器可用于长期保存大量程序和数据,其成本低、容量大,但速度较慢。
输入设备和输出设备统称为外部设备,简称外设或I/O设备,用来实现人机交互和机间通信。微型机中常用的输入设备有键盘、鼠标等,输出设备有显示器、打印机等。

在这里插入  图片描述

运算器:是运算器的核心。由算术逻辑单元(ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器组成,它是数据加工处理部件,用于完成计算机的各种算术和逻辑运算。
它由控制器发出的控制信号来指挥的,是执行部件。>
控制器:是CPU指挥控制中心。用于控制整个CPU的工作,决定了计算机运行过程的自动化。
它不仅要保证程序的正确执行,而且要能够处理异常事件。包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。

寄存器组:是CPU暂时存放数据的地方,里面放着待处理或已经处理好的数据,CPU访问寄存器所用的时间要比访问内存的额时间段。
采用寄存器可以减少CPU访问内存的次数,从而提高CPU的工作速度。

其他的帮助理解`

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指令把用户态切换成内核态,并启用操作系统从而获得服务。`

什么是软件?软件分类及举例

计算机软件(Computer
Software)是使用计算机过程中必不可少的东西,是按照特定顺序组织的计算机数据和指令的集合,计算机软件可以使计算机按照事先预定好的顺序完成特定的功能
计算机软件按照其功能划分为系统软件与应用软件
操作系统软件: DOS(Disk Operating System), Windows, Linux, Unix, Mac, Android, iOS等
应用软件:office QQ聊天 YY语言 扫雷等

什么是开发和软件开发

软件的制作过程以及借助开发工具与计算机语言制作软件

什么是计算机语言以及计算机语言的分类

计算机语言是人与计算机之间进行信息交流沟通的一种特殊语言,有如下分类:
机器语言:
机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义。
汇编语言:
汇编语言是使用一些特殊的符号来代替机器语言的二进制码,计算机不能直接识别,需要用一种软件将汇编语言翻译成机器语言。
高级语言:
使用普通英语进行编写源代码,通过编译器将源代码翻译成计算机直接识别的机器语言,之后再由计算机执行。
高级语言包括C,C++,C#,JAVA等。

人机交互的两种方式

a:命令行方式
需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。
b:图形化界面方式
这种方式简单直观,使用者易于接受,容易上手操作。

计算机历史

  1. 真空管与穿孔卡片(无操作系统)

第一代计算机的产生背景:
第一代之前人类是想用机械取代人力,第一代计算机的产生是计算机由机械时代进入电子时代的标志

过程:
万能程序员们将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机
内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。

注意点:
1 程序员需要在墙上的计时表上预约时间
2 同一时刻只有一个程序在内存中被CPU调用运行(串行的)

优点:程序员在申请的时间段内独享整个资源,即时的调试自己的程序,如果有bug可以当场处理.
缺点:这对于计算机提供商来说是一种浪费(你买一台电脑4000块,那 一年中你用365比只用1天,肯定是省成本的,物尽其用)

  1. 晶体管和批处理系统

第二代计算机的产生背景:

由于当时的计算机非常昂贵,自认很自然的想办法较少机时的浪费。通常采用的方法就是批处理系统。

特点:
有了操作系统的概念FORTRAN,这些机器现在被称为大型机

工作过程:

第一代计算机的问题是:
人机交互太多了(人机交互过程:输入-》计算-》输出)

一个人的交互:输入-》计算-》输出
10个人的交互:
输入-》计算-》输出
输入-》计算-》输出
输入-》计算-》输出

第二代如何解决第一代的问题:
1.把一堆人的输入攒成一大波输入,
2.然后顺序计算(这是有问题的,但是第二代计算没有解决)
3.把一堆人的输出攒成一大波输出

现代操作系统的前身:

在收集了大约一个小时的批量作业之后,这些卡片被读入磁带,然后磁带被送到机房里并装到磁带上。然后磁带被送到机房里并装到磁带机上。随后,操作员装入一个特殊的程序(此乃现代操作系统的前身),它负责从磁带上读入第一个作业(job,一个或一组程序)并运行,其输出写到第二个磁带上,而且不打印。每个作业结束后,操作系统自动的从磁带上读入下一个作业并且运行。当一整批的作业全部结束后,操作员去下输入和输出磁带,讲输入磁带换成下一批作业,并且把输出磁带拿到一台1041机器上进行脱机(不与主计算机联机)打印

优点:批处理,节省了机时

缺点:
1.整个流程需要人参与控制,将磁带搬来搬去(中间俩小人)

2.计算的过程仍然是顺序计算-》串行

3.程序员原来独享一段时间的计算机,现在必须被统一规划到一批作业中,等待结果和重新调试的过程都需要等同批次的其他程序都运作完才可以

  1. 集成电路芯片和多道程序设计

第三代计算机的产生背景:

20世纪60年代初期,大多数计算机厂商都有两条完全不兼容的生产线。一条是面向字的:大型的科学计算机,如IBM 7094,见上图,主要用于科学计算和工程计算另外一条是面向字符的:商用计算机,如IBM 1401,见上图,主要用于银行和保险公司从事磁带归档和打印服务

开发和维护完全不同的产品是昂贵的,同时不同的用户对计算机的用途不同。IBM公司试图通过引入system/360系列来同时满足科学计算和商业计算,360系列低档机与1401相当,高档机比7094功能强很多,不同的性能卖不同的价格360是第一个采用了(小规模)芯片(集成电路)的主流机型,与采用晶体管的第二代计算机相比,性价比有了很大的提高。这些计算机的后代仍在大型的计算机中心里使用,此乃现在服务器的前身,这些服务器每秒处理不小于千次的请求。

如何解决第二代计算机的问题1:

卡片被拿到机房后能够很快的将作业从卡片读入磁盘,于是任何时刻当一个作业结束时,操作系统就能将一个作业从磁带读出,装进空出啦的内存区域运行,这种技术叫做同时的外部设备联机操作:SPOOLING,该技术同时用于输出。当采用了这种技术后,就不在需要IBM1401机了,也不必将磁带搬来搬去了(中间俩小人就失业了)

如何解决第二代计算机的问题2:

第三代计算机的操作系统广泛应用了第二代计算机的操作系统没有的关键技术:多道技术
多道技术:

多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。
空间上的复用:将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。
时间上的复用:当一个程序在等待I/O时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%。

空间上的复用最大的问题是:程序直接的内存必须分割,这种分割在硬件层面实现,由操作系统控制实现。如果内存彼此不分割,则一个程序可以访问另外一个程序的内存,首先丧失的是安全性,比如你的qq程序可以访问操作系统的内存,这意味着你的qq可以拿到操作系统的所有权限。

其次丧失的是稳定性,某个程序崩溃时有可能把别人的内存也给回收了,比方说把操作系统的内存给回收了,则操作系统崩溃。

第三代计算机的操作系统仍然是批处理,许多程序员怀念第一代独享的计算机,可以即时调试自己的程序。为了满足程序员们很快可以得到响应,出现了分时操作系统

如何解决第二代计算机的问题3:

分时操作系统:
多个联机终端+多道技术

20个客户端同时加载到内存,有17在思考,3个在运行,cpu就采用多道的方式处理内存中的这3个程序,由于客户提交的一般都是简短的指令而且很少有耗时长的,索引计算机能够为许多用户提供快速的交互式服务,所有的用户都以为自己独享了计算机资源

CTTS:麻省理工兼容分时系统,知道第三代计算机广泛采用了必须的保护硬件(程序之间的内存彼此隔离)之后,分时系统才开始流行

MIT,贝尔实验室和通用电气在CTTS成功研制后决定开发能够同时支持上百终端的MULTICS(其设计者着眼于建造满足波士顿地区所有用户计算需求的一台机器),很明显真是要上天啊,最后摔死了。

后来一位参加过MULTICS研制的贝尔实验室计算机科学家Ken Thompson开发了一个简易的,单用户版本的MULTICS,这就是后来的UNIX系统。基于它衍生了很多其他的Unix版本,为了使程序能在任何版本的unix上运行,IEEE提出了一个unix标准,即posix(可移植的操作系统调用接口标准)

后来出现了minix,芬兰学生Linus Torvalds基于它编写了Linux

第四代计算机(1980~至今):个人计算机

随着大规模集成电路的发展,每平方厘米的硅片芯片上可以集成数千个晶体管,个人计算机的时代就此到来。

第一代计算机(1946-1957) 电子管时代
第二代计算机(1958-1964) 晶体管时代
第三代计算机(1965-1970) 集成电路时代
第四代计算机(1971以后) 大规模集成电路时代

1946年,世界上第一台计算机ENIAC在美国宾州大学诞生,是美国奥伯丁武器场为了满足计算机弹道需要而研制成的。
使用了17468只电子管,占地170平方,重达30吨,耗电174千瓦时,耗资40多万美元。每秒可以进行5000次加减运算。

从计算机被发明之初,人们判定计算机的计算速度的最重要的指标便是中央处理器的运算速度,中央处理器就像是计算机的心脏,牵动着计算机的每一个部分。

主频:主频是CPU的时钟频率(CPU Clock Speed),是CPU运 算时的工作的频率(1秒内发生的同步脉冲数)的简称。单位是Hz。
一般说来,主频越高,CPU的速度越快,由于内部结构不同,并非所有的时钟频率相同的CPU的性能都一样。

外频:系统总线的工作频率, CPU与外部(主板芯片组)交换数据、指令的工作时钟频率。

倍频:倍频则是指CPU外频与主频相差的倍数。

三者关系是:主频=外频x倍频

缓存(cache):高速交换的存储器。CPU缓存分为一级 ,二级,三级缓存,即L1,L2,L3。

内存总线速度(Memory-Bus Speed): 一般等同于CPU的外频 ,指CPU与二级(L2)高速缓存和内存之间的通信速度。

地址总线宽度:决定了CPU可以访问的物理地址空间。

CPU公司:不管是通过新闻还是网上的资讯,最让我们熟知的CPU公司便是“Intel”和“AMD”,除此之外“IBM”公司也是有CPU产品的。
    
CPU类型:虽然各种CPU的功能都是用于计算,但是其中也有一些类型的区别,拿英特尔的CPU举例,
我们通常家用电脑或者学校单位使用的个人电脑CPU大多都是酷睿(Core)系列的,如常见的:I3 I5 I7。
而企业公司使用的服务器上的CPU是英特尔至强(Xeon)系列的CPU,如E3 E5 E7。看到这里大家都是觉得“都是CPU哪个快就用哪个,还分这么多真麻烦”,
其实用途不同CPU的类型不同这样是为了提高效率。举个例子,家用电脑一般是用于办公,娱乐或者工作,处理这些内容通常需要的是CPU的频率快,
其中特别是打游戏更是需要CPU的运行频率快,而服务器因为多个用户访问的原因通常需要的是同时处理多个任务的能力,
所以服务器CPU就需要更多的核心用来同时处理多个任务以达到提升效率的目的。
内存储器:是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。
计算机中所有程序的运行都是在内存储器中进行的,因此内存储器的性能对计算机的影响非常大。    
功能:内存储器(Memory)也被称为内存,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。

存储器系列,L1缓存,L2缓存,内存(RAM),EEPROM和闪存,CMOS与BIOS电池

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

在这里插入图片描述

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

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

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

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

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

操作系统的启动流程

   1.  计算机加电

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

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

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

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

  6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。
  一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI

应用程序的启动流程

1.双击快捷方式
  2.告诉操作系统一个文件路径
  3.操作系统从硬盘读取文件到内存中
  4.cpu从内存中读取数据执行
  5.注意:应用程序的启动流程:

前提:应用程序是运行于操作系统之上的
   举例:启动暴风音影
     1.双击快捷方式
     2.告诉操作系统一个文件路径
     3.操作系统从硬盘读取文件内容到内存中
     4.cpu从内存读取数据执行

简单总结:


> 一、操作系统发展史及多道技术
> 
>   1.第一代计算机(1940~1955):真空管和穿孔卡片
> 
>     特点:没有操作系统的概念,所有的程序设计都是直接操控硬件。
> 
>     优点:每个人独享,可以自己调试代码,找到bug。
> 
>     缺点:浪费计算机资源。
> 
>   2.第二代就算机(1955~1965):晶体管和批处理系统
> 
>     特点:把代码都赞到一块,让一个CPU共享,但是还是一个一个的去运行,还是顺序算法(串行)
>     优点:批处理,节省了机时。
>     缺点:有人的参与了,搬过来搬过去的麻烦,拖慢程序运行的速度
> 
>   3.第三代计算机(1965~1980):集成电路芯片和多道程序设计
> 
>     第三代计算机的操作系统广泛应用了第二代计算机的操作系统没有的关键技术:多道技术
> 
>     多道技术:(指的是多道/个程序)
>        1.空间上的复用:内存要支持同时跑进多个程序
>        2.时间上的复用:多个程序要让它们能切换(什么时候要切?一个程序占用的时间过长要切;当CPU遇到IO阻塞时,等待的时间要切)
> 
>   4.第四代计算机(1980~至今):个人计算机
> 
> 二、为什么要使用操作系统呢?
> 
> 程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了他,
> 程序员就从这些繁琐的工作中解脱了出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件。
> 
> 三、操作系统的两大作用
> 
>   1.为应用程序提供如何使用硬件资源的抽象
> 
>   2.把多个程序对硬件的竞争变得有序化(管理应用程序)
> 
> 四、计算机语言的分类
> 
>    机器语言:
>      特点:用计算机能看懂的0和1去写程序
>      优点:程序运行速度快
>      缺点:开发效率低   汇编语言:
>      特点:用一些英文标签代替一串二进制数字去写程序
>      优点:比机器语言好一点,操作系统内使用大量汇编语言(操作系统不需要网络,则速度越来越好)
>           比如:关于进程的调用代码,就是用汇编语言写的
>      缺点:开发效率低   高级语言:
>      特点:用人能读懂的(英文)字符去写程序
>      优点:开发效率高
>      缺点:运行速度慢,必须经过翻译才能让计算机识别,导致运行速度慢   以上得出结论:开发效率从低到高,运行速度从低到高,学习难度由难到易。 ```






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值