浅谈计算机系统架构

浏览: 236 发布日期: 2017-12-30 分类: c

浅谈计算机系统架构

计算机系统架构主要是由硬件系统和软件系统构成的

计算机硬件系统

现代计算机是由运算器、控制器、存储器、输入设备、输出设备五大部分组成,它们各司其职,完成了数据的计算、存储、传输任务。下面是它们各个组件的功能介绍:

CPU:也被称为中央处理器,由运算器和控制器组成,其主要作用是用来计算数据(从内存中获取指令并执行后将结果返回给内存或者写入到磁盘)和控制其他设备协同工作。目前主流的CPU架构有基于Intel的复杂指令集的X86架构(32位和64位)和手机(ARM),服务器(SPARC)的精简指令集。CPU通过总线(数据、地址、控制总线)和外部进行交互,数据的计算是在CPU内部的寄存器完成的。

内存:采用编址存储,其主要作用是用来作为程序的工作区,程序运行时会被加载到内存,断电后数据会丢失。32位操作系统只能最多使用4G内存(编址的数量2的32次方,已经逐渐被淘汰),64位CPU通常可以使用4G以上的内存(编址可达4G*4G,但是受限于其他组件),单台服务器的内存根据不同的用途通常是16-128G。

硬盘:其主要作用是永久性存储海量(PB)的数据,分为机械式硬盘(HDD)(7500rpm,15000rpm)和固态硬盘(SSD)两大类,门户网站通常是两种硬盘混合使用。

IO设备:其主要作用是用来数据的输入输出,常见的输入设备包括鼠标键盘,常见的输出设备包含声卡,显卡,打印机等等。还有个典型输入输出设备:网卡主要是负责数据在网络上的传输。

在程序故障诊断或者做程序性能优化是时除了考虑程序自身之外还需要考虑CPU,内存,磁盘和网卡的"健康状况“。

计算机硬件的IO各层次性能汇总

组件名称 延时、带宽
CPU
Cache L1,L2,L3 0.5-15ns、20-60GB/S
内存 30-100ns、2-12GB/S
SSD硬盘 10us-1ms、50MB-2GB/S
普通硬盘 5-20ms、50-200MB/S
网卡-网卡 100us-1ms、10MB-10GB/S

从该表格中可以看出CPU延时(最低)和带宽(最高),而普通硬盘是性能最差的,根据木桶效应,在性能优化时应该优先优化磁盘。

推荐给开发者硬件配置

Windows/Linux(Ubuntu):Razer雷蛇 灵刃专业版

推荐在Windows开发机上先安装Windows10 x64企业版,然后通过安装的VMWareWorkStation12虚拟机上安装Linux/CentOS7.3、Linux/OpenSUSE42.2和Linux/Ubuntu16.04三个常见的Linux发行版。

MacOS:MacBookPro 15


配置和价格一览

MacBookPro则是安装了最新的MacOS10.13,由于极少数必备软件(例如RedisDesktopManager,WPS),同时通过Mac平台上的虚拟机Parallels Desktop 13 安装了Windows10以及一些Mac平台上缺失的软件。

开发者推荐最低硬件配置:i7 6700 CPU+ 512G固态硬盘+16G内存+GTX1070

计算机软件系统

软件的出现实现了人和计算机之间更好的交互,软件是由一系列按照特定顺序组织的指令和数据组成。
计算机软件分为系统软件和应用软件两大类,如下列表中包含常见的软件及其运行平台。从交互方式上看经历了字符(命令)交互,图形界面交互和语音手势、重力感应交互的发展过程。

  • 系统软件
人机交互方式 系统名称 平台
命令行界面 Unix(Solaris,HP Unix,AIX),Linux(CentOS) 服务器
图形界面 Windows10,MacOS10.13,Linux(Ubuntu17.10) 桌面
自然交互界面(语音、手势) Android8.0,IOS11 嵌入式(手机、汽车、电视)
  • 应用软件
类型 名称 平台
通讯 微信、QQ、钉钉 Windows,MacOS,Android,IOS
购物 京东、天猫 Android,IOS
办公 WPS,Office Windows,Mac

目前在典型的中小型互联网公司的应用软件的后台业务逻辑通常都是采用Java或者Python,C/C++/Go实现。前台展示通常包含PC,H5,Android,IOS和微信公众号、微信小程序。

系统软件主要实现和底层硬件交互,给应用软件提供运行平台。操作系统、编译器等都是属于系统软件,目前主流的桌面操作系统是Windows7/10,Linux(Ubuntu17),MacOS10.13,主流的移动端操作系统是Android8,IOS11,主流的服务端操作系统是Linux(CentOS7.4,Ubuntu17.10)。操作系统运行在内核模式下。

应用软件主要是运行在PC或者是移动终端的操作系统之上,用于解决工作和生活的各种需求,例如购物(淘宝、天猫、京东),聊天(微信、QQ),听音乐(QQ音乐、网易云音乐),看电影(爱奇艺、暴风影音),收发邮件(Foxmail)等等。 应用软件运行在用户模式下,应用程序只能访问自己的内存。

MacOS日常开发中常用的软件列表

软件名称 功能描述
Chrome Web开发必备
XCode MacOS/IOS/WatchOS开发必备
SecureCRT Linux SSH Client
PostMan Web API 测试
AndroidStudio Android APP开发必备
IntelliJ IDEA Java开发必备
Pycharm Python开发必备
WebStorm 前端开发必备
PHPStorm PHP开发必备
GoLand Go程序开发必备
DataGrip Oracle/MySQL客户端
EdrawMax 画图
StartUML 建模
PDF Expert PDF书籍查看
微信、钉钉、QQ 即时通讯必备
有道云笔记 笔记
简书、GitBook、Mweb 写作
TeamViewer 远程连接
ParallelsDesktop 虚拟机(Mac运行Windows)
CleanMyMac 系统管理
WireShark、Charles 网络抓包
FreeVPN 免费翻墙
Axure RP8 原型
返回顶部