一、计算机硬件
计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据 进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备
一个完整的计算机系统由硬件(Hardware)系统和软件(Software)系统两大部分组成
1、计算机发展历史:
1. 第一代计算机(1946-1957) 电子管时代
2. 第二代计算机(1958-1964) 晶体管时代
3. 第三代计算机(1965-1970) 集成电路时代
4. 第四代计算机(1971以后) 大规模集成电路时代
2、冯·诺依曼理论的要点是:
(1. 数字计算机的数制采用二进制,bit 位, byte 字节 1 byte =8 bit
(2. 计算机应该按照程序顺序执行
(3. 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成
3、服务器硬件---CPU
CPU:Central Processing Unit,即中央处理器。由控制器和运算器构成,是整个计算机系统中最重要 的部分
CPU 架构: CISC:Complex Instruction Set Computer,复杂指令集
RISC:Reduced Instruction Set Computer,精减指令集
CPU主频:主频是CPU的时钟频率(CPU Clock Speed),是CPU运算时的工作的频率(1秒内发生的同步 脉冲数)的简称。单位是Hz。一般说来,主频越高,CPU的速度越快,由于内部结构不同,并非所有的 时钟频率相同的CPU的性能都一样
外频:系统总线的工作频率, CPU与外部(主板芯片组)交换数据、指令的工作时钟频率
倍频:倍频则是指CPU外频与主频相差的倍数
三者关系是:主频=外频x倍频
高速缓存(cache):高速交换的存储器。
CPU缓存分为一级,二级,三级缓存,即L1,L2,L3 内存总线速度(Memory-Bus Speed):一般等同于CPU的外频,指CPU与二级(L2)高速缓存和内存之间 的通信速度 地址总线宽度:决定了CPU可以访问的物理地址空间
4、服务器硬件---主板
主板mainboard,一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键 盘和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件
5、服务器硬件---内存
内存是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速度快 计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大
内存和外存的区别:
(1 内存速度快,但断电后数据丢失
(2 外存断电后数据可以保存
内存带宽: 内存带宽是指内存与北桥芯片之间的数据传输率,B byte 字节 b bit位 单通道内存控制器一般都是64-bit的,8个二进制位相当于1个字节,换算成字节是64/8=8,再乘以内存 的运行频率,如果是双通道内存就要再乘以2
计算公式: 内存带宽=内存总线频率×数据总线位数/8
范例: 单通道DDR(Double Data Rate双倍速率)内存带宽计算
DDR4-4000:4000MHz*64bit/8=32000MB/S
DDR4-3600:3600MHz*64bit/8=28800MB/S
双通道: DDR4-4000:4000MHz*64bit*2/8=64000MB/S
6、服务器硬件---硬盘
常见的磁盘接口种类:
IDE:Integrated Drive Electronics,电子集成[驱动器,早期家用电脑常用接口
SCSI:Small Computer System Interface,小型计算机系统接口,早期的服务器常用接口
SATA:Serial ATA (Advanced Technology Attachment 高技术配置),家用电脑常用的接口
SAS:Serial Attached SCSI,是目前服务器上主流的接口
光纤通道:Fiber Channe,高性能服务器上采用的接口
M.2 :固态硬盘接口,性能更强
结构分类:
机械硬盘HDD(Hard Disk Drive)
固态硬盘SSD(Solid State Drives )
并发和多线程
CPU的速度超级快,不能老是让它闲着,要充分地压榨它!这里有两个强劲的理由:
1. 人类需要多个程序“同时”运行,我们要把CPU的时间进行分片,让各个程序在CPU上轮转,造成一 种多个程序同时在运行的假象,即并发。
2. 当CPU遇到IO操作(硬盘,网络)时,不能坐在那里干等“几个月”甚至“几年”,在等待的时候,一 定要切换,去执行别的程序。 说起来简单,但是程序的切换需要保存程序执行的现场,以便以后恢复执行,于是需要一个数据结构来 表示,这就是进程了。如果一个进程只有一个“执行流”, 如果进程去等待硬盘的操作,那这个程序就会 被阻塞,无法响应用户的输入了,所以必须得有多个“执行流”,即多线程。
缓存
需要持久化的数据一定要保存到硬盘中,但是硬盘超级慢,支持不了大量的并发访问,那怎么办呢? 可以把最常访问的热点数据放到CPU的缓存中嘛, 其实CPU也是这么做的,但是CPU的L1, L2, L3级缓 存实在是太小, 根本满足不了需求。于是只好退而求其次,把热点数据放到速度稍慢的内存中,于是应 用程序的缓存就出现了。缓存虽然是解决了问题,但是也带来了更多的问题,例如:缓存数据和数据库 数据怎么保持一致性? 缓存如果崩溃了该怎么处理?数据在一台机器的内存放不下了,要分布到多个机器上,怎么搞分布式 啊,用什么算法?.....
异步
对于Tomcat这样的应用服务器,对于每个请求都要用一个线程来处理,如果现在有一万个请求进来, Tomcat会建立1万个线程来处理吗? 不会的,因为线程多了开销会很大 ,线程切换起来也很慢,所以 它只好用个线程池来复用线程。现在假设线程池中有一千个可用线程(已经非常多了),它们都被派去 访问硬盘,数据库,或者发起网络调用,这是非常慢的操作,导致这一千个线程都在等待结果的返回 (阻塞了),那剩下的九千个请求就没法处理了,对吧?所以后来人们就发明了新的处理办法,仅使用 几个线程(例如和CPU核心数量一样),让他们疯狂运行,遇到I/O操作,程序就注册一个钩子函数放 在那里,然后线程就去处理别的请求,等到I/O操作完成了,系统会给这个线程发送一个事件, 线程就 回过头来调用之前的钩子函数(也叫回调函数)来处理。 这就是异步,非阻塞的处理方式。nginx,Node.js等采用的都是类似的思想。 单线程 Redis使用单线程的方式来处理请求的,为什么用单线程就可以呢? 它为什么不像Tomcat那样使用多线 程和线程池呢?因为它面对的仅仅是内存,内存的速度在计算机的体系中仅次于CPU,比那些网络操作 不知道要快到哪里去了所以这个唯一的线程就可以快速地执行内存的读写操作,完成从许多网络过来的 缓存请求了。单线程还有个巨大的优势,没有竞争,不需要加锁!
二、操作系统
OS: Operating System 操作系统,通用目的的软件程序
主要功能:
硬件驱动
进程管理
内存管理
网络管理
安全管理
文件管理
OS分类:
服务器OS:CentOS,Ubuntu,Windows Server,AIX
桌面OS:Windows 10,Mac OS,Fedora
移动设备OS:Andriod,IOS,AliOS,HarmonyOS
接口:interface,来源于电气工程学科,指的是插座与插头的连接口,起到将电与电器连接起为的功 能。后来延伸到软件工程里指软件包向外提供的功能模块的函数接口。所以接口是用来连接两个东西、 信号转换和屏蔽细节
操作系统通过接口的方式,建立了用户与计算机硬件的沟通方式。用户通过调用操作系统的接口来使用 计算机的各种计算服务。
为操作系统一般会提供两个重要的接口,来满足用户的一些一般性的使用需求:
命令行:实际是一个叫shell的终端程序提供的功能,该程序底层的实质还是调用一些操作系统提 供的函数
窗口界面:窗口界面通过编写的窗口程序接收来自操作系统消息队列的一些鼠标、键盘动作,进而 做出一些响应 ABI Application Binary Interface,应用程序二进制接口,
ABI
描述了应用程序与OS之间的底层接口,允许编 译好的目标代码在使用兼容ABI的系统中无需改动就能运行 运行程序格式: Windows: PE(portable executable)格式, .dll(dynamic link library),.lib Linux: ELF(Executable and Linking Format)格式, .so(shared object), .a
API
Application Programming Interface,应用程序开发接口,API定义了源代码和库之间的接口,因此同 样的源代码可以在支持这个API的任何系统中编译 POSIX: Portable Operating System Interface 可移植的操作系统接口 IEEE在操作系统上定义的一系列API标准 POSIX兼容的程序可在其它POSIX操作系统编译执行
编程语言
低级语言:
计算机能理解的语言,二进制
机器语言:0和1
汇编语言:和机器语言一一对应,与硬件相关的特有代码、驱动程序开发
中级语言:C 语言,系统级应用、驱动程序
高级语言: java,python,go,php,Objective-C,C#,易语言(中文),应用级程序开发,人类 语言实现
1991年的10月5日Linus Benedict Torvalds在comp.os.minix 新闻组上发布消息,正式向外宣布他自行 编写的完全自由免费的内核诞生(Freeminix-like kernel sources for 386-AT) — FREAX,含义是怪诞 的、怪物、异想天开类Unix的内核,在GPL下发布
官网:www.kernel.org
目前主流的centos、ubutu红帽内核都是基于此。
Linux操作系统:
完整的类UNIX操作系统 Linux内核+ GNU工具=Linux/GNU
如:CentOS,Ubuntu,Android
Linux的内核版本组成 主版本号 次版本号 末版本号 打包版本号 厂商版本
Linux 发行版
slackware:SUSE Linux Enterprise Server (SLES) , OpenSuse桌面
debian: ubuntu,deepin(深度),mint
redhat: RHEL: RedHat Enterprise Linux, 每18个月发行一个新版本
CentOS: Community Enterprise Operating System 兼容RHEL的格式
中标麒麟:中标软件
Fedora:每6个月发行一个新版本
Alpine: 一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,只有 5M左右大小
ArchLinux:轻量简洁,遵循K.I.S.S.原则( keep it simple and stupid ),Manjaro Gentoo:极致性能,不提供传统意义的安装程序,下载源代码在本机上编译安装软件 LFS:Linux From scratch 自制Linux,只是一个说明书
Android:kernel+busybox(工具集)+java虚拟机 Linux
分支参考网站:http://futurist.se/gldt/
Linux发行版排名: https://distrowatch.com/dwres.php?resource=popularity
开源 Open Source 软件和源代码提供给所有人,自由分发软件和源代码,free 自由,不是免费的意思 能够修改和创建衍生作品
软件分类:
商业:收费,源码也不公开
共享:免费使用,但源码不公开
自由:源代码公开 开源协议 世界上的开源许可证,大概有上百种
原文:https://www.cnblogs.com/jywx/p/14776417.html