深入理解计算机系统
Posted alimayun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解计算机系统相关的知识,希望对你有一定的参考价值。
对于程序员来说,计算机基础也是非常重要的一个部分,对于了解程序的执行过程、优化都是非常有帮助的。
一、系统的硬件组成
1、总线
贯穿整个系统的是一组电子管道,简称总线,总线携带信息字节并且负责在各个组件中传递。总线被设计成传递定长的字节块,例如32位系统(4个字节)以及64位系统(8个字节)。
2、I/O设备
通常所使用的键盘、鼠标、磁盘以及显示器等等都是I/O设备。每一个I/O设备都通过控制器或适配器与I/O总线相连接。
3、主存
主存是一个临时存放数据的物质,用来存放指令以及程序运行时的数据。是由一组动态随机存取存储器芯片组成,从逻辑上来说,主存是一个线性的字节数组,每个字节都有其对应的唯一的地址。
4、处理器
处理器是计算机系统中的计算处理核心,解释存放在主存中的指令,并且处理器中包含程序计数器,计数器中存放指向主存中的指令地址,处理器获取指令并且执行。
二、一个hello world程序是如何运行的?
三、高速缓存
cpu从寄存器中读取信息的速度比从主存中读取快100倍,读取磁盘中的信息速度就更慢了,因此为了解决不同组件读取速度的差异,引入了高速缓存。
四、操作系统
软件跟硬件之间的关系由操作系统连接:
操作系统主要提供两个主要的功能:
a、防止程序滥用硬件资源
b、向程序提供简单、统一的机制来控制硬件
为了实现这两个功能,操作系统抽象了几个概念:
1、进程
进程是对系统中正在运行的程序的一种抽象,每个进程都好像是占有整个计算机系统的资源,不同的进程独立运行。对于单核cpu(多核cpu则多个进程并行运行)来说,操作系统通过上下文的切换(由操作系统内核管理)达到并发的效果。
所谓并发就是看起来是多个进程同时运行,但是在某个具体的时间点,只有一个进程运行。这么设计的主要原因就是提高运行速度,最大限度的榨取cpu的性能,原因如下:
现在系统中存在两个进程A、B,A进程先运行,然后执行I/O操作,例如入库或是写入到磁盘等等,cpu的运行速度可能比磁盘速度快100万倍,如果这时候cpu阻塞在这,大大浪费性能;因此通过上下文切换的方式,让B进程执行,大大提高性能。
2、线程
在现代系统中,线程是程序运行的最小单位,主要是由于线程更轻量级,线程之间切换的成本小于进程之间的切换,而且多线程之间更容易共享数据。
3、虚拟内存
在每个运行的进程中,都会存在这样一种假象,就是进程独占内存。每个进程看到的内存都是一致的,称为虚拟地址空间。
以上是关于深入理解计算机系统的主要内容,如果未能解决你的问题,请参考以下文章