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

news2024/9/30 7:15:10

1.1信息就是位+上下文

        只由ASCLL字符构成的文件称为文本文件,所有其他文件都称为二进制文件。

        系统中的所有的信息都由一串比特表示。区分不同数据对象的唯一方法是读到这些数据对象时的上下文。


1.2程序被其他程序翻译成不同的格式

预编译,编译,汇编,链接。

hello.c源程序---预处理--->

hello.i修改后的源程序---编译器--->

hello.s汇编程序---汇编器---->

hello.o可重定位目标程序(二进制)---链接器--->

hello可执行程序(二进制)。

详细过程:

【Linux】编译的四个步骤_编译linux_曦樂~的博客-CSDN博客


1.3了解编译系统如何工作是大有益处的

        了解编译系统的好处:1.优化程序性能2.理解链接时出现的错误3.避免安全漏洞。


1.4处理器读并解释储存在内存中的指令

        shell命令解释器:输出提示符,等待输入命令行并执行。若命令行第一个单词不是内置的shell命令,shell会假设它是一个可执行文件的名字,加载并执行这个文件

1.4.1系统的硬件组成

 1.总线

        贯穿整个系统,携带信息字节并传递。传递定长,字中的字节数为字长。字长:4个字节(32位),8个字节(64位)。

2.I/O设备

        系统与外部世界联系的通道。它们通过控制器或适配器与I/O总线相连。

如:输入设备:键盘、鼠标,输出设备:显示器,存储设备:磁盘。

3.主存

        临时存储设备,存放执行的程序和程序处理的数据。由一组动态随机存取存储器(DRAM)芯片组成。是一个线性的字节数组,每个字节都有其唯一的地址。

4.处理器

        中央处理单元(CPU)的简称,用于执行(解释)主存中的指令。核心是一个一个字大小的寄存器,PC(程序计数器), PC指向主存中该执行的指令,执行完后PC+1指向下一条该执行的指令。

1.4.2运行hello程序

        shell等待输入命令,./hello后将字符读入寄存器->内存;

        输入完命令后shell执行指令加载hello文件,文件中的代码和数据:磁盘->主存;

        处理器执行main:"hello,world\n"主存->复制到寄存器文件->复制到显示设备;


1.5高速缓存至关重要

        高速缓存存储器(高速缓存,cache),存放处理器近期可能会需要的信息。解决处理器快而磁盘->主存->处理器内容多复制速度慢的问题,提升程序的性能。


 1.6存储设备形成层次结构

        存储设备容量越大,访问速度越慢,每字节的造价越便宜。层次结构使上一层的存储器做低一层存储器的高速缓存,分层提高程序的性能


 1.7操作系统管理硬件

        操作系统:相当于应用程序和硬件之间插入的一层软件。 

两个基本功能:

·1.防止硬件被失控的应用程序滥用

·2.向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备。

提供三个基本的抽象:

 1.7.1进程

进程:操作系统对一个正在运行的程序的一种抽象。

        并行:多个进程同时运行,每个进程好像独占使用硬件。

        并发:进程之间指令交错进行,通过处理器在进程间切换来实现(上下文切换)。

                上下文:进程运行所需的所有状态信息

内核:管理从一个进程到另一个进程的转换。内核时操作系统代码常驻主存的部分,是管理全部进程所用代码和数据结构的集合。

程序需要操作系统的操作->系统调用指令->控制权给内核->内核执行操作->返回应用程序。

1.7.2线程

        线程:进程的执行单元。多线程比多进程更容易共享数据,更快更高效。

1.7.3虚拟内存

        虚拟地址空间:每个进程看到的内存都是一致的。

 【Linux】复制进程、进程地址空间以及写实拷贝_曦樂~的博客-CSDN博客

 1.7.4文件

        文件就是字节序列,所有设备都可以看成文件。

        

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

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

相关文章

【C++】类的访问权限

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 !时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、示例代码 3、总结 1、缘起 在 C 中,类在设计时,可以把 属性 和 行为 放在不同的权限下加以…

智警杯赛前学习1.1---excel基本操作

修改默认设置 步骤一:打开“Excel选项”窗口,打开“文件”菜单,选择“选项”标签 步骤二:在“Excel选项”窗口中,选择“常规与保存”标签,在“常规与保存”标签中,可以修改录入数据时的默认字体…

【群智能算法改进】一种改进的沙丘猫群优化算法 改进沙丘猫群算法 改进SCSO[1]【Matlab代码#34】

文章目录 【获取资源请见文章第5节:资源获取】1. 原始沙丘猫群优化算法2. 改进沙丘猫群算法2.1 Logistic混沌映射种群初始化2.2 透镜成像折射反向学习策略2.3 动态因子2.4 黄金正弦策略 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xf…

国际标准 ISO 11898 解读

从 1993 第一个版 CAN 国际标准(ISO 11898:1993 和 ISO 11519-2)发布至今,ISO 11898 逐渐被分割整合成了相互独立的 6 个部分。分别以 Part 1 ~ Part 6 来标识。在旧版本(2003年之前)中 ISO 11898 是通信速度为 5kbps…

二维笛卡尔坐标系下的角的概念

文章目录 参考环境笛卡尔坐标系二维笛卡尔坐标系三维笛卡尔坐标系 任意角角的静态定义角的动态定义二维笛卡尔坐标系下角的概念方向正角、负角及零角 象限角象限象限角 终边相同角圆心角终边相同角 参考 项目描述搜索引擎Google 、Bing百度百科首页韩庆波正负角佟大大还是ETT【…

前端学习---Vue(6)路由

一、前端路由的概念和原理 Hash地址与组件的对应关系。 Hash:url中#之后的都是Hash地址 location.hash 1.1 前端路由的工作方式 ① 用户点击了页面上的路由链接 ② 导致了 URL 地址栏中的 Hash 值发生了变化 ③ 前端路由监听了到 Hash 地址的变化 ④ 前端路由把当前 Hash…

doris分区、join

动态分区和临时分区 动态分区 旨在对表级别的分区实现生命周期管理(TTL),减少用户的使用负担。 目前实现了动态添加分区及动态删除分区的功能。只支持 Range 分区。原理 在某些使用场景下,用户会将表按照天进行分区划分,每天定时执行例行任…

tidyverse中filter行筛选时缺失值存在的一个坑

大家好,我是邓飞,好久没有更新博客了,是因为好久没有进步了。 之前我认为鲁迅说的对,他在《野草》中写道:“当我沉默着的时候,我觉得充实;我将开口,同时感到空虚”。现在确切的情况…

msvcr90.dll丢失的解决方法

在使用计算机的过程中,我们时常会遇到一些问题,比如应用程序无法正常启动,提示msvcr90.dll文件丢失,这个问题困扰了许多计算机用户。那么,怎么才能解决这个问题呢? 首先,让我们先了解一下msvcr…

c语言编程练习题:7-65 字符串替换

#include <stdio.h>int main() {char c;while (scanf("%c", &c) 1 && c ! \n) {if (c > A && c < Z) {c Z - (c - A);}printf("%c", c);}return 0; }代码来自&#xff1a;https://yunjinqi.top/article/190

Spring:spring-web中DeferredResult执行过程分析

对于HTTP请求的处理&#xff0c;有时处理请求的时间较长&#xff0c;可能会采用异步处理方式来处理。一般常用的异步处理方式是采用DeferredResult&#xff0c;本文会简单分析一下spring-web的整个处理过程。 首先&#xff0c;提供一个简单的DeferredResult例子&#xff1a; R…

C++map和set

目录&#xff1a; 什么是关联式容器&#xff1f;键值对树形结构的关联式容器 set的概念multiset的使用pair和make_pair map的概念用“[]”实现统计水果的次数 multimap的使用 什么是关联式容器&#xff1f; 在初阶阶段&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比…

Centos7 Failed to start login service 问题

最近发现Centos7有个问题&#xff0c;用普通用户登录的时候&#xff0c;打开命令窗口无法进行操作一直卡在那里&#xff0c;但切换到root用户后命令输入又正常。因为我需要从 window 上的 SecureCRT 去连接 Centos7&#xff0c;每次都需要用户登录&#xff0c;然后把防火墙关闭…

TLD7002学习笔记(一)-芯片介绍

文章目录 1. 前言2. TLD7002-16ES简介3. TLD7002-16ES基本功能介绍3.1 引脚和功能框图3.2 状态机3.2.1 正常工作时状态机3.2.2 OTP烧录或者仿真时的状态机 3.3 GPIN0和GPIN1引脚3.4 器件地址3.5 电流配置3.6 PWM配置3.7 并行输出&热降额&热过载保护 TLD7002-16ES诊断功…

高完整性系统:INTRODUCING ADA

目录 1. ADA的历史 2. ADA的特点 2.1 Strong, Static Typing 强语言、强静态类型语言 2.1.1 ADA is Strong, Static Typing 2.1.2 C is Weak, Static Typing 2.2 Module System 2.3 Portable 2.3.1 ADA 2.3.2 C 2.3.3 Cost of Runtime Checking 2.4 Readability …

Java jvm调优

系列文章目录 文章目录 系列文章目录前言JVM 基础面试题11. JDK&#xff0c;JRE以及JVM的关系2. 我们的编译器到底干了什么事&#xff1f;3. 类加载机制是什么&#xff1f;3.1 装载(Load)3.2 链接(Link)验证(Verify)准备(Prepare)解析(Resolve) 3.3 初始化(Initialize) 4. 类加…

chatgpt赋能python:Python三次幂与其应用

Python三次幂与其应用 Python是一种高级编程语言&#xff0c;因其简单易用的语法和广泛应用而备受欢迎。在该语言中&#xff0c;三次幂是其中一个常用操作之一。本文将介绍Python三次幂的概念及其应用&#xff0c;为您带来有价值的参考。 什么是Python三次幂&#xff1f; Py…

KubeSphere 社区双周报 | 杭州 Meetup 报名中 | 2023.05.12-05.25

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2023.05.12-2023.…

Linux - Java 8 入门安装与重装教程集锦

一、入门初始安装 1. 具体安装教程 1. linux 系统中如何安装java环境&#xff08;通过tar.gz文件&#xff09; 安装包下载链接 Java 的 tar.gz 安装包下载链接传送门 Linux 系统的 Java 环境变量配置教程 1. linux查看java版本&#xff0c;以及配置java home 2. Linux环…

stackqueue

这篇主要讲栈(stack)和队列(queue)&#xff0c;实际要学习的数据结构有三个&#xff1a;stack、queue、priority_queue 这些数据结构已经不属于容器了&#xff0c;而是容器适配器。 list的第二个参数是空间配置器&#xff0c;支持申请空间&#xff1b;而list和queue的第二个参…