-
20179223《Linux内核原理与分析》第八周学习笔记
视频学习 可执行文件是怎么得来的? .c汇编成汇编代码.asm,然后再汇编成目标码.o。然后在连接成可执行文件,然后加载到内存可执行了。 对hello.c文件预处理(cpp),预处理负责把include的文件包含进来及宏替换等工作。 把hello.cpp编译成汇编代码hello.s 再把编译代码he -
2017-2018-1 20179226《Linux内核原理与分析》第八周作业
实验 可执行程序的装载 可执行程序的产生过程分为四步,首先是预处理,编译成汇编代码,再汇编成目标码再链接可执行文件。过程如下图所示: 以hello world的.c文件为例进行分析,c语言代码如下: 编译步骤如下: 程序的执行结果如下: 静态&动态链接 1.链接,是收集和组织程序所需的不同代码和数据 -
2017-2018-1 20179205《Linux内核原理与设计》第八周作业
《Linux内核原理与设计》第八周作业 视频学习及操作分析 预处理、编译、链接和目标文件的格式 可执行程序是怎么来的? 以C语言为例,经过编译器预处理、编译成汇编代码、汇编器编译成目标代码,然后链接成可执行文件,再将可执行程序加载到内存中执行,过程可以通过下图展示(其中预处理已省略): 可执行文件的 -
2017-2018-1 20179215《Linux内核原理与分析》第八周作业
实验:ELF文件格式与程序的编译链接 一、可执行文件的创建 从源代码到可执行程序所要经历的过程概述: 源代码(.c .cpp .h)经过c预处理器(cpp)后生成.i文件,编译器(cc1、cc1plus)编译.i文件后生成.s文件,汇编器(as)汇编.s文件后生成.o文件,链 -
2017-2018-1 20179202《Linux内核原理与分析》第八周作业
一 、可执行程序的装载 1. 预处理、编译、链接 用 静态编译出来的hello.static把C库里需要的东西也放到可执行文件里了。用命令 ,可以看到hello只有7K,hello.static有大概700K。 2. ELF文件 ELF(Excutable and Linking Format)是一 -
2017-2018-1 20179203 《Linux内核原理与分析》第八周作业
攥写人:李鹏举 学号:20179203 ( 原创作品转载请注明出处 ) ( 学习课程:《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC 1000029000 ) 一、实验要求: 1.理解编译链接的过程和ELF可执行文件格式,详细内容参考本周 -
2017-2018-1 20179209《Linux内核原理与分析》第八周作业
Linux内核如何装载和启动一个可执行程 ========================================= 一.实验 1.1理解编译链接的过程和ELF可执行文件格式。 1.1.1编译链接过程 能用图说明的问题,就少用文字描述: 1.1.2ELF可执行文件 ELF可执行文件中有三种主 -
2017-2018-1 20179209《Linux内核原理与分析》第七周作业
一.实验 1.1task_struct数据结构 Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息。它定义在linux 3.18.6/include/linux/sched.h文件中。 这个结构体定义非常庞大,目测有300多行代码, -
20179223《Linux内核原理与分析》第七周学习笔记
视频知识学习 1.fork()函数被调用一次,但返回两次; 2.Linux通过复制父进程来创建一个子进程,通过调用fork来实现; 3.Linux会为每个子进程动态的分配一个task_struct结构。 创建一个新进程在内核中的执行过程 fork、vfork和clone三个系统调用都可以创建一个新进 -
2017-2018-1 20179215《Linux内核原理与分析》第七周作业
一、实验部分:分析Linux内核创建一个新进程的过程。 【第一部分】 根据要求完成第一部分,步骤如下: 1. 首先进入虚拟机,打开终端,这命令行依次敲入以下命令: cd LinuxKernel rm menu rf //强制删除 git clone https://github.com/mengni