您的位置:首页 > 其它

进程切换、创建、加载

2015-06-03 21:30 162 查看
进程切换(上下文切换):暂停当前运行状态,从运行状态变成其他状态;调度另一个进程从就绪状态变成运行状态。

进程切换的要求:切换前,保存进程上下文;切换后,恢复进程上下文;快速切换。寄存器、CPU、内存地址空间。



进程创建:windows进程创建API,CreateProcess;

Unix进程创建系统调用:fork/exec。Fork()把一个进程复制成二个进程(parent,child),exec()用程序来重写当前进程。Pid进程标志位。

Int pid=fork();//创建子进程,子进程的返回值是0,父进程返回是子进程的ID

If(pid==0){ //zhixing,dosomething…},子进程执行的程序,如果是父进程则跳过该程序,进入后面代码段。

Fork()创建一个继承的子进程:复制父进程所有变量和内存;复制父进程的所有CPU寄存器(有一个例外)。Fork()返回值:子进程返回0,父进程返回子进程的标识符,子进程可使用getpid()获取PID。对于循环的fork(),则总共为2n

Fork()开销昂贵,对子进程分配内存,复制父进程的内存和CPU寄存器到子进程。Fork()一般之后exec(),vfork()轻量级的fork(),Copy on Write(COW)技术。

系统调用exec()加载新进程。



进程加载和执行系统调用exec():允许进程加载一个完全不同的程序,允许进程加载时指定的参数,代码对、堆栈和对等完全重写。

Wait()系统调用用于父进程等待子进程的结束:子进程存活时,父进程进入等待状态,等待子进程的返回结果;当谋子进程调用exit()时,唤醒父进程,将exit()返回值作为父进程中wait()的返回值。

Exit()进程的有序终止,完成资源回收:并且检查父进程,若父进程活着,进入僵尸状态,否则释放所有数据结构。

优先级控制:nice()指定进程初始化优先级;Unix进程优先级会随着执行时间而衰减。

进程调试支持:ptrace()允许一个控制另一个进程的执行,断点,查看寄存器。

定时:sleep()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: