• 计算机组件及操作系统基础


     计算机组件简介

        计算机分为5大组件:
            1. 运算器
            2. 控制器
            3. 存储器
            4. 输入设备
            5. 输出设备

         CPU是中央控制器,是控制器和运算器,是一台计算机的运算核心和控制核心;
         存储器主要功能是存储程序和各种文件;
         输入、输出设备我们一般统称为I/0设备,用于连接计算机内外部,而这些组件的连接则需要总线和主板来完成。

     主频

            主频也叫时钟频率,用来表示CPU的运算,处理数据的速度。通常,主频越高,CPU处理数据的速度就越快。
            不能单纯的以为CPU的主频越高,性能就越好。是需要在相同条件下的对比才有效。

     CPU缓存

            cpu缓存位于CPU和内存之间的临时存储器,它的容量比内存小,但是交换速度比内存快。
            cpu的缓存主要是解决cpu运算速度和内存读写速度不匹配的原因,因为cpu运算速度要比内存读写快很多,这样会使cpu花费很长时间等待数据到来或者把数据写回到内存。
            在cpu缓存中的数据是内存中的一部分,但这一小部分是短时间内CPU即将访问到的,当CPU调用数据时,就可以直接从缓存中取得,
            从而加快速度,因此在cpu中加入缓存是一种高效的解决方案这样这个内存储器(cache+内存)就变得即有cache高速,又有内存的大容量的存储系统。
        
            按照数据读取顺序和与CPU结合的紧密程度,CPU缓存可以分为一级缓存,二级缓存,三级缓存,每一级的缓存中的所有数据都是下一级缓存
            的一部分。这三种缓存的技术难度和制造成本是相对递减的,所以其容量也是相对递增的。当CPU要读取一个数据时,首先从一级缓存中查找,
            如果没有找到再从二级缓存中查找,如果还是没有,就从三级缓存中或者内存中找。一般来说,每级缓存的命中率大概都在80%,
            也就是说全部数据量的80%都可以从一级缓存中获取,只剩下20%的总量才需要到二级缓存、三级缓存、内存中读取,
            因此一级缓存是整个CPU缓存架构中最为重要的部分。

      Memory

         存储器分为内存存储器和外存储器,外存主要是U盘、硬盘等,一般意义上我们会讲外存归类于I/0设备。所以这里的存储器我们仅仅指的是内存。
        内存是计算机中重要的部件之一,它的诞生是为了解决CPU的高速运算和硬盘读写速度缓慢的严重不匹配,它是与CPU进行沟通的桥梁,是CPU能直接寻址的存储空间。
        我们平时使用的软件,都是安装到外存的,但是想要使用软件,就必须把软件调入内存中运行起来,才能使用其功能。
        内存就是暂时存储程序和数据的地方,比如当我们使用WPS处理文稿时,当你在键盘上敲入字符时,字符就被存入内存中,当你选择存盘时,内存中的数据才会被存储外存中。

         内存一般采用半导体存储单元,分为以下三种:
            (1)随机存储器(RAM)
            (2)只读存储器(ROM)
            (3)高速缓存(CACHE)

     ROM

             ROM表示只读存储器(Read Only Memory),在制造ROM的时候,信息(数据或程序)就被存入并永久保存。这些信息只能读出,一般不能写入,即使机器停电,
            这些数据都不会丢失。比如 光盘、bios rom

     RAM表示随机存储器

             RAM表示随机存储器(Random Access Memory)表示即可以从中读取数据,也可以从中写入数据。当机器电源关闭时,存于其中的数据就会丢失。我们通常购买的内存条就是RAM.

     CACHE

            高速缓冲存储器(cache)就是cpu缓存。

     I/O设备

        I/O(input/output),即输入/输出设备,每个设备都一个专用的I/O地址。用来处理自己的输入输出信息。
        输入设备:键盘、鼠标
        输出设备:显示器、打印机

     BUS

        总线(bus)是由导线组成的传输线束。它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与
        总线连接,从而形成了计算机硬件系统。

     

         问:为什么32位系统最大只能支持4G内存?

        答:32为代表的是地址总线的位宽,总线的位宽指的是总线能同时传送的二进制数据的位数,而地址总线的位宽决定了CPU可直接寻址内存空间的大小,由于是二进制
        每个寻址空间只能用0、1两种,所以32位系统的寻址空间就是2^32=4G

         按照传输方式分类:
            (1)串行总线:所有信号复用一对信号线,串行总线通信速率比较低,但在数据通信量不是很大的微型处理器电路中,显得便捷灵活
            (2)并行总线:每个信号都有自己的信号线,并行总线通信速度快,实时性好。但是成本会增加。

      主板

         主板提供了一系列结合点,供处理器、显卡、声卡、硬盘、存储器、I/O设备接合。

     操作系统的作用

        屏蔽硬件物理特性和操作细节,向上输出统一接口,为用户使用计算机提供了便利。
        
        操作系统将底层计算机所提供的各种计算能力抽象为统一的接口软件,无论底层是AMD的cpu还是inter的cpu,都统一成一个提供计算能力的,也不管内存是1G、2G、4G
        都统一成32位系统4G内存,64位系统多少内存。所以程序员写程序就大大的简化了。

        问:是不是软件一定要安装到操作系统上才能运行?

        答:不是绝对的。可以直接对硬件设备进行编程。

     操作系统的组成

         (1)内核(kernel)
            内核,是一个操作系统的核心。从不同的角度来看,内核担任的角色不同。
            从纯技术角度来看,内核只是软件和硬件的一个中间层,它把软件发来的请求发送给硬件,完成寻址等操作,还充当了底层驱动。
            从应用程序的角度来看,内核是对硬件的一个高层次的抽象,应用程序与硬件没有直接联系,只与内核有联系,内核是应用程序知道的最底层。
            从多个并发的进程角度来看,内核是一个资源管理器,它完成对进程的切换,调度,共享计算机资源。
            从接口的角度来看,内核是一个库,同系统调用向内核发送各种请求。

        (2)系统调用(system call)
            在cpu的所有指令中,有一些指令是非常危险的,如果所有程序都能使用这些指令,是非常危险的,一旦出错就会导致整个系统崩溃。如:清空内存。
            所以,CPU将指令分为特权指令和非特权指令。对于危险的特权指令,只允许操作系统的内核使用,普通程序就只能使用非特权指令。

            问:一个应用程序肯定是特权指令和非特权指令都要使用到的,怎么办?

          答:操作系统将程序的运行空间分为内核空间和用户空间(内核态和用户态)他们分别运行在不同的级别上,逻辑上是相互隔离的。
            用户进程在通常情况下是不允许访问内核数据的,它也就无法使用内核函数,他们只能在用户空间操作用数据,调用用户空间的函数。
            cpu将特权级别分为4个特权级别RING0,RING1,RING2,RING3 RING0作为内核空间,没有使用RING1,RING2 RING3不能访问RING0的地址空间,包括代码和数据
            (程序 = 指令 + 数据)而系统调用正是操作系统向用户程序提供支持的接口,系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需处理,
            内核再将处理的结果返回给应用程序。

           注意:系统调用并非每一个时刻都在发生,只有那些特权指令才需要通过系统调用接口去请求内核。而一些非特权指令并不需要调用内核而直接可以运行在CPU上。

            问:应用程序如何在用户空间和内核空间切换?

          答:当进程在执行用户自己的代码时,我们称为处于用户空间,此时处理器在特权级别最低的用户代码中运行。每当用户进程使用系统调用时,都自动的将运行模式
            从用户级转为内核级,此时进程在内核的地址空间中运行。当一个进程执行系统调用而陷入内核代码中执行时,我们就称进程处于内核态。此时处理器处于特权
            最高的内核代码中执行。

             问:为什么应用程序不能直接调用内核?

          答:现代的操作系统都具有多任务处理的功能。通常是靠进程来实现。由于操作系统快速的在每个进程间切换执行,所以一切看起来就会像同时的。
            如果每个应用程序都可以直接调用内核,那么一个进程就可以轻易修改另一个进程内存空间中的数据,来导致另一个应用程序的中断或异常。

  • 相关阅读:
    Markdown
    DNS解析流程
    maven 的各种命令
    ES6初体验——(1)let和const命令
    table相关的选择器 & children()与find()的区别 & 选择器eq(n)与nth-child(n)的差异
    Java MD5加密类
    POI操作Excel异常Cannot get a text value from a numeric cell
    MyEclipse+SSH开发环境配置
    JdbcTemplate详解
    Spring配置声明
  • 原文地址:https://www.cnblogs.com/hukey/p/8192088.html
Copyright © 2020-2023  润新知