《程序是怎样跑起来的》简介

news2025/2/2 22:00:08

目录

  • 1. 前言
  • 2. 主要内容
  • 3. 总结

1. 前言

闲暇之余,读了一遍《程序是怎样跑起来的》这本书。颇感欣喜。借此机会分享一下。
在这里插入图片描述
本书可以这样定位:

  • 对学生:作为专业课之前的开胃菜,非常合适,尤其是作为《计算机组成原理》和《操作系统》这两门课的导读材料。
  • 对计算机相关的爱好者从业者:可以从书中查漏补缺,书中涉及到较多的底层知识。如果是非计算机专业的同学,如果学过《微机原理》或者《单片机原理与接口技术》,可以对比着学习,效果更佳。

建议看本书之前,有一定的汇编语言C语言基础,要是再有一点点数字电子知识,会更好。

总体来说,这本书通俗易懂,即使没有任何计算机基础,看完也会有收获满满,下面来介绍这本书的主要内容。

2. 主要内容

该书的主要内容如下图所示(温馨提示:如果看不清,可将整个网页放大进行浏览):
在这里插入图片描述
既然谈到了程序和运行环境,就不可避免地要同时涉及到软件和硬件。所以本书涉及的面相对来说比较广。

本书从最基本的CPU工作过程入手,再到二进制,由浅入深,娓娓道来。CPU和寄存器有什么样的关系?寄存器有哪些种类,其作用分别是什么?

二进制如何产生?如何表示数据?为什么在小数运算的时候会出现问题?都进行了详细的分析。

关于内存,书中提及了内存芯片的常见引脚配置,芯片中数据的基本读写过程,然后介绍了常见的数据结构

内存介绍完,就到了“外存”,也就是所谓的磁盘,众所周知,如果CPU直接读写磁盘的数据,效率会非常低,这个时候,内存就扮演了十分重要的角色,本书对整个运行过程都进行了较为详细的阐述。

数据存储讲完了,就到了数据压缩,数据压缩在我们学习和工作中是非常常见,书中介绍了最为常见的压缩方法,并对其利弊进行了分析,进而引出了哈夫曼编码。

接下来就到了操作系统相关的内容,这部分内容非常关键,而又承上启下。操作系统的作用是什么?为什么应用软件在不同的操作系统下无法正常运行?虚拟机是什么?为什么要引入虚拟机?什么是JAVA虚拟机?BIOS又是什么?有着什么样的重要作用?本书都进行了详细的阐述和分析。

后面是程序的执行过程,从我们编写的源文件,从读入内存,都经历了什么?动态链接库DLL)扮演者什么样的角色(有兴趣也可以再了解一下静态链接库(LIB))?库文件又是如何与我们的代码进行合并的?

接下来就是操作系统和应用的关系,应用是运行在操作系统上的,那么应用是如何与操作系统进行交互的呢?这个时候系统调用就发挥了很重要的作用。

通过C语言并不能对程序的执行过程有非常深入和透彻的理解。要想了解更底层的运行过程,必须分析其对应的汇编语言,所以接下来又对汇编语言进行了介绍。

接下来,一个非常有意思的问题,应用如何与硬件进行交互呢?比方说,键盘,鼠标等。这里就引出了一个非常有意思的概念:系统调用。如果想深入理解这个思想,可以自己学习QTMFC等开发框架,在实际的项目中慢慢体会。并且书中还介绍了DMA,可以在不经过CPU干涉的情况下,内存与外设进行数据传输。
在这里插入图片描述
最后一章挺有意思,让计算机进行“思考”,颇有人工智能的意味,其实就是让计算机模拟人脑的某些特点,从而处理实际问题。书中用猜拳的例子,对此进行了讲解。包括随机数的生成,什么是伪随机数等等,看看热闹就好。当然,这不是现在的主流人工智能的实现方法。

3. 总结

总之,这是一本兼具趣味性科学性的读物。该书对计算机的结构和计算机语言的运行过程进行了较为深刻的阐述,有助于我们深入了解计算机软件和硬件的相互关系,有助于我们深入了解计算机的硬件构成及其作用和相互关系,有助于我们了解计算机程序的运行过程。

看到很多社区,贴吧对这种通俗读物口诛笔伐,觉得会让读者对相关知识的学习一直停留在表面,无法更加深入,但我觉得,不妨在啃厚厚的经典书之前读读这些书,既增加了学习的兴趣和信心,又积累了一定的计算机知识,何乐而不为呢?

如果快的话,大概10来天就可以读完。

倘若有时间,还会继续读这系列其余的图书,届时再分享,敬请期待。。。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/762385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试真题 Java 实现【最少数量线段覆盖】【2023Q1 200分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路四、Java算法源码五、效果展示1、输入2、输出3、说明4、复杂一点5、理性分析一下 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》。 刷的越多&#xff…

FLStudio21中文版水果软件最新版下载安装图文教程

FL Studio21简称FL,全称:Fruity Loops Studio,因此国人习惯叫它"水果"。目前版本是FL Studio20,它让你的计算机就像是全功能的录音室,大混音盘,非常先进的制作工具,让你的音乐突破想象…

数据结构--图定义与基本术语

数据结构–图定义与基本术语 图的定义 图G由 顶点集 V \color{red}顶点集V 顶点集V和 边集 E \color{red}边集E 边集E组成,记为G (V, E),其中V(G)表示图G中顶点的有限非空集; E(G)表示图G中顶点之间的关系(边)集合。…

现代化 Android 开发:Jetpack Compose 最佳实践

作者:古哥E下 如果一直关注 Compose 的发展的话,可以明显感受到 2022 年和 2023 年的 Compose 使用讨论的声音已经完全不一样了, 2022 年还多是观望,2023 年就有很多团队开始采纳 Compose 来进行开发了。不过也有很多同学接触了下 Compose&am…

22.JavaWeb-Minio存储服务器

MinIO是一个开源的对象存储服务器,它兼容Amazon S3 API。它提供了一个简单而强大的存储解决方案,可以用于存储和检索任意大小的文件对象,如图片、视频、文档等。 1.安装与配置Minio https://dl.min.io/server/minio/release/windows-amd64/…

Leetcode 1352: 最后K个数的乘积

题目描述 链接&#xff1a;https://leetcode.cn/problems/product-of-the-last-k-numbers/ 结果 耗时&#xff1a;12min-13min 思路 暴力法&#xff0c;直接从后面读取数组计算。 Java代码 import java.util.ArrayList;class ProductOfNumbers {ArrayList<Integer…

4个简单易上手的免费抠图工具,让你轻松在线抠图!

本文介绍了四个简单易上手的免费抠图工具&#xff0c;它们分别是记灵在线工具、Remove、FocoClipping和免费抠图工具。无论你是初学者还是有经验的设计师&#xff0c;这些工具都能帮助你快速、高效地进行在线抠图操作。 在现代设计和摄影中&#xff0c;抠图是一项重要且常见的…

新建一个Vue项目后,如何在vue.config,js中配置后端访问地址

在 Vue 2 项目中&#xff0c;可以通过配置 vue.config.js 文件来设置后端访问地址。下面是一个简单的示例&#xff1a; 在项目根目录下新建 vue.config.js 文件&#xff08;如果已存在&#xff0c;则直接编辑该文件&#xff09;。在 vue.config.js 文件中添加以下内容&#xf…

ClickHouse原理剖析

1.ClickHouse简介 ClickHouse是一款开源的面向联机分析处理的列式数据库&#xff0c;其独立于Hadoop大数据体系&#xff0c;最核心的特点是极致压缩率和极速查询性能。同时&#xff0c;ClickHouse支持SQL查询&#xff0c;且查询性能好&#xff0c;特别是基于大宽表的聚合分析查…

yolo系列学习

文章目录 理论基础YOLO-V1YOLO-V2YOLOV3 教学视频 理论基础 不同阶段算法优缺点分析 two-stage (两阶段) &#xff1a;Faster-rcnn、Mask-Rcnn &#xff0c;多了预选框操作RPNOne-stage (单阶段)&#xff1a;YOLO 指标分析 精度 Precision 查准率&#xff0c;预测为正且实际…

亚马逊、lazada店铺销售策略揭秘:如何利用测评自养号突破瓶颈?

在跨境平台上&#xff0c;想要取得突破性的销售成绩并不容易。随着竞争的日益激烈&#xff0c;商家们需要采取有效的销售策略来突破销售瓶颈。本文将揭示三种结合测评自养号的销售策略&#xff0c;帮助卖家在跨境平台上取得更好的销售业绩。 一、建立完善的自养号评价体系 自…

git rebase (合并代码和整理提交记录)图文详解

git rebase详解&#xff0c;附带操作过程命令&#xff0c;运行图片 合并代码初始代码分支结构merge合并代码rebase合并代码 整理提交记录背景-整理提交记录步骤-图文详解 建议在看这篇文章之前一定要看完&#xff1a;git reset 命令详解 git revert命令详解。 看完上面的文章后…

基于scrcpy的Android群控项目重构,获取Android屏幕元素信息并编写自动化事件

系列文章目录 基于scrcpy的远程调试方案 基于scrcpy的Android群控项目重构 基于scrcpy的Android群控项目重构 进阶版 基于scrcpy的Android群控项目重构&#xff0c;获取Android屏幕元素信息并编写自动化事件&#xff08;视频&#xff09; 基于scrcpy的Android群控项目重构…

struct详解

导入 我们有没有这种情况&#xff0c;总想有一个数组&#xff0c;其中可以有int,double,char。。。各种类型&#xff0c;但是对于内置的数据类型显然是做不到的&#xff0c;于是就有了结构体类型 结构体是将多种不同的结构打包在一起&#xff0c;形成全新的类型进行使用 stru…

Spring的两种事务管理机制,面试这样答当场入职!

前言&#xff1a; 博主在最近的几次面试中&#xff0c;大中小厂都问到了Spring的事务相关问题&#xff0c;这块知识确实是面试中的重点内容&#xff0c;因此结合所看的书籍&#xff0c;在这篇文章中总结下。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读&#xff0c;感…

刻录到光盘功能看不见怎么办

刻录到光盘功能看不见怎么办 1、 打开组策略 同时按键WINR&#xff0c;打开运行对话框&#xff0c;输入gpedit.msc&#xff0c;打开组策略&#xff08;如果发现输入gpedit.msc后无法打开组策略&#xff0c;请参照文件后面的方法进行操作&#xff09; 2 、查找“删除CD刻录…

Java开发基础系列(五):对象方法参数

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; Java开发基础系列(五)&#xff1a;对象方法参数 ⏱️ 创作时间&#x…

Pycharm 搭建 Django 项目,看完这一篇就够了

1. 安装需求 在使用 python 框架 Django 需要注意下面事项 Pycharm 版本是专业版而不是社区版本Pycharm 配置好了 python 解释器 &#xff08;一般我们现在用的都是python3&#xff09;我自己使用的是 Pycharm 版本是2020.1.2 2. 准备工作 2.1 新建项目 首先我们打开 Pycharm …

opencv -10 基础运算之 图像加权和(图像融合图像修复视频合成)

什么是图像加权和&#xff1f; 所谓图像加权和&#xff0c;就是在计算两幅图像的像素值之和时&#xff0c;将每幅图像的权重考虑进来&#xff0c;可以用公式表示为&#xff1a; dst saturate(src1 &#x1d6fc; src2 &#x1d6fd; &#x1d6fe;)式中&#xff0c;satu…

无缝集成:基于FastAPI实现AI模型服务与nacos的完美融合

1 场景介绍 当我们使用python构建AI模型算法的过程中&#xff0c;经常会遇到如下的问题&#xff1a; 这个模型如何提供给其他微服务调用&#xff08;比如JAVA构建的微服务&#xff09;&#xff1f;这个模型如何做到多个服务节点的负载均衡&#xff1f;这个模型如何做到服务的…