摘要: 静态链接1 编译和链接1.1 被隐藏了的过程例如:#includeint main(){ printf("Hello World\n"); return 0;}在Linux下,使用GCC编译:gcc hello.c./a.outHello World事实上,上述过程由4个步骤,分别是预处... 阅读全文
posted @ 2015-05-11 23:14 Jessica程序猿 阅读(985) 评论(0) 推荐(0) 编辑
摘要: 写时复制技术最初产生于Unix系统,用于实现一种傻瓜式的进程创建:当发出fork()系统调用时,内核原样复制父进程的整个地址空间并把复制的那一份分配给子进程。这种行为是非常耗时的,因为它需要:·为子进程的页表分配页面·为子进程的页分配页面·初始化子进程的页表·把父进程的页复制到子进程相应的页中创建一... 阅读全文
posted @ 2015-05-11 20:12 Jessica程序猿 阅读(18359) 评论(3) 推荐(4) 编辑
摘要: 1 什么是线程线程,有时被称为轻量级进程,是程序执行的最小单元。一个标准的线程由线程ID、程序计数器(pc)、一组寄存器和堆栈组成。通常,一个进程由多个线程组成,每个线程之间共享进程的内存空间(包括代码段、数据段、堆等)及一些进程级的资源(如打开的文件描述符和信号)。如下图所示:2 线程的访问权限线... 阅读全文
posted @ 2015-05-11 19:37 Jessica程序猿 阅读(1066) 评论(0) 推荐(1) 编辑
摘要: 1 介绍计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。计算机系统u燃机系统结构的层次结构设计如下:每个层次之间都需要相互通信,既然需要通信就必须有一个通信的协议,也就是接口。一般接口的下面那层就是接口的提供者,接口由它定义;接口的上层就是接口的使用者,它使用该接口来实现需要的功能。例... 阅读全文
posted @ 2015-05-11 19:05 Jessica程序猿 阅读(2700) 评论(0) 推荐(0) 编辑
摘要: 简介strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执... 阅读全文
posted @ 2015-05-11 13:02 Jessica程序猿 阅读(775) 评论(0) 推荐(0) 编辑
摘要: 1 处于TUI模式的GDB为了以TUI模式运行GDB,可以在调用GDB时在命令行上指定-tui选项,或者处于非TUI模式时在GDB中使用Ctrl+X+A组合键。如果当前处于TUI模式,后一种命令方式就会使你离开TUI模式。在TUI模式中,GDB窗口划分为两个子窗口——一个用于输入GDB命令,而另一个... 阅读全文
posted @ 2015-05-11 11:50 Jessica程序猿 阅读(15963) 评论(0) 推荐(5) 编辑