计算机硬件基础知识

一、计算机科学(人工智能)之父——图灵

电影《模拟游戏》就是改编自图灵的一生,讲述了图灵对计算机的不懈追求,提出了机器是否能像人一样思考,为了纪念图灵对计算机科学发展的巨大贡献,美国计算机协会于1966年设立图灵奖,图灵奖被喻为“计算机界的诺贝尔奖”。

二、计算机

1.定义:俗称电脑,也就是通电的大脑,是一种可以进行数学、逻辑运算,还具有存储记忆功能的智能设备,是人类的奴隶。

2.起源(目的):它包含了我们人类对计算机的终极期望,希望计算机通电以后,就真的能像人一样去工作,从而解放人力

3.编程语言:本质上就是一门语言,是人(程序员)与计算机之间的表达方式,人可以通过编程语言将人想让计算机做的事情表达出来并让其执行。编程的过程其实就是翻译的过程,是程序员将自己的业务需求逻辑理清并翻译成计算机所能理解执行的语言的过程,所以计算机的世界着存在三种角色:人(程序员)、编程语言、计算机硬件

三、计算机硬件组成(计算机所有组成都是模仿人类的器官功能,共5部分)

1.控制器:是计算机的指挥系统,负责控制计算机其他硬件的运行,相当于人的大脑

2.运算器:包括数学运算和逻辑运算,相当于人的大脑

控制器+运算器=CPU(中央处理器)

3.存储器:存储数据

内存(主存):如内存条(又称随机存储器),存取速度快,但是基于电工作,一旦断电数据就丢失,只能临时存储。称为主存的原因是所有的数据指令存取都必须经过内存传输。类似于人的记忆功能,容易断片。

外存:如硬盘,存取速度相对内存很慢,数据可以近似“永久”保存。类似于使用的笔记本子

4.输入设备(Input):计算机接收外界输入数据的工具,一般如键盘、鼠标等

5.输出设备(Output):计算机向外输出数据的工具,如显示屏、打印机等

四、一个程序的运行和计算机三大核心硬件之间的关系

三大核心硬件:cpu、内存、硬盘

1.CPU

CPU:负责运行人类的程序,人们通过程序控制CPU,再通过CPU控制计算机其他硬件,其存取的数据指令都来自于内存 。

精简指令集和复杂指令集

CPU内部含有微指令集,根据指令集设计理念的不同CPU被划分为精简指令集和复杂指令集两类。精简指令集的微指令集比较精简,运行速度快,不容易出错,但做复杂的事,要多个指令完成(常见的CPU有ARM和SPARC架构的,ARM多用于手机、导航系统、网络设备,SPARC架构常用于学术工作站和银行金融体系服务器中);复杂指令集的每条指令都比较复杂,所以运行速度较慢,但每条指令可以处理更丰富的事(常见的CPU有Intel、AMD的x86架构的,多用于个人PC)

# x86-64 : x86架构的计算机使用的软件必须符合x86架构(复杂指令集的一种),64是指64bit即一次性能从内存中取出64位二进制指令。CPU有向下兼容性即64位的CPU既可以运行64位的软件也可以运行32位的软件。

CPU的工作流程:取指—->解码—->执行(流水线工作)

最初人类只使用硬盘和cpu就可运行软件(只是效率太低),随着科技不断发展不断在硬盘和cpu之间加入速度更快的缓存元件(如L1寄存器、L2高速缓存等)

它有两种工作状态:内核态和用户态,内核态下CPU运行操作系统,执行包含操作硬件的所有功能,而用户态下运行应用程序,不能操作硬件,所以运行应用程序时一般内核态和用户态是在频繁相互转换的。

Moore摩尔定律:这是总结性规律(并非科学定律),这是根据以往的经验总结指出芯片中的晶体管数每18个月翻一倍,随着晶体管数的增加,CPU的性能越来越强大,于是便有了多线程的概念。

线程是CPU的执行单位(即流水线),正常CPU都是单个线程,而随着科技的发展CPU可以保持两个不同的线程来回切换,是最终结果几乎是并行的,我们称伪并行(实际上同一时刻还是只能处理一个进程,并不是真正的并行处理)ps:进程是资源单位

除了多线程,还有多核芯片的产生,如2核4线程(伪4核,4条流水线),4核8线程(伪8核),性能上没有真正的4核、8核强

通常所说的CPU的路数是指CPU的个数

2.存储器

存储器按存储速度可以划分为寄存器、高速缓存、内存、磁盘、磁带(已过时)等

寄存器:L1缓存,材质与CPU相同,CPU访问几乎无延时(一般在CPU内部)

高速缓存:L2缓存,价格昂贵,所以空间有限,访问有1-2ns的延迟(一般在主板或CPU上)

内存(主存):易失性存储

RAM(内存),断电后数据消失

ROM:只读存储器,存取速度和内存一样,断电不丢失数据,内含写死的BIOS系统(basic input output system)

CMOS:有易失性,相当于一个特殊的RAM芯片,存储有BIOS系统配置参数,时间日期参数等等,由于每个计算机都会配备一个电池驱动,所以即使计算机没电,CMOS的数据也不会丢失,一块电池通常可以使用若干年

在linux系统中操作系统内核会利用物理内存分配两个特殊的区域:目的是减少系统调用次数,降低 CPU 上下文切换和磁盘访问频率

  1. buffer:缓冲区,用于积攒需要写入硬盘的数据,到一定量会在一次性写入硬盘,提高性能(当遇到突然断电时,要利用备用电源的时间尽快将buffer区的数据写入硬盘,防止数据丢失)
  2. cache:缓存区,用于将硬盘中常用的一些数据提前存到缓存中,CPU取数据可以直接从缓存中读取

虚拟内存(交换分区):如linux的swap分区,从硬盘中划分一个swap分区,主要用于防止内存占满,及时将暂时不用的程序放到磁盘的虚拟内存中,从而释放内存空间

硬盘:

机械硬盘(HDD):依靠机械物理移动,所以使用不当易造成磁盘表面损坏

扇区:硬盘的最小读写单位是一个扇区,1个扇区相当于512字节Bytes(0.5K)

block块:操作系统读写的最小单位是一个block块,1个block块相当于8个扇区即4K

分区:从一个柱面到另一个柱面之间的所有磁盘区域可为一个分区(大小可自定义)

IO延迟=平均寻道时间+平均延迟时间(约9ms)

平均寻道时间取决于目前的物理水平,大概5ms,平均延迟时间取决于磁盘的转速,一般常见磁盘转速为7200r/min即转一圈大约需要8ms,所以平均延迟时间大概4ms左右(转半圈)。

固态硬盘(SSD):基于闪存原理(固态电子存取数据)工作,读写速度比机械硬盘快几十倍上百倍,也不怕使用时计算机被移动,但成本高

所以硬盘的性能:固态硬盘>机械硬盘

常见磁盘容量单位:

1B(bytes)=8 bit(比特位)、1KB=1024B、1MB=1024KB、1GB=1024MB、1TB=1024GB、1PB=1024TB、1EB=1024PB

硬盘接口种类:

  1. IDE(并口):采用并行接口,所以传输速率变高时,传输的数据和信号容易会产生干扰错误(逐渐过时淘汰)
  2. SATA(串口):采用串行接口,具有较强的纠错能力从而提高了传输可靠性,结构简单,支持热插拔,是目前个人PC硬盘的主力接口
  3. SCSI:主要用于小型机服务器(由于小型机的淘汰所以基本不用此接口)
  4. SAS:将SATA和SCSI两者的优势结合起来的新一代接口,SAS在物理层和协议层向下兼容SATA
  5. 光纤通道:起初是为网络系统设计,后应用于硬盘,主要用于高端服务器场景,价格昂贵

常见硬盘接口层面性能:SAS>SATA(存储速率)

所以一般常见配置性能由高到低有四种:

  1. SSD硬盘+SAS接口:价格昂贵(对运维人员最友好)
  2. SSD硬盘+SATA接口:企业常规,对速度有一定要求
  3. HDD硬盘+SAS接口:企业常规,仅有核心业务有速度要求
  4. HDD硬盘+SATA接口:企业内部服务或个人PC,访问量较小,对速度没要求

冷热数据:用户经常访问的数据为热数据,不常访问的数据为冷数据

在高并发情况下追求性价比,可以通过算法区分出冷热数据,将热数据放在SSD盘,冷数据放在HDD盘上;对外业务上主选SAS硬盘,尤其是核心业务,对速度要求比较高,而对内部的服务,备份等可以选用SATA硬盘,容量大,价格便宜,只是速度较慢。

RAID磁盘阵列卡:(对硬盘做集群)

raid的好处

  1. 将所有硬盘容量整合在一起
  2. 可以让数据更安全,防止单点故障
  3. 可以获得更高的性能

RAID是一种存储性能,数据安全和存储成本兼顾的解决方案,硬raid是指通过raid卡配置硬盘,软raid是指通过软件制作的raid功能配置硬盘

整合方式:其中常见四种

RAID0:数据条带存放,将连续的数据分散到n个磁盘上,至少一块盘

  1. 容量:n块盘合在一起的总容量
  2. 性能:理论上是n块盘合在一起的读写速度即n倍速度,但实际上速度要略低一些
  3. 冗余性:不能损坏任何一块盘,一旦损坏,整个盘就不能用了
  4. 使用场合:追求读写速度,对数据安全性没有要求(一般用于集群服务,实际很少使用)
  5. 特点:速度快,但是无冗余(备份),数据不安全

RAID1:镜像,将写入硬盘的数据百分百复制备份到另一个硬盘中,实现存储双份数据,只支持两块盘

  1. 容量:损失一半的容量(损失的容量用于数据备份)
  2. 性能:写入性能和单盘差不多,读取性能由于可以并发,所以速度为原来的两倍(raid0两块盘的读取速率)
  3. 冗余性:冗余度100%,数据最为安全
  4. 使用场合:对数据安全性有要求,但对读写速度没特殊要求,如系统盘
  5. 特点:100%冗余,容量损失一半

RAID5:折中方案,介于raid0和raid1之间,异或运算、奇偶校验,需要三块以上硬盘

  1. 容量:损失一块盘的容量(损失的一块盘用于记录奇偶校验结果)
  2. 性能:读写速率略低于raid0(多了奇偶校验信息),高于raid1
  3. 冗余性:可以损坏一块盘,其他两块盘可以通过奇偶校验重建损坏的盘的数据
  4. 使用场合:一般场合都可以使用,对读取速度和数据安全都有一定要求,但要求不高
  5. 特点:数据稍安全,磁盘利用率高,是RAID0和RAID1的折中方案

RAID10(1+0):先镜像,再进行条带存放。兼顾了RAID0和RAID1的优点,但成本高

  1. 容量:损失一半容量
  2. 性能:较高的读写速度
  3. 冗余性:冗余度100%,数据安全
  4. 使用场合:可用于高性能,高安全但对容量要求不高的场合,如数据库服务器
  5. 特点:RAID0和RAID1的结合产物

RAID01(0+1):先条带存放,再镜像。缺乏安全性,性价比不高(几乎不使用)

计算机优化:

企业网站来讲,都会尽量让用户从内存中读取数据而不是硬盘,几乎所有的运维和架构师对网站,服务器,软件的优化核心,都是磁盘和内存的使用的比例优化。优化的基本原则:读入时,数据能从内存取就不到硬盘取;写入时,在内存中积攒一定量再统一写入硬盘

具体优化方案可以从一下几个方面入手:

  1. 硬件:缓存、集群
  2. 操作系统:内核优化
  3. 应用程序
  4. 网络

对于大型企业(高并发)存数据采用先存内存再一次性存硬盘,取数据先内存再硬盘;而中小企业(低并发)存数据采用先存硬盘再存内存,取数据先内存再硬盘。

其他硬件:

IO设备一般包括两部分:设备控制器(设备接口)和设备本身,有了相对简单且标准的接口后,就可以根据接口编写具体的驱动程序安装到操作系统中来调用IO设备

总线:随着处理器和存储器速度越来越快,单总线很难处理总线的交通流量,所以有了多总线模式,其中北桥为PCI桥(连接高速设备,如CPU、内存、寄存器),南桥为ISA桥(连接慢速设备,如I/O设备)

UPS电源:不间断电源,一种可以蓄电的电源,提高电源稳定性(服务器的一般可以撑几个小时)

IDRAC接口:戴尔服务器上的远程控制卡,用于异地远程即时查看服务器的硬件状态并可控制服务器开关机或重装系统

程序运行的大致流程

  • 首先将程序的代码指令存储于硬盘当中
  • 需要运行时将代码指令从硬盘加载(写入)至内存
  • 然后CPU从内存中读取该程序的指令运行(所以计算机硬盘的大小决定了能安装的软件数目,内存的大小决定了计算机能同时运行的软件数目)

计算机的启动流程(操作系统的启动流程)

  1. 计算机加电
  2. 启动BIOS系统,扫描启动设备,寻找操作系统位置
  3. 读取启动设备的第一个扇区(主引导记录MBR共512字节),其中446字节为BootLoader(启动装载模块)即grub程序,64字节为分区信息,最后2字节为结束标志位
  4. grub程序负责将操作系统内核载入内存,启动操作系统
  5. 操作系统让BIOS检测计算机硬件驱动程序是否完好,完好后将驱动程序调入操作系统内核,操作系统接管计算机

五、操作系统(软件中的一类)

操作系统:能够控制,协调、管理计算机硬件资源和应用软件资源的一类控制程序。现流行的操作系统有:Windows、Linux、Mac等

操作系统的意义:控制计算机硬件的基本运行,将计算机硬件复杂的操作细节封装成简单一致的接口(功能)供上层应用软件或用户使用(文件就属于操作系统提供给用户或程序操作硬盘一种功能)

总结:操作系统的作用
1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口
2:管理、调度进程,并且将多个进程对硬件的竞争变得有序

内核:内核程序是操作系统所包含的一组计算机程序中的一个子集,是最基本也是最核心的部分,直接控制最底层硬件,主要负责管理系统的进程、文件、进程、设备驱动程序和系统资源(内存)等,其中进程调度是内核最重要的功能

系统调用接口:由于应用程序是无法直接访问内核的,所以系统调用的作用是把应用程序的请求传递给内核,之后将内核处理的结果返回给应用程序,所以系统调用是应用程序和系统之间的接口。系统调用接口其实就是对这些系统调用服务例程即内核函数的封装

***系统调用接口和API应用程序接口的区别

程序员调用的是API(API函数),然后通过与系统调用共同完成函数的功能。因此,API是函数的定义,与内核无直接关系,是一个提供给应用程序的接口,是与程序员进行直接交互的。系统调用则不与程序员进行交互的,如果API中含有系统调用的操作,它会根据API函数,通过一个软中断机制向内核提交请求,以间接获取内核服务的接口即系统调用接口。不是所有的API都需要系统调用

进程

操作系统最核心的概念就是进程,进程是指程序的运行过程,具体来说就是操作系统控制硬件来运行程序的过程

程序、任务、进程、线程的区别

  1. 程序是一组计算机语言编写的指令的有序集合(一堆代码)
  2. 任务指由软件完成的一个活动(为达到某种目的的一系列操作),所以一个任务既可以是进程,也可以是线程。负责执行任务则是cpu
  3. 进程可定义为正在执行的程序,在计算机中执行的任何程序实例都可称为进程,一个程序可以有多个进程。进程是资源分配的基本单位,创建进程后就会向操作系统发出资源请求。ps:守护进程是指持续存在的进程
  4. 线程是指某一进程中单独运行的子程序,可看作轻量型进程,可以看做是进程中运行代码的过程,所以线程存在于进程中,一个进程由一个或多个线程组成。在微内核系统中真正的调度运行基本单位是线程,同一个进程中的各线程可以并行运行且共享资源

操作系统(OS)的发展:

第一代计算机:真空管和穿孔卡片(真空管易烧断、浪费计算机资源、串行)

第二代计算机(大型机):晶体管和批处理系统(晶体管提高了计算机的可靠性)

(单道)批处理系统:一次只把一个程序读入内存,运行完毕后,再执行下一个程序,没有并发,所以称之为串行。(多任务时,一个运行完再运行下一个,遇到IO只能等待)

  • 优点:与第一代相比进一步利用了计算机资源
  • 缺点:①整个过程需要操作员(人)参与 ②让程序员明显感觉到等待(不能交互,无法及时调试,影响程序开发效率) ③程序的运行是串行,浪费CPU资源

第三代计算机:集成电路芯片和多道程序设计技术

SPOOLing技术(外部设备联机并行操作):不再需要人的参与,解决了人参与的耗时问题,基于通道技术实现了CPU和IO设备的并行

多道程序设计:(三代的关键技术)主要解决了多任务时CPU遇到IO时等待的问题,提高了CPU、内存等资源的利用率,但没有实现用户交互(针对单核,实现并发)

特点:多任务时使用起来感觉在同时运行(宏观上并行即并发,微观上串行即批处理)

  • 空间上的复用:将多道相互独立的程序在运行前都加载到内存中(提高内存的利用率)
  • 时间上的复用:多个任务复用CPU的时间片(毫秒级),即CPU在多个程序之间来回切换(统筹时间,提高CPU的利用率) CPU切换的规则:①当进程遇到IO时切换(提高效率) ②当进程虽然没有遇到IO但占用CPU时间过长时切换(降低效率)

ps:多个进程的内存空间是相互隔离的,而且是物理隔离。如果内存不分隔,程序会丧失安全性和稳定性,所以需要特殊的硬件对这些程序进行保护

分时操作系统:多用户多任务操作系统,通过多个联机终端来回切换+多道技术,使用户感觉独占计算机资源(实际上是多用户同时使用,共享主机),实现了用户的交互服务

兼容分时系统CTSS是最早出现的分时系统,可以为多用户提供快速的交互服务,但第三代计算机在广泛配有必需的保护硬件(程序间内存彼此隔离)之后,分时操作系统才开始流行。MULTICS项目是由MIT、贝尔实验室、通用电气合作开发的项目,但目标过大导致项目烂尾,但是MULTICS项目孕育了后来的Unix系统(最流行的分时操作系统,1970年为Unix元年),之后由于Unix的收费,随后发起来软件共享运动,计划创建出一套GNU(GNU is not unix)自由操作系统,在GNU中有GPL章程协议(开源协议),同时催生了minix,Linux系统,linux系统的发行商主要有Redhat、centos、Ubuntu(乌班图)、红旗等。(UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。)

GPL主要几点规则:

  1. 任何个人或公司可释放出自由软件(free software)
  2. 任何释放出自由软件的个人或公司,均可由自己的服务来收取适当的费用
  3. 该软件的源码(source code)需要随软件附上,并且是可公开发表
  4. 任何人可通过任何正常渠道取得此自由软件,且均可取得此授权模式

***多道程序系统只提供了一个环境,以便充分使用各种系统资源(如 CPU、内存、外设),但是没有提供用户与计算机系统的交互。分时系统是多道程序设计的自然延伸。对于分时系统,虽然 CPU 还是通过切换作业来执行多个作业,但是由于切换频率很高,使得用户可以在程序运行时与其交互。

ps:

  1. Windows系统是单用户多任务系统,linux系统是多用户多任务系统
  2. 并发和并行的区别主要在于CPU是单核还是多核的,并发可以认为宏观上是同时运行的,但实际上是单核CPU通过来回切换任务实现的,而并行是利用多核CPU使得多任务实现真正的并行,所以可以说一个双核CPU可以实现两个任务的并行或者多任务的并发

第四代计算机:大规模集成电路芯片,微处理器的发明导致了个人计算机(微型计算机)的普及

一个任务(进程)的三种状态:五状态模型多出了创建态和终止态

  1. 运行态:占用CPU正在运行
  2. 就绪态:等待系统分配CPU即可立即运行
  3. 阻塞态:等待某个事件(IO请求)的完成,放弃CPU

ps:

  • 运行态和就绪态可以合称为非阻塞态
  • 挂起态:有些系统还有一种状态即挂起态,主动进入挂起态,把已经在内存的进程从内存中调出到外存,因为进程的内存的状态分为就绪和阻塞,所以有就绪挂起态和阻塞挂起态(此为七状态模型)

状态转换过程

  1. 运行态→阻塞态:往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的。
  2. 阻塞态→就绪态:则是等待的条件已满足,只需分配到处理器后就能运行。
  3. 运行态→就绪态:不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等。
  4. 就绪态→运行态:系统按某种CPU调度算法选中就绪队列中的一个进程占用处理器,此时就变成了运行态

    计算机硬件基础知识

    提交任务的方式(通信方式):同步、异步

    同步和异步强调的是消息通信的方式。同步,就是调用某个东西时,调用方需要等待这个调用返回结果后才能继续后续操作。异步,和同步相反,调用方不会等待返回结果,而是在调用发出后,调用者可继续执行后续操作,被调用者通过状态/通知来通知调用者,或者通过回调函数来处理这个调用并返回结果(通知和回调效率更高)

    同步异步不能和阻塞非阻塞混为一谈。阻塞和非阻塞强调的是程序在等待调用结果(消息,返回值)时的进程状态,同步和异步强调的是消息通信机制即方式。如对于同步调用来说,很多时候当前线程还是激活的状态,只是从逻辑上当前函数一直处于计算中,没有返回值而已(此时并不是阻塞态),所以同步等待时什么都不干,白白占用着资源。

    总结:

    1. 同步与异步针对的是函数/任务的调用方式:同步就是当一个进程发起一个函数(任务)调用的时候,一直等到函数(任务)完成,而进程可能继续处于激活状态。而异步是当一个进程发起一个函数(任务)调用的时候,不会等函数返回,而是继续往下执行,函数返回的时候通过状态、通知、事件等方式通知进程任务完成
    2. 阻塞与非阻塞针对的是进程或线程:阻塞是当请求不能满足的时候就将进程挂起,而非阻塞则不会阻塞当前进程  

CPU调度

CPU调度(进程调度,低级调度):按一定的策略,动态地把CPU分配给处于就绪队列中的某一个进程,以使之执行。CPU调度是多道程序设计操作系统的基础,这种调度是操作系统的基本功能。通过在进程间切换 CPU,操作系统可以使得计算机更加高效。调度程序停止一个进程而启动另一个所需的时间称为调度延迟。

调度程序的功能包括:

  1. 切换上下文
  2. 切换到用户模式
  3. 跳转到用户程序的合适位置,以便重新启动程序

CPU调度方式:(UNIX系统就采用剥夺式动态优先的CPU调度)

  1. 非剥夺方式:分派程序一旦把CPU分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把CPU分配给另一个进程。
  2. 剥夺方式:当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的CPU,将之分配给其它进程。剥夺原则有:优先权原则、短进程优先原则、时间片原则等。

CPU调度、进程调度、作业调度等区别:

  1. 低级调度 = CPU调度 = 进程调度
  2. 中级调度 = 内存调度
  3. 高级调度 = 作业调度
  4. 操作系统调度 = 高级调度 + 中级调度 + 低级调度

操作系统调度:

  1. 高级调度:作业调度,(外存到内存)通过算法决定把外存上处于后备队列中的某作业调入内存,并为它们创建进程、分配必要的资源,然后,再将新创建的进程排在就绪队列上,准备执行;
  2. 中级调度:内存调度,(外存到内存)通过算法决定外存上处于挂起队列中的某进程重新调回内存,取消挂起态。引入中级调度的主要目的,是为了提高内存利用率和系统吞吐量。
  3. 低级调度:进程调度或CPU调度,(内存到CPU)通过算法决定把就绪队列的某进程获得CPU资源。常见的cpu调度算法有先到先服务调度(FCFS)、最短作业优先调度(SJF)、优先级调度(priority scheduling)、轮转法调度(RR)、多级队列调度、多级反馈队列调度、最短响应比优先算法(HRRN)

硬件中断处理机制:CPU在收到硬件(比如时钟,触控屏触摸,鼠标点击)的信号时会暂停执行当前的进程, 如果 CPU 并未执行优先级比中断优先级更高的任务,则跳转到对应设备的中断处理程序上,而这个程序是内核的一部分,中断处理程序服务完毕后,CPU 便会返回继续运行中断之前所执行的进程的指令。简单来说,就是使CPU中止正在执行的程序而转去处理特殊事件的操作,处理完毕后又返回原被暂停的程序继续运行。

硬中断和软中断的区别:硬中断是由硬件产生的,比如磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求),硬中断可以直接中断CPU,CPU会中断当前正在运行的任务,来处理中断。软中断的处理非常像硬中断,然而,它们仅仅是由当前正在运行的进程(如含有系统调用的API函数)所产生的,软中断并不会直接中断CPU,只是中断调用代码的过程,进程或许会被挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。这种中断一般是一种需要内核为正在运行的进程去做一些事情(通常为I/O)的请求

上下文切换(进程切换):竞争CPU资源导致上下文切换即CPU 从一个进程或线程切换到另一个进程或线程,上下文是指某一时间点 CPU 寄存器和程序计数器的内容,所以CPU上下文切换就是保存上一个任务运行的寄存器和计数器信息切换到加载下一个任务的上下文的过程。所以需要进程调度的时候,就会需要切换上下文

CPU上下文切换可分为进程上下文切换,线程上下文切换以及中断上下文切换(中断处理机制)

其中线程的上下文切换其实就可以分为两种情况:

  1. 前后俩个线程属于不同进程,此时,由于资源不共享,所以切换过程就跟进程上下文切换是一样的。
  2. 前后两个线程属于同一个进程,此时,应为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动,只需要切换线程的私有数据,寄存器等不共享的数据。

虽然同为上下文切换,但同进程内的线程切换,要比多进程间切换消耗更少的资源,而这,也正是多线程代替多进程的一个优势。

六、应用程序

除操作系统以外的其他程序都属于应用程序,是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,一般用于解决实现具体的功能需求。如图形界面,文本编辑器,编译器、命令行界面,QQ,淘宝,APP等等(图形界面其实就是一种以图形化界面的方式来供用户管理其他应用程序的应用软件)

七、完整的计算机体系结构

分为三个层次:最上层的应用程序或用户,起承上启下作用的操作系统,最底层的计算机硬件

计算机硬件基础知识

平台=操作系统+计算机硬件

跨平台性:一个软件能否在任意平台运行使用是衡量一个软件质量的重要指标之一

八、一个产品项目从提出到落地的具体大致流程

一个互联网公司一般有产品岗,技术岗,设计岗,运营岗,市场销售岗

其中技术岗一般有开发人员,测试人员,运维人员,网络人员等

1.需求分析阶段(产品部)

产品总监和运营总监讨论提出一个需求,然后市场调研并进行需求分析,之后向高层汇报评审,高层确定需求通过,产品总监召集(PM)产品经理分配任务,产品经理出初始原型草图(一般要和(UE)交互设计师讨论),产出PRD(产品需求文档),之后召集设计部技术部人员开会讲解原型并讨论需求能否实现(开会至大家需求明确一致为止)。

2.项目开发阶段(设计部、技术部)

方案确定后交给设计部,UX(UE)交互设计师做交互稿,避免产品反人类,UI界面设计师根据UE的交互稿做视觉稿,然后再交给技术部,前后端协作开发各自定义好接口规范,(FE)前端工程师负责客户端程序(页面开发,手机APP,微信小程序等),(RD)后端工程师负责服务端程序,(QA)测试岗负责根据PRD建测试用例,(OP)运维岗负责架构设计。开发过程要进行几次code review(代码复查评审),目的是及时预防bug,改善保证代码的质量,加快PR审核的速度,从而提高开发效率。

3.项目测试阶段

前后端开发好后先联调自测,消除出现的bug。之后交给(QA)测试岗进行第一次功能验收(测试环境,staging环境(模拟仿真环境),线上环境测试),验收通过后就可以进入上线阶段

4.项目上线阶段(运维部)

(OP)运维岗负责编写上线方案,设计好系统的架构,将代码(产品服务端)部署到服务器上,产品就发布上线了,同时进行功能回测(第二次功能验收),没问题产品就上线成功了,接下来运营岗和销售岗就可以进行运营宣传销售了。

运维人员在平时还负责测试环境,沙箱环境的维护,产品的更新维护(如果运行出现小问题立刻改,出现大问题就先回滚,保证产品的正常运行)

PRD的主要使用对象有:开发、测试、项目经理、交互设计师、运营及其他业务人员。开发可以根据PRD获知整个产品的逻辑;测试可以根据PRD建用例;项目经理可以根据PRD拆分工作包排期,并分配开发人员;交互设计师可以通过PRD来设计交互细节。PRD是项目启动之前,必须要通过评审确定的最重要文档。

计算机硬件基础知识

九、运维人员的三大职责

1.产品7*24*365不间断运行:做好自动化监控(一般公司也会安排监控运维人员倒班监察,注意服务器一直开着对硬件的损耗巨大,极易损坏,所以要做好硬件监控

2.数据备份:异地主从同步备份

3.优化性能:提高用户的使用体验(从操作系统,计算机硬件(性价比高),集群架构,网络,安全等方面入手)

原则:保证产品的简单、易用、高效

十、服务器

ps:个人PC即笔记本或台式机,台式机与笔记本的区别在于笔记本有电池可以蓄电且便于携带

1.定义

服务器是提供计算服务的设备,一般都用于企业搭建网站等等,服务器的架构类似于通用的计算机,但由于需要提供高可靠的服务,所以对于各项性能(处理能力、稳定性、可靠性、安全性、可扩展性等)都有较高要求。(本质上就是一台是特殊的计算机,主要用在企业的后台为用户提供各种业务服务

2.服务器类型

2.1按尺寸分类:服务器的尺寸是按U计算的,1U表示服务器厚度(高度)为4.445cm,一般有1U、2U、4U三种型号

2.2按外形分类:

机架式服务器:类似于抽屉,安装于机柜中,属于工作中使用最多的服务器类型。

刀片服务器:在标准机柜内插装多个卡式的服务器单元,实现高可用、高密度性能,每一个“刀片”就是一个系统主板。一般服务器集群使用,提高整体性能。不过价格较贵

塔式服务器:外观与结构都与立式PC相似,不过个体占用空间较大,不方便管理,不适合大量使用

2.3按品牌分类:

Dell戴尔服务器(应用最广,性价比高)、HP惠普服务器、IBM服务器(质量最好,价格太贵)、浪潮、联想、华为等

3.去IOE运动

IBM(服务器)、甲骨文Oracle(数据库软件)、EMC易安信(数据存储设备),牵扯到数据安全和设备成本问题,用其他服务器代替IBM小型机服务器,用MySQL代替Oracle,用自定义存储,ceph块存储,nfs文件存储,swift对象存储代替EMC高端存储

小型机(已过时):相当于高端定制,采用精简指令集处理器,架构不同于PC服务器,有专门的操作系统且只能运行特定的操作系统,性能比服务器更加强大,稳定性也好,但是价格太贵

4.常见服务器类型补充

Dell服务器:1U型号:2010-2013(R410、R610)、2014-2016(R420、R430、R620、R630)、最新(R440、R640),2U型号:2010-2013(R710)、2014-2016(R720、R730)、最新(R740、R7425)

IBM服务器:1U服务器(3550/m3,3550/m5)、2U服务器(3650)、4U服务器(3850)、8U服务器(3950)

5.云服务器(云主机)

随着云服务器的发展,中小型企业一般都直接购买云服务器使用(阿里云,腾讯云,青云,uclond等等),硬件等不用自己管理

6.如何防止服务器断电

  • 采用双电源模块
  • 将电源连接线插在不同的插电板上
  • 采用UPS不间断电源(一般只维持几小时)
  • 采用双电路,接入不同的市电
  • 提前与加油站签订紧急供油协议,断电后利用小型柴油发电机发电

7.我用过的服务器的品牌、尺寸、型号、配置信息?

Dell戴尔2U双路服务器R730、双电源、CPU12核24线程、内存DDR4 64G、8*3TB的SAS硬盘、阵列卡H730

给TA打赏
共{{data.count}}人
人已打赏
软件知识

C语言爬虫欢迎提意见

2023-8-21 21:29:30

硬件知识

电脑常见的硬件故障和解决方法

2023-6-5 19:10:49

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索