重定位

计算机系统漫游

梦想的初衷 提交于 2020-01-31 21:53:50
1.1信息就是位+上下文 系统中所有的信息都是由一串位组成的, 所谓的位就是bit, 每八位是一个字节也就是byte, 理论上讲所有的文件可以分为两种, 一种是由ascii字符组成,这种我们也称作文本文件(其实其他字符编码也算, 这里不考虑), 剩下的都叫做二进制文件。所以其实一个文件到底会被如何翻译其实完全取决于上下文。 1.2程序被其他程序翻译成不同的格式 文中举了C语言的例子: 源文件(src.c)经过预处理器(cpp)生成被修改的源文件(src.i)然后经过编译器(ccl)生成汇编代码(src.s)然后是汇编器(as)生成可重定位的目标程序(src.o,从这里开始就是二进制文件了),最后经过链接器(ld)生成可执行文件。 这里我解释一下可重定位, 所谓的重定位定位的是地址, 因为只有经过了前面的编译处理才能得出最终数据段(.data)以及代码段(.text)的最终大小, 重定位在于为指令和全局变量等分配实际的系统空间。 1.3了解编译系统如何工作是大有益处的 如果能够弄懂编译系统工作原理, 可以在性能优化, 解决链接错误以及避免安全漏洞等方面有更加全面的了解。 1.4处理器读并解释存储在存储器中的设备 首先对于系统硬件组成的一个基本的认识 : 总线用来携带信息字节贯穿整个系统,其传送的字节块被称之为字, 字中的字节数是一个基本的系统参数也叫做字长, 一般为32位或者是64位

计算机系统大作业

半城伤御伤魂 提交于 2020-01-27 00:59:48
计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机类 学   号 1180300412 班   级 1803004 学 生 yiguanghui 指 导 教 师 计算机科学与技术学院 2019年12月 摘 要 关键词:计算机系统、编译链接、异常控制流、虚拟内存 摘要:本文较详细地跟踪介绍了hello.c在Linux下的生命周期,从被程序员创建,到在系统上运行,然后输出简单的消息,最后终止。本文通过计算机系统课程中相关的知识来分析hello.c在Linux开发工具下经历预处理、编译、汇编、链接、加载、执行、终止、回收等过程和结果,跟踪程序的链接、进程创建及加载、虚拟内存转换、高速缓存访问、异常控制流、I/O管理等过程。 目 录 第1章 概述… - 4 - 1.1 Hello简介… - 4 - 1.2 环境与工具… - 4 - 1.3 中间结果… - 4 - 1.4 本章小结… - 4 - 第2章 预处理… - 5 - 2.1 预处理的概念与作用… - 5 - 2.2在Ubuntu下预处理的命令… - 5 - 2.3 Hello的预处理结果解析… - 5 - 2.4 本章小结… - 5 - 第3章 编译… - 6 - 3.1 编译的概念与作用… - 6 - 3.2 在Ubuntu下编译的命令… - 6 - 3.3 Hello的编译结果解析… - 6 - 3.4

计算机系统大作业 程序人生-Hello’s P2P From Program to Process

北慕城南 提交于 2020-01-13 04:10:37
计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机 学 号 1180300327 班 级 11803003 学 生 黄锦洋 指 导 教 师 史先俊 附件:https://download.csdn.net/download/wyp237/12082603 计算机科学与技术学院 2019 年 12 月 计算机系统基础课程报告 1 - 摘 要 本文通过 hello.cP2P 和 020 的整体介绍,回顾了对计算机系统的学习,并稍做 拓展和深入,对相关存储与相关函数做了些许介绍。 关键词:计算机系统;P2P;020;存储;I/O (摘要 0 分,缺失-1 分,根据内容精彩称都酌情加分 0-1 分) 计算机系统基础课程报告 2 - 目 录 第 1 章 概述 … - 4 - 1.1 HELLO 简介 … - 4 - 1.2 环境与工具 … - 4 - 1.3 中间结果 … - 4 - 1.4 本章小结 … - 5 - 第 2 章 预处理 … - 6 - 2.1 预处理的概念与作用 … - 6 - 2.2 在 UBUNTU 下预处理的命令 … - 6 - 2.3 HELLO 的预处理结果解析 … - 6 - 2.4 本章小结 … - 7 - 第 3 章 编译 … - 8 - 3.1 编译的概念与作用 … - 8 - 3.2 在 UBUNTU 下编译的命令 … - 8

第13课.代码重定位

痴心易碎 提交于 2020-01-11 18:40:33
1.重定位的引入 NOR FLASH 可以像内存一样的读,但不能像内存一样的写。无法直接去修改全局变量和静态变量 NAND FLASH 把前面4k的代码放入SRAM。如果程序大于4k时,前面4k的代码需要把整个程序读出来 针对以上情况,引入重定位 程序结构 代码段:text 数据段(全局变量):data 只读全局变量(const):rodata 初始值为0,或者无初始值的全局变量:bss 注释段:common 注: bss和common段不保存在bin中 2.连接脚本的改进 SECTIONS { ... secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) { contents } >region :phdr =fill ... } secname和contents是必须的,其他可选 secname:段名,用来命名此段 contents:决定哪些内容放在本段,可以是整个目标文件(.o)也可以是目标文件中的某段(代码段,数据段等)。start.o或者这样start.o *(.text) start:是段的重定位地址,即本段运行的地址。如果代码中有位置无关指令,程序运行时这个段必须放在这个地址上。start可以用在任意一种描述地址的符号来描述 BLOCK(align)指定快对齐。比如

ORB-SLAM2 论文笔记

会有一股神秘感。 提交于 2020-01-10 01:54:57
单目相机具有成本低,设置简单的优点,但是同样存在尺度不确定、初始化需要足够视差,最终造成尺度漂移、无法处理纯旋转等问题。 ORB-SLAM2为SLAM的发展作出了以下几个贡献: 1.这是第一个同时提供单目,双目和RGB-D接口的SLAM开源系统,并且包含回环检测,重定位和地图重用。 2.通过BA对RBG-D进行优化,效果优于state-of-the-art的ICP或photometric and depth error minimization 3.通过使用近距离和远距离的双目点以及单目观测,使得其双目的精确度要高于state-of-the-art的直接使用双目的SLAM系统 4.通过禁用建图来实现利用已有地图,进行轻量级的定位。 ORB-SLAM2的框架和ORB-SLAM的框架几乎是一模一样的,包含了三个线程:Tracking,Local Mapping和Loop Closing。主要的区别还是在对于双目相机和RBG-D相机前端,是如何进行追踪并构建后端优化问题的。因此与ORB-SLAM相同的部分就不再赘述,详细可参考上一篇关于ORB-SLAM论文的博客。 A.Monocular, Close Stereo and Far Stereo Keypoints ORB-SLAM2是基于特征的SLAM系统,因此当从输入的图像中提取特征之后,图像不需要被保存而是直接丢弃,因此可以说ORB

第 8 章 内存管理策略

二次信任 提交于 2020-01-06 17:49:11
  为了实现性能改进,应将多个进程保存在内存中,也就是说必须共享内存。 8.1 背景   内存是现代计算机运行的核心。内存由一个很大的字节数组来组成,每个字节都有各自的地址。 8.1.1 基础硬件   CPU可以直接访问的通用存储只有内存和处理器内置的寄存器。   每个进程都有一个独立的内存空间,可以保护进程不会互相影响。 基地址寄存器(base register):最小的合法的物理内存地址。 界限地址寄存器(limit register):指定了范围的大小。   合法范围为(base, base + limit)register   内存空间保护的实现是通过CPU硬件对在用户模式下产生的地址与寄存器的地址进行比较来完成的。   只有操作系统可以通过特殊的特权指令,才能加载基地址寄存器和界限地址寄存器。不允许用户程序修改它们。 8.1.2 地址绑定   源程序中的地址通常是用符号表示的,编译器通常将这些符号地址绑定到可重定位的地址。链接程序或加载程序再将这些可重定位的地址绑定到绝对地址。每次绑定都是从一个地址空间到另一个地址空间的映射。   通常,指令和数据绑定到存储器地址可在沿途任何一步中进行: 编译时 加载时 执行时 8.1.3 逻辑地址空间和物理地址空间   CPU生成的地址通常称为逻辑地址,而内存单元看到的地址(即加载到内存地址寄存器)通常称为物理地址。  

计算机系统大作业

孤者浪人 提交于 2020-01-04 14:03:39
#计算机系统大作业 题 目 程序人生-Hello’s P2P 专 业 软件工程 学   号 1183710227 班   级 1837102 学 生 孙兴博 指 导 教 师 史先俊 计算机科学与技术学院 2019年12月 摘 要 摘要是论文内容的高度概括,应具有独立性和自含性,即不阅读论文的全文,就能获得必要的信息。摘要应包括本论文的目的、主要内容、方法、成果及其理论与实际意义。摘要中不宜使用公式、结构式、图表和非公知公用的符号与术语,不标注引用文献编号,同时避免将摘要写成目录式的内容介绍。 论文内容主要是在预处理,编译,汇编,链接,进程管理,存储管理,和io管理等方面,对hello例程进行全面的系统级解释。 文章首先对源文件hello.c文件变为hello可执行文件的中的过程,以及产生的中间文件,来描述关于预处理,编译,汇编和链接的内容。再利用hello可执行文件执行过程中进程切换,内存分配情况和输入输出情况对有关于进程管理,存储时地址的管理,地址的映射和转换,Linux下的io管理方法接口等进行描述。 本文通过hello.c例程,对程序从源代码到可执行文件,再到被载入内存执行的过程,使用计算机系统的相关知识概念,进行解释。 关键词:计算机系统、编译,汇编,链接,进程,内存,shell,信号,cache; (摘要0分,缺失-1分,根据内容精彩称都酌情加分0-1分) 目 录 第1章

HITICS-2019大作业报告

女生的网名这么多〃 提交于 2019-12-30 01:24:03
计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机类 *指 导 教 师 吴锐   * 计算机科学与技术学院 2019年12月 摘 要 当hello world这个句子显示在电脑上时,标志着世界上第一个程序的诞生。然而很多人都认为让hello world显示在屏幕上是一件很简单的事。殊不知,这个程序的所有执行周期却经历了很多阶段,当然,计算机科学家们在这个程序执行之前也做了大量的铺垫。所以,当我们研究hello world程序的整个生命周期时,我们发现这个程序是不平凡的,我们也理解了计算机科学家们的执着与智慧。从开始对这个程序的编码,再到预处理,编译的高级语言阶段。再到汇编成机器语言,转换成机器码。再进行链接生成可执行文件,再执行。在此过程中,CPU,操作系统,内存,磁盘等计算机的重要组成部分都有条不紊的相互协调工作,其中又产生了进程的创建与回收、异常处理、内存管理等后台。这些后台过程都默默地支持着程序的执行。本篇论文来告诉你hello world被打印在电脑屏幕里所要经历的所有过程。 **关键词:**程序 编码 执行 进程管理 储存管理 目 录 第1章 概述 - 4 - 1.1 Hello简介 - 4 - 1.2 环境与工具 - 4 - 1.3 中间结果 - 4 - 1.4 本章小结 - 4 - 第2章 预处理 - 5 - 2.1 预处理的概念与作用 -

操作系统概述(二)

霸气de小男生 提交于 2019-12-29 23:09:44
操作系统内存管理 内存管理包括内存管理和虚拟内存管理。 内存管理包括程序装入等概念、交换技术、连续分配管理方式和非连续分配管理方式(分页、分段、段页式)。 虚拟内存管理包括虚拟内存概念、请求分页管理方式、页面置换算法、页面分配策略、工作集。 我们先来了解一下什么是内存: 内存是计算机系统的一个重要组成部分,只有在内存中的程序才能被CPU所执行,而且CPU运行时所需要的数据和程序运行空间都是从内存中获取,所以内存性能的好坏直接影响我们计算机性能的好坏. 讲到内存我们可以讲一下关于存储器的分类: 存储器按照功能分配可以分为高速缓冲存储器(cache),主存储器(内存),外存储器(外存): 高速缓冲存储器(cache):cache又分为一级cache和二级cache,一级cache是位于CPU内部的存储器,它负责存储并向CPU传递需要的数据和指令,二级cache位于CPU和主存储器(DRAM)之间,二级的作用就是存储那些CPU处理时需要用到、一级缓存又无法存储的数据。CPU读取数据时,先从一级cache中寻找,找不到再从二级cache中寻找,有时还需要从三级cache中寻找.它们的共同点是读取速度都比CPU慢比内存快,内存容量小,价格高. 缓存的出现主要是为了解决CPU运算速度与内存 读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多

操作系统复习笔记

爷,独闯天下 提交于 2019-12-28 21:23:34
操作系统复习 第1章 操作系统概论 定义:管理系统资源、控制程序执行、改善人机界面、提供各种服务,并合理组织计算机工作流程和为用户方便有效的使用计算机提供良好运行环境的一种系统软件。 功能:处理器管理、存储管理、设备管理、文件管理、联网和通信管理 特性:并发性、共享性(1.透明资源共享 2.独占资源共享)、异步性 分类:批处理操作系统、分时操作系统、实时操作系统 第2章 处理器管理 进程定义:进程是具有独立功能的程序在某个数据集合上的一次运行活动,也是操作系统进行资源分配和保护的基本单位。 进程状态和转换:p73 三态模型:运行态、就绪态、等待态 五态模型:新建态、终止态提出的原因? 要求会画图,解释某些转换是不存在的。 引入多线程的动机:减少程序并发执行时所付出的时空开销,使得并发颗粒度更细、并发性更好。 线程的优点:快速线程切换、通信易于实现、减少管理开销、并发程度提高 PCB(Process Control Block)进程控制块:进程存在的唯一标识,是操作系统用来记录和刻画进程状态及环境信息的数据结构,是进程动态特征的汇集,也是操作系统掌握进程的唯一资料结构和管理进程的主要依据。p75 TCB的概念? 动态/静态 优先级? 处理器调度:p101 例题 先来先服务算法 最短作业优先算法(概念) 最短剩余时间优先算法 最高响应比优先算法(概念) 第3章 同步、通信与死锁