linux课程第七周实验及总结 实验及学习总结 1. 编译链接的过程和ELF可执行文件格式(以hello为例) GNU编译系统编译源码: 首先,运行C预处理器(cpp),将.c文件翻译成.i文件——gcc -E -o hello.cpp hello.c -m32 接着,运行C编译器(cc1),将.i文件翻译成ASCII汇编语言文件.s文件——gcc  -S -o hello.s hello.cpp -m32 然后,运行汇编器(as),将.s文件翻译成可重定位目标文件.o文件——gcc -c he…
linux课程第三周实验及总结 一.实验:跟踪分析Linux内核的启动过程 使用gdb跟踪调试内核从start_kernel到init进程启动 使用实验楼的虚拟机打开shell cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 内核启动完成后进入menu程序(<软件工程C编码实践篇>的课程项目),支持三个命令help.version和quit,您也可以添加更多的命令,对选修过&l…
linux课程第五周实验及总结 一.学习总结 给MenuOS增加time和time-asm命令(四步操作命令) rm menu -rf 强制删除git clone http://github.com/mengning/menu.git   克隆相关信息cd menumake rootfs 一个脚本,自动编译自动生成根文件系统,并自动启动MenuOS 使用gdb跟踪系统调用内核函数sys_time (gdb)b sys_time (gdb)c # 启动到MenuOs // 在MenuOs中使用ti…
linux课程第六周实验及总结 实验及学习总结 1.进程描述符task_struct数据结构 进程的作用: 将信号.进程间通信.内存管理和文件系统联系起来 操作系统的三大功能: 进程管理.内存管理.文件系统 内核通过唯一的进程标识PID来区别每个进程 Linux为每个进程分配一个8KB大小的内存区域,用于存放该进程两个不同的数据结构:Thread_info和进程的内核堆栈 task_struct结构的大体框架: 进程描述符中的state域描述了进程的当前状态: task_running task…
linux课程第八周实验及总结 实验及学习总结 1. 进程切换在内核中的实现 linux中进程切换是很常见的一个操作,而这个操作是在内核中实现的. 实现的时机有以下三个时机: 中断处理过程(包括时钟中断.I/O中断.系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(): 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度: 用户…
Linux期中总结 Linux课程第一周实验及总结:[http://www.cnblogs.com/20135302wei/p/5218607.html] 冯诺依曼体系结构的核心思想是存储程序计算机.在计算机中有两种指令,一是用户指令,一是系统调用. 当用户使用计算机时,计算机根据其汇编的指令一步步运行,当使用系统调用完后,再返回用户模式,保证系统的稳定. 程序中执行call的堆栈变化 汇编基础 通用寄存器 16位  32位 AX    eax 累加器BX    ebx 基址寄存器CX    e…
linux课程第四周实验及总结 一.实验 我选择的是第20号系统调用,getpid 代码如下: /* getpid.c */ #include <unistd.h> #include <stdio.h> int main() { pid_t pid; pid = getpid(); printf("pid = %d \n",pid); return 0; } 嵌入汇编代码后: /* getpid_asm.c */ #include <unistd.h>…
操作系统是如何工作的 1. 小结:计算机是怎样工作的 三个法宝 存储程序计算机.函数调用堆栈.中断机制 两把宝剑 中断上下文.进程上下文的切换 2. 堆栈 堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间. 函数条用框架 传递参数 保存返回地址 提供局部变量空间... 堆栈相关寄存器: esp:堆栈指针——指向系统栈最上面一个栈帧的栈顶 ebp: 基址指针——指向系统栈最上面一个栈帧的底部 cs:eip:指令寄存器——指向下一条等待执行的指令地址 堆栈相关操作: push :栈顶地址减少…
姬梦馨 原创作品 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第七周 Linux内核如何装载和启动一个可执行程序 一:1.可执行程序如何产生的? linux系统中,可执行程序一般要经过预处理.编译.汇编.链接.执行等步骤. 编译过程 预处理:gcc –E hello.c –o hello.i; gcc –E调用cpp 生成中间文件 编 译:gcc –S hello.i –o hello.s; gcc –S调…
实验四 类的继承 •实验目的 •理解抽象类与接口的使用: •了解包的作用,掌握包的设计方法. •实验要求 •掌握使用抽象类的方法. •掌握使用系统接口的技术和创建自定义接口的方法. •了解 Java 系统包的结构. •掌握创建自定义包的方法. •实验内容 (一)抽象类的使用 1.设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法. 继承该抽象类定义三角型.矩形.圆. 分别创建一个三角形.矩形.圆存对象,将各类图形的面积输出. 注:三角形面积s=sqrt(p(p-a)(p-b…
姓名:何伟钦 学号:20135223 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002900 学习内容:Linux内核如何装载和启动一个可执行程序 理解编译链接的过程和ELF可执行文件格式: 编程使用exec*库函数加载一个可执行文件,动态链接分为可执行程序装载时动态链接和运行时动态链接,编程练习动态链接库的这两种使用方式: 使用gdb跟踪分析一个execve系统调用内核处…
JSON: https://baike.baidu.com/item/JSON/2462549?fr=aladdin JSON指JavaScript对象表示法(JavaScript Object Notation),是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,有效地提升网络传输效率. JSON 语法 JSON 语法规则 在 JS 语言中,一切都是对象.因此,任何支持的类型都可以通过 JSON 来表示,例如字符串.数字.对象.数组等.但是对象和数组是比较特殊且常用…
来源:https://baike.baidu.com/item/JSON/2462549?fr=aladdin JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率. JSON 语法 J…
1.编写脚本实现传入进程PID,查看对应进程/proc下CPU.内存指标. #!/bin/bash read -p "Input PID Value: " pid #读取PID进程号 pid_exist=`ps aux|awk '{print $2}'|grep -w $pid` #定义一个字符串,通过grep命令,显示当前查找所有用户所有程序并打印出来 if [ ! $pid_exist ];then #如果pid不存在,然后 echo "$pid is not exist…
一.完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 代码: public class Mythread extends Thread { private int t=1000; public int getT() { return t; } public void setT(int t) { this. = t; } public void run() { for(int i…
1.解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔5分钟.防火墙命令为:iptables -A INPUT -s IP -j REJECT 测试脚本如下: /data/ddoscheck.sh #!/bin/bash # /usr/sbin/ss -tn | awk -F " +|:" '/ESTAB/{ip[$(NF-2)]++}END{for(i in ip)if(ip[i]…
实验七 继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: private--私有域或私有方法:只能在定义它的类中使用 public--公有域或公有方法:在任何其他的类中都可以访问 protected--受保护的域或方法:在所有子类和本包中可以访问 不用修饰符--友好域和友好方法:在同一包中的不同类之间访问 (2)掌握Object类的常用API用法: Object类是Java中所有类最终的祖先——每一个类都由它扩展而来.也就是说,在不…
---恢复内容开始--- 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11654436.html 作业学习目标 掌握四种访问权限修饰符的使用特点: 掌握Object类的用途及常用API: 掌握ArrayList类的定义方法及用途: 掌握枚举类定义方法及用途: 结合本章实验内容,理解继承与多态性两个面向对象程序设计特征,并体会其优点. 随笔博…
1.本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 public boolean contains(Object o) { return indexOf(o) >= 0; } public int indexOf(Object o) { if (o == null) { for (int i = 0; i < size; i++) if (elementData[i]=…
实验报告封面 实验内容及步骤 实验一.实现百分制成绩转成"优.良.中.及格.不及格"五级制成绩的功能 代码 public class MyUtil{ public static String percentage2fivegrade(int grade) { if (grade < 0 || grade >100) return "错误"; //如果成绩小于60,转成"不及格" if (grade < 60) return &q…
完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 一:实验代码 package demo; public class MyThread implements Runnable { private int ticket=25; public void run() { for(int i=0;i<25;i++) { synchronized(this) { if(ticket>0)…
一.理论部分 1.继承 如果两个类存在继承关系,则子类会自动继承父类的方法和变量,在子类中可以调用父类的方法和变量,如果想要在子类里面做一系列事情,应该放在父类无参构造器里面,在java中,只允许单继承,也就是说一个类最多只能显示地继承于一个父类.但是一个类却可以被多个类继承,也就是说一个类可以拥有多个子类. 2.子类继承父类的方法 子类并不是完全继承父类的所有方法. a.能够继承父类的public和protected成员方法:不能够继承父类的private成员方法: b.对于父类的包访问权限成…
201521123122 <java程序设计>第七周实验总结 1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 先贴源代码: public boolean contains(Object o) { return indexOf(o) >= 0; } public int indexOf(Object o) { if (o == null) { for (int i…
Linux内核设计第七周 ——可执行程序的装载 第一部分 知识点总结 一.预处理.编译.链接和目标文件的格式 1.可执行程序是怎么得来的 编译链接的过程 预处理阶段 gcc -E -o XX.cpp XX.c -m32 XX.cpp是预处理文件 编译器生成汇编代码阶段 gcc -x cpp-output -S -o hello.s hello.cpp -m32 XX.s是汇编代码 汇编器生成目标代码阶段 gcc -x assembler -c hello.s -o hello.o -m32 XX…
LINUX内核分析第七周学习总结:可执行程序的装载 韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 内容提要 一.得到一个可执行程序 1. 预处理.编译.链接 gcc hello.c -o hello.exe gcc编译源代码生成最终可执行的二进制程序,GCC后台隐含执行了四个阶段步骤. 预处理 => 编译 => 汇编 => 链接 预处理:编译器将C源代…
姬梦馨 原创作品 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第七周 Linux内核如何装载和启动一个可执行程序 一:1.可执行程序如何产生的? linux系统中,可执行程序一般要经过预处理.编译.汇编.链接.执行等步骤. 编译过程 预处理:gcc –E hello.c –o hello.i; gcc –E调用cpp 生成中间文件 编 译:gcc –S hello.i –o hello.s; gcc –S调…
<Linux内核分析>第七周学习笔记 可执行程序的装载 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时35分钟 实验时间:1小时 撰写博客时间:2小时40分钟] [学习内容:共享库和动态链接.exec系统调用的执行过程.可执行程序的装载] 一.预处理.编译.链接和目标文件的格式 1.1 可执行程序如何得来? 过程: C源代码(.c)经过编译器预处…
张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核分析 第七周 可执行程序的装载 一.预处理.编译.链接和目标文件的格式 1.可执行程序是怎么得来的 可执行文件的创建——预处理.编译和链接 shiyanlou:~/ $ cd Code [::] shiyanlou:Code/ $ vi hello.c [::] shiyanlou:Code/ $ gcc -E -o…
LINUX内核分析第七周学习总结--可执行程序的装载 杨舒雯(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 学习笔记 一.预处理.编译.链接和目标文件的格式 1.可执行程序是怎么得来的 C代码--预处理--汇编代码--目标代码--可执行文件 2.目标文件的格式ELF (1)A.out COFF PE.ELF(Linux中) (2)ABI--应用程序二进制接口 (3)种类: 一个可重定…
第七周 可执行程序的装载 郭皓 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一.预处理,编译,链接和目标文件格式 1.可执行程序是怎么得来的 c代码->预处理->汇编代码->汇编器->目标代码->链接成可执行文件->加载到内核执行 2.目标文件的格式ELF 符号修饰标准.变量内层布局.函数调用方式等这些跟可执行代码二进制兼容性相关的内容称为ABI…