深入理解计算机系统

alimayun alimayun     2022-12-20     715

关键词:

 

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

一、系统的硬件组成

技术分享图片

 

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

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

深入理解计算机系统——第六章

 存储器磁盘磁盘可以存储大量的数据,但是速度慢磁盘由盘片组成,每个盘片有两面,上面覆盖着磁性记录材料,盘片中央有一个可以旋转的主轴   查看详情

深入理解计算机系统系列计算机系统漫游(代码片段)

操作系统原理是计算机行业基本功,想要成为一名计算机领域的专业人士,必不可少要打好基础。最近打算重点读一读《深入理解计算机系统》这本书,回顾和提升自己对计算机和操作系统的理解。这是第一篇:【计算机系统漫... 查看详情

深入理解计算机系统

写好hello.cpp预处理(把include里的东西加到代码里)之后变成hello.i后编译,编译成汇编语言,然后汇编,汇编成机器指令,链接动态库什么的就完成了。hello执行的过程:       查看详情

深入理解计算机系统(代码片段)

深入理解计算机系统卡内基·梅隆一门棵。原书第3版资料.第三版源码.原书第2版资料.计算机系统漫游源文件到目标文件的翻译过程可分为四个阶段,这四个阶段的程序被称为预处理器,编译器,汇编器和链接器,它们一起构成... 查看详情

深入理解计算机系统

                   图1图1中左侧是proc.c程序。右侧是proc.s汇编程序。 proc.s中,5--15行是proc()的汇编代码                                  图2图2中... 查看详情

读书笔记《深入理解计算机系统》(第三版)概述

  《深入理解计算机系统》第三版刚出来不到一周,便买下了这本书;之所以阅读本书,一方面源于网友推荐以及豆瓣不错的评分、评价;另一方面是针对本人非科班出身,计算机系统相关的知识相对比较薄弱,很多情况下此... 查看详情

深入理解计算机系统

 对于程序员来说,计算机基础也是非常重要的一个部分,对于了解程序的执行过程、优化都是非常有帮助的。一、系统的硬件组成 1、总线贯穿整个系统的是一组电子管道,简称总线,总线携带信息字节并且负责在各个... 查看详情

深入理解计算机系统第二章

...tps://www.bilibili.com/video/BV1iW411d7hd?p=2学习书本:《深入理解计算机系统》第3版。信息存储:8位=1字节;内存所有可能地址集合称为“虚拟地址空间”;每个程序对象可以视为一个“字节快”,程序本身是一个字节序列... 查看详情

《深入理解计算机系统》csapp入坑推荐

1、CSAPP是什么CSAPP是什么?CSAPP是一本书,全称ComputerSystemsAProgrammer’sperspective,国内通常的书名翻译是《深入理解计算机系统》电子在线版本可以在github上找到:https://hansimov.gitbook.io/csapp/https://github.com/Hansimov 查看详情

《深入理解计算机系统》第一章计算机系统漫游

《深入理解计算机系统》第一章计算机系统漫游1、本章从一个程序的生命周期讲起,分别对程序的创建、编译、执行、输出、终止进行了详细的解读,从中引出了关于信息上下文、编译系统、高速缓存、操作系统等重要概念。... 查看详情

深入理解计算机系统第一章

第一章计算机系统漫游在unix系统中从源文件到目标文件的转化室由编译器驱动程序完成的linux>gcc-ohellohello.c编译得过程预处理器,编译器,汇编器,链接器           查看详情

[阅读笔记]深入理解计算机系统

5、优化程序性能1.存储器别名(memoryaliasing),妨碍优化。__restrict关键字2.消除不必要的存储器引用,使用临时变量。6、存储器层次结构 1.寄存器0周期,cache1-10,主存50-100. 冷不命中coldmiss和冲突不命中conflictmiss。 2.cache结... 查看详情

深入理解计算机系统学习(位扩展)

最近在复习计算机基础知识,断断续续的记录在这里吧。深入理解计算机系统是本好书,对底层的实现原理从程序员的角度进行的细致的讲解,不愧为经典,深得大家的喜爱。其中CPU对于有符号,无符号转化以及位的扩展引起的... 查看详情

2017-2018-120179215《深入理解计算机操作系统》第一章

《深入理解计算机操作系统》第一章?这一章主要是让我们对计算机系统有个整体的了解,系统介于软件与硬件之间,通过软件与硬件的相互交互来运行应用程序.而每个环节又分为各种层次,从而更好的提供上层抽象。理解一个系... 查看详情

深入理解计算机操作系统(笔记)(代码片段)

深入理解计算机系统1.实时系统概念2.编译连接3.AT&T汇编指令学习(GCC)4.内存对齐5.Big-Endian大端模式和Little-Endian小端模式6.过程调用1.实时系统概念前后台系统后台是各种面向硬件的程序,如中断,定时器,gpio等。前... 查看详情

《深入理解计算机系统》读书笔记

 第一部分概述综述本书从几个生动的计算机程序实例引入,带我们走进了一个庞大的计算机世界。计算机系统的诞生经历了无数个创新性时刻,每一个看似显然的成果都是来之不易的。比如,让计算机用一种我们能够理解的... 查看详情

2017-2018-120179215《深入理解计算机系统》第二章

《深入理解计算机系统》第二章学习笔记?这章主要通过四个部分进行介绍:信息存储、整数表示、整数运算以及浮点数。重点描述了无符号数和数的补码的表示特性。我们要知道对计算机的算术运算有深刻的理解是写出可靠程... 查看详情

《深入理解计算机系统》速读提问

一、计算机系统漫游本章通过运行一个hello程序为例,概述了计算机操作系统的运行过程,讲述了组成计算机系统的硬件和系统软件,讲到了处理器处理一个程序的过程。这一章中出现了一个我首次听说到的词汇Amdahl定律,该定... 查看详情