摘要: SA****6343 孙洪菠对进程的创建与可执行程序的加载总结如下: linux系统通过函数fork()、exec()来创建一个新的进程,更确切的说,这两个函数是分别用于进程的创建和进程修改,函数fork()用来创建一个新的进程,该进程几乎是当前进程的一个完全拷贝;函数族exec()用来启动另外的进程以取代当前运行的进程。一、进程的创建过程: Linux中创建进程的调用fork实际上是调用do_fork(),do_fork在做一些预处理之后,实际上是调用copy_process()函数复制进程。copy_process... 阅读全文
posted @ 2013-05-30 23:10 basuny 阅读(526) 评论(0) 推荐(0) 编辑
摘要: Linux系统中进程堆栈的使用Linux 0.12系统中共使用了4种堆栈。第1种是系统引导初始化时临时使用的堆栈;第2种是进入保护模式之后提供内核程序初始化使用的堆栈,位于内核代码地址空间固定位置处。该堆栈也是后来任务0使用的用户态堆栈;第3种是每个任务通过系统调用,执行内核程序时使用的堆栈,我们称之为任务的内核态堆栈。每个任务都有自己独立的内核态堆栈;第4种是任务在用户态执行的堆栈,位于任务(进程)逻辑地址空间近末端处。使用多个栈或在不同情况下使用不同栈的主要原因有两个。首先是由于从实模式进入保护模式,使得CPU对内存寻址访问方式发生了变化,因此需要重新调整设置栈区域。另外,为了解决不同CP 阅读全文
posted @ 2013-05-30 22:36 basuny 阅读(289) 评论(0) 推荐(0) 编辑