深入理解计算机系统(一)

对于程序员来说,计算机基础也是非常重要的一个部分,对于了解程序的执行过程、优化都是非常有帮助的。

一、系统的硬件组成

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、虚拟内存

在每个运行的进程中,都会存在这样一种假象,就是进程独占内存。每个进程看到的内存都是一致的,称为虚拟地址空间。

猜你喜欢

转载自www.cnblogs.com/alimayun/p/9434153.html