12 2022 档案

摘要:启动链接器 装载所有需要装载的对象 重定位和初始化 动态链接器的自举: 动态链接器本身也是一个共享对象。动态链接器的特殊性在于它不可以依赖其他共享对象,它所依赖的全局和静态变量的重定位的工作由自己完成。当操作系统将控制权交给动态链接器,它就开始了自举的过程。 装载共享对象: 完成基本自举以后,动态链 阅读全文
posted @ 2022-12-28 10:01 stu--wy 阅读(51) 评论(0) 推荐(0) 编辑
摘要:动态链接确实有很多优势,比静态链接要灵活的多,但是它是以牺牲一部分性能为代价的。 性能优化: 延迟绑定(PLT):当函数第一次调用时,才进行绑定(符号查找,重定位等)。 当我们调用某个外部模块的函数时,如果按照通常的做法应该是通过GOT中的相应的项进行间接跳转。PLT为了实现延迟绑定,在这个过程中间 阅读全文
posted @ 2022-12-28 10:01 stu--wy 阅读(110) 评论(0) 推荐(0) 编辑
摘要:可以想象,动态链接模块被装载映射至虚拟空间后,指令部分是在多个进程之间共享的,由于装载时重定位的方法需要修改指令,所以没有办法做到同一份指令被多个进程共享,因为指令被重定位后对于每个进程来讲是不同的。当然,动态连接库中的可修改数据部分对干不同的讲程来说有多个副本,所以它们可以采用装载时重定位的方法来 阅读全文
posted @ 2022-12-23 10:56 stu--wy 阅读(47) 评论(0) 推荐(0) 编辑
摘要:为什么要使用动态链接(时间换空间)? 静态链接使得不同的部门可以开发不同的模块,极大的提高了开发的效率。但是随之带来了空间浪费,和更新复杂的问题。空间浪费:静态链接讲求的是合并,将多个文件进行合并成一个可执行文件,其中可能包含了库文件。一个可执行文件合并库文件一次,一千个可执行文件合并了一千次,将这 阅读全文
posted @ 2022-12-23 10:45 stu--wy 阅读(53) 评论(0) 推荐(0) 编辑
摘要:程序执行时所需要的指令和数据必须在内存中才能够正常运行,最简单的办法就是将程序运行所需要的指令和数据全都装入内存中。但是内存不够硬伤,所以采用动态装入。 动态装载 装载的两种方式:曾经使用的覆盖装入,现在使用的页映射。 覆盖装入:将模块按照它们之间的依赖关系组织成树状结构。本质上还是想节约内存,将没 阅读全文
posted @ 2022-12-18 16:05 stu--wy 阅读(67) 评论(0) 推荐(0) 编辑
摘要:C++的一些语言特性使之必须和编译器链接器共同支持才能工作。 重复代码消除 全局构造和析构 重复代码消除: C++编译器在很多时候会产生重复的代码,比如模板(Templates)、外部内联函数和虚函数表(Virtual Function Table)都有可能在不同的编译单元里生成相同的代码。最简单的 阅读全文
posted @ 2022-12-17 10:03 stu--wy 阅读(33) 评论(0) 推荐(0) 编辑
摘要:对于整个链接器来讲,它的工作就是将几个目标输入文件加工后合并成一个输出文件。 链接器如何将它们的各个段合并到输出文件? 按序叠加。但是直接将输入文件叠加。 相似段合并。将相同性质的段合并到一起。 链接采用相似段合并。链接的步骤分两步: 第一步:合并+分配虚拟地址空间。 在链接之前,所有的段的虚拟地址 阅读全文
posted @ 2022-12-16 21:42 stu--wy 阅读(51) 评论(0) 推荐(0) 编辑
摘要:链接的接口--符号 在链接中,我们将函数和变量统称为符号,每个文件都有一个相应的符号表,这个符号表记录了目标文件中的所有符号。每个符号对应了一个符号值,对于函数和变量名,符号值就是他们对应的地址。符号可能是定义在本目标文件的全局符号,在本目标文件引用的全局符号等。 符号表--》结构体数组 符号表也像 阅读全文
posted @ 2022-12-16 20:32 stu--wy 阅读(99) 评论(0) 推荐(0) 编辑
摘要:cppreference.com c++手册 guides.github.com/introduction/git-handbook git手册 https://cs144.github.io/assignments/lab0.pdf pdf文档 鸠摩搜索 检索免费的电子书 github.com s 阅读全文
posted @ 2022-12-16 15:37 stu--wy 阅读(418) 评论(0) 推荐(0) 编辑
摘要:CPU,IO,内存是核心的硬件。 理论上讲,增加CPU的数量会提高运行速度,且CPU的数量和运算速度成正比。但是我们的程序并不都能分成多个不相干的子问题。 操作系统的一个功能是提供抽象的接口,另外一个主要功能是管理硬件资源。 计算机的能力是有限的,无论你是否使用它,资源总是那么多,所以人们挖空心思要 阅读全文
posted @ 2022-12-16 15:24 stu--wy 阅读(22) 评论(0) 推荐(0) 编辑
摘要:hello,world 是怎么执行的?总体来讲就是四个步骤。 预处理 编译 汇编 链接 1.预处理的动作如下: 2.编译(将是一个大动作,有限状态机)生成汇编代码 扫描:字面理解 语法分析:生成一棵语法树。 语义分析:语法有没有确定的意义,比如两个指针相乘是没有意义的,编译阶段的语义分许是静态语义。 阅读全文
posted @ 2022-12-16 15:23 stu--wy 阅读(67) 评论(0) 推荐(0) 编辑
摘要:编译器在编译源代码后生成的文件叫目标文件,就是指编译后未进行链接的中间文件,目标文件与可执行文件的结构和内容很相似,从广义上看,目标文件和可执行文件的格式几乎是一样的。动态链接库也是按照可执行文件的格式存储的,静态链接库是把很多目标文件捆绑在一起形成一个文件,再加上一些索引。 ELF 文件的类型 可 阅读全文
posted @ 2022-12-16 15:22 stu--wy 阅读(183) 评论(0) 推荐(0) 编辑
摘要:linux 的桌面环境X窗口系统。 shell 脚本:个人理解:将命令进行封装,加入逻辑控制。 硬盘分区是指利用分区编辑器在磁盘上划分几个分区,对操作系统而言,每个分区相当于一个相对独立的磁盘。各个分区可以分别创建不同的文件系统,安装不同的操作系统。 常见的文件系统:FAT系统,NTFS,EXT,V 阅读全文
posted @ 2022-12-13 11:22 stu--wy 阅读(58) 评论(0) 推荐(0) 编辑
摘要:下载: sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-8 sudo apt-get install g++-8 配置:将gcc8,g++8作为默认选项 阅读全文
posted @ 2022-12-12 22:43 stu--wy 阅读(1240) 评论(0) 推荐(0) 编辑
摘要:物理层 比特传输(物理层就是来到了最底层比特流的传输)。 一.数据通信基础; 异步通信:(键盘)有起始比特和结束比特作为标记,一次性只传输5~8bit; 同步通信(更高效): 1.独立同步的时钟信号,适于短距离通信; 2.把时钟信号嵌入数据中; 模拟信号,数字信号; 模拟信号转化为数字信号: 采样- 阅读全文
posted @ 2022-12-08 10:41 stu--wy 阅读(79) 评论(0) 推荐(0) 编辑
摘要:链路层--》局域网以太网 以太网(有线局域网): 以太网的物理拓扑:总线型,星型。 以太网采用无连接,不可靠协议。采用CSMA/CD算法。 交换机:链路层设备,拥有自学习的功能。所谓的自学习(在交换机表中就选择性转发,不在交换机表中就泛洪,做好记录,不断扩容) 组织机构的示意网络如图,可以体会交换机 阅读全文
posted @ 2022-12-08 10:36 stu--wy 阅读(58) 评论(0) 推荐(0) 编辑
摘要:MAC地址: MAC地址(LAN地址,局域网地址),用于局域网内标识一个帧从哪个接口发出,到达哪个物理相连的其他接口; 每块网卡都有唯一的MAC地址,48位,通常固定在网卡的ROM中,由IEEE管理; LAN中每个节点维护一个表,以及如何寻找到对应IP地址的MAC地址; 1.同一局域网内寻址: 通过 阅读全文
posted @ 2022-12-08 10:01 stu--wy 阅读(90) 评论(0) 推荐(0) 编辑
摘要:主机,路由器 》》》结点 数据链路层负责实现两个物理相邻的结点间传送数据报。(两根实体线之间的连接就是链路<--狭义) 链路层服务:组帧,链路接入,相邻节点间可靠交付,流量控制(协调相邻节点的发送和接收),差错检测,差错纠正(接收端直接纠正差错比特),全双工,半双工。 有线链路,无线链路,网卡之间的 阅读全文
posted @ 2022-12-07 21:55 stu--wy 阅读(322) 评论(0) 推荐(0) 编辑
摘要:如何获取IP地址?(一个小问题) 答案:静态和动态获取。 静态配置: 直接配置IP地址和子网掩码 默认网关:某个路由器和该子网相连的接口 DHCP 协议: 动态获取IP地址: 分割线 ICMP协议:差错报告,网络探寻 internet control message protocol,顾名思义网络控 阅读全文
posted @ 2022-12-07 20:21 stu--wy 阅读(20) 评论(0) 推荐(0) 编辑
摘要:网络层的核心功能:转发和路由 数据报网络,网络无连接服务 特点:每个分组携带目的地址,每个分组独立选路,根据聚合地址寻找目的地址 虚电路网络,网络连接服务 特点:类似于电路(物理),每个分组携带VCID而非目的IP,虚电路经过的每条网络设备,维护虚电路连接状态; 对比: 华丽的分割线 IPv4协议: 阅读全文
posted @ 2022-12-07 20:06 stu--wy 阅读(185) 评论(0) 推荐(0) 编辑
摘要:特权级:0,1,2,3级。0级的特权级最高。 特权级转移: 由中断门,调用门等手段实现由低特权级向高特权级转移 调用返回指令,这是唯一一种能降低特权级的情况 当处理器从低特权级向高特权级转移时,会自动的把当时低特权级的SS 和 ESP 压入 转移后的高特权级的栈中,最后可以实现“向外层转移”。平级调 阅读全文
posted @ 2022-12-03 17:35 stu--wy 阅读(105) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示