破解操作系统的奥秘

摘要: 【实验五】Linux操作系统是如何工作的?破解操作系统的奥秘姓名:吕良学号:SA12**6259关键字:存储程序计算机 堆栈机制 中断机制#includeint main(){ printf("HelloWorld\n"); return 0; } 操作系统如何运行Hello程序一、存储程序计算机“存储程序”原理,是将根据特定问题编写的程序存放在计算机存储器中,然后按存储器中的存储程序的首地址执行程序的第一条指令,以后就按照该程序的规定顺序其他指令,直至程序结束执行。Hello源程序被编译汇编成ELF可执行文件格式,存储在计算机存储器的某段空间中;二、堆栈机制一... 阅读全文
posted @ 2013-06-25 17:30 lvl_ustc 阅读(333) 评论(1) 推荐(0)

实验二:进程的创建与可执行程序的加载

摘要: 学号:SA*****259 姓名:吕良关键字:fork() exec() task_struct 进程地址空间 ELF文件格式 动态链接库实验总结(应该说是回答实验问题,因为300~500字真的不够,还是看附录吧)一、fork和exec系统调用在内核中的执行过程1>libc库对系统调用进行了封装,在执行int $0x80进入内核之前,封装例程就已经把系统调用号装入eax寄存器了。2>当用户态进程发出int $0x80指令时,CPU切换到内核态并开始从地址system_call处开始执行指令。( 在trap_init()中:set_system_gate(0x80,&syst 阅读全文
posted @ 2013-05-28 22:25 lvl_ustc 阅读(695) 评论(0) 推荐(0)

Linux中brk(),sbrk(),mmap(),malloc(),calloc()的异同

摘要: Linux内存管理的基本思想之一,是只有在真正访问一个地址的时候才建立这个地址的物理映射。首先,brk(),mmap()是系统调用;sbrk(),malloc(),calloc()是C库函数。参考:http://blog.csdn.net/kobbee9/article/details/7397010 http://blog.163.com/xychenbaihu@yeah/blog/static/132229655201210975312473/ 阅读全文
posted @ 2013-05-28 19:27 lvl_ustc 阅读(826) 评论(0) 推荐(0)

GNU交叉开发工具链 版本组合

摘要: http://www.kegel.com/crosstool/crosstool-0.43/buildlogs/ 阅读全文
posted @ 2013-05-16 20:34 lvl_ustc 阅读(169) 评论(0) 推荐(0)

Linux GCC常用命令

摘要: 转自http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html#_Toc311642845Linux GCC常用命令1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、O 阅读全文
posted @ 2013-05-16 11:38 lvl_ustc 阅读(185) 评论(0) 推荐(0)

X86为什么要使用逻辑地址?

摘要: 存储单元的地址在很多情况下都放在CPU的寄存器中,通过寄存器来间接访问存储器。但8088/8086的寄存器都是16位的,放不下20位的物理地址。显然,通过寄存器中存放的地址来访问1MB的存储空间是不可能的。解决的方法就是将地址空间分段,即将1MB的地址空间分为若干个64KB的段,然后用段基地址和段内偏移地址来访问物理存储器 ,如下图所示。 阅读全文
posted @ 2013-05-15 21:59 lvl_ustc 阅读(377) 评论(0) 推荐(0)

linux下查找进程及终止进程操作的相关命令

摘要: 转自http://hi.baidu.com/mcspring/item/b638a9288e2d3fcfdcf69a8e使用linux操作系统,难免遇到一些软件“卡壳”的问题,这时就需要使用linux下强大的kill命令来结束相关进程。这在linux系统下是极其容易的事情,你只需要kill xxx即可,这里xxx代表与此软件运行相关的进程PID号。首先,我们需要使用linux下另外一个命令ps查找与进程相关的PID号:ps aux | grep program_filter_word1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。2)ps -A 显示所有程序。3)ps c 列出程 阅读全文
posted @ 2013-05-15 21:56 lvl_ustc 阅读(198) 评论(0) 推荐(0)

C/C++混合编程的问题

摘要: 内容太多,给个链接喽~http://wenku.baidu.com/view/80e11c4733687e21af45a9aa.html 阅读全文
posted @ 2013-05-15 21:49 lvl_ustc 阅读(90) 评论(0) 推荐(0)

实验一:计算机是怎样工作的

摘要: SA*****259 吕良计算机中的程序都是在进程的堆栈空间中运行的:内核代码运行在进程的内核态堆栈,普通用户代码运行在进程的用户态堆栈。我们把example的c源代码编译成.s汇编代码:example.s是普通的用户程序,下面我们看一下它在进程堆栈中的运行情况:以上就是程序的整个执行过程,当然,这只是单任务计算机的工作过程,即我们假设系统中只运行着一个进程。 下面我们讨论一下多任务计算机系统是怎样工作的。 多任务计算机就是在系统中同时(不是同一时刻)运行着多个进程。宏观上,每个进程都独占着CPU;微观上,则是每个进程按照一定的次序轮流使用CPU。 现在假想一下这种情况:进程A正在执行... 阅读全文
posted @ 2013-05-14 19:48 lvl_ustc 阅读(219) 评论(0) 推荐(0)