曾几何时,只是一直在调用库函数fork,只知道它创建一个子进程,并且子进程返回值是0,父进程返回值是子进程pid。但是一直没有深究内核代码,今天终于使用gdb调试了一把fork的内核代码,下面就让我们一探究竟吧。
1.创建进程的本质是什么?
根据目前理解,其实就是构造了PCB,这个PCB会唯一标示一个进程的存在,并且会构建子进程的页目录和页表等等。
2.为什么fork()调用会有2个返回值,...
分类:
系统相关 时间:
2014-05-22 10:40:01
阅读次数:
404
引言:
对于每个进程,都有一个非负整数表示的唯一进程ID。虽然进程的ID是唯一的,但却是可重用的。系统中有一些专用的进程。如ID为0的进程通常是调度进程,也成交换进程或系统进程(它是内核进程)。进程ID为1通常是init进程,它是一个普通的用户进程。一些与进程ID有关的函数:
#include
pid_t getpid(void); //返回值:调用进程的进程ID
pit_t get...
分类:
系统相关 时间:
2014-05-15 13:15:26
阅读次数:
482
fork函数是linux中创建进程的函数,linux创建进程只有用fork,别无他法。我自己写代码fork用的不多,对它的一些细节还不是清楚,今天抽空研究了下fork,把它的一些关键点总结一下,以后用到了自己也好有个参考。1)fork函数会在父进程中创建子进程,子进程的堆,栈,数据段,PC..
分类:
系统相关 时间:
2014-05-09 00:42:46
阅读次数:
600
1 #include "windows.h" 2 #include "iostream" 3
#include "stdio.h" 4 5 void StartClone(int nCloneID){ 6 TCHAR
szFilename[MAX_PATH]; 7 GetModu...
分类:
其他好文 时间:
2014-05-08 08:00:45
阅读次数:
441
1、终端登录 BSD终端登录
a、系统管理员创建通常名为/etc/ttys的文件,其中,每个终端设备都有一行,每一行说明设备名和传递给getty程序的参数,例如,参数之一说明了终端的波特率等。
当程序自举时,内核创建进程ID为1的进程,也就是init进程。init进程使系统进入多用户状态。init进...
分类:
其他好文 时间:
2014-05-02 15:10:25
阅读次数:
382
#include "stdafx.h"#include // 函数声明typedef BOOL
(WINAPI* Proc_CreateProcessW)(LPCWSTR lpApplicationName, LPWSTR lpCommandLine,
...
分类:
其他好文 时间:
2014-05-01 20:05:48
阅读次数:
400
进程的权限继承自创建进程用户和用户所属的用户组。用户有专用数据结构来表示权限—访问令牌(Access Token)。访问令牌包括两个部分:一个是令牌所表示的用户,包括用户标识符(SID),用户所属的用户组等;另一部分是“权限”(Privilege)。
在进程访问安全对象时,会用到SID。每个安全对象都有访问控制列表(ACL),ACL说明了哪些用户( SID)能访问本对象,哪些不能,以及能进行哪种...
分类:
其他好文 时间:
2014-04-29 13:13:21
阅读次数:
346