亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fork.c

?? 帶中文注釋的linux 0.11源碼 很好
?? C
字號(hào):
/** linux/kernel/fork.c** (C) 1991 Linus Torvalds*//** 'fork.c' contains the help-routines for the 'fork' system call* (see also system_call.s), and some misc functions ('verify_area').* Fork is rather simple, once you get the hang of it, but the memory* management can be a bitch. See 'mm/mm.c': 'copy_page_tables()'*//** 'fork.c'中含有系統(tǒng)調(diào)用'fork'的輔助子程序(參見system_call.s),以及一些其它函數(shù)* ('verify_area')。一旦你了解了fork,就會(huì)發(fā)現(xiàn)它是非常簡(jiǎn)單的,但內(nèi)存管理卻有些難度。* 參見'mm/mm.c'中的'copy_page_tables()'。*/#include <errno.h>		// 錯(cuò)誤號(hào)頭文件。包含系統(tǒng)中各種出錯(cuò)號(hào)。(Linus 從minix 中引進(jìn)的)。#include <linux/sched.h>	// 調(diào)度程序頭文件,定義了任務(wù)結(jié)構(gòu)task_struct、初始任務(wù)0 的數(shù)據(jù),// 還有一些有關(guān)描述符參數(shù)設(shè)置和獲取的嵌入式匯編函數(shù)宏語句。#include <linux/kernel.h>	// 內(nèi)核頭文件。含有一些內(nèi)核常用函數(shù)的原形定義。#include <asm/segment.h>	// 段操作頭文件。定義了有關(guān)段寄存器操作的嵌入式匯編函數(shù)。#include <asm/system.h>		// 系統(tǒng)頭文件。定義了設(shè)置或修改描述符/中斷門等的嵌入式匯編宏。extern void write_verify (unsigned long address);long last_pid = 0;//// 進(jìn)程空間區(qū)域?qū)懬膀?yàn)證函數(shù)。// 對(duì)當(dāng)前進(jìn)程的地址addr 到addr+size 這一段進(jìn)程空間以頁為單位執(zhí)行寫操作前的檢測(cè)操作。// 若頁面是只讀的,則執(zhí)行共享檢驗(yàn)和復(fù)制頁面操作(寫時(shí)復(fù)制)。voidverify_area (void *addr, int size){  unsigned long start;  start = (unsigned long) addr;// 將起始地址start 調(diào)整為其所在頁的左邊界開始位置,同時(shí)相應(yīng)地調(diào)整驗(yàn)證區(qū)域大小。// 此時(shí)start 是當(dāng)前進(jìn)程空間中的線性地址。  size += start & 0xfff;  start &= 0xfffff000;  start += get_base (current->ldt[2]);	// 此時(shí)start 變成系統(tǒng)整個(gè)線性空間中的地址位置。  while (size > 0)    {      size -= 4096;// 寫頁面驗(yàn)證。若頁面不可寫,則復(fù)制頁面。(mm/memory.c,261 行)      write_verify (start);      start += 4096;    }}// 設(shè)置新任務(wù)的代碼和數(shù)據(jù)段基址、限長(zhǎng)并復(fù)制頁表。// nr 為新任務(wù)號(hào);p 是新任務(wù)數(shù)據(jù)結(jié)構(gòu)的指針。intcopy_mem (int nr, struct task_struct *p){  unsigned long old_data_base, new_data_base, data_limit;  unsigned long old_code_base, new_code_base, code_limit;  code_limit = get_limit (0x0f);	// 取局部描述符表中代碼段描述符項(xiàng)中段限長(zhǎng)。  data_limit = get_limit (0x17);	// 取局部描述符表中數(shù)據(jù)段描述符項(xiàng)中段限長(zhǎng)。  old_code_base = get_base (current->ldt[1]);	// 取原代碼段基址。  old_data_base = get_base (current->ldt[2]);	// 取原數(shù)據(jù)段基址。  if (old_data_base != old_code_base)	// 0.11 版不支持代碼和數(shù)據(jù)段分立的情況。    panic ("We don't support separate I&D");  if (data_limit < code_limit)	// 如果數(shù)據(jù)段長(zhǎng)度 < 代碼段長(zhǎng)度也不對(duì)。    panic ("Bad data_limit");  new_data_base = new_code_base = nr * 0x4000000;	// 新基址=任務(wù)號(hào)*64Mb(任務(wù)大小)。  p->start_code = new_code_base;  set_base (p->ldt[1], new_code_base);	// 設(shè)置代碼段描述符中基址域。  set_base (p->ldt[2], new_data_base);	// 設(shè)置數(shù)據(jù)段描述符中基址域。  if (copy_page_tables (old_data_base, new_data_base, data_limit))    {				// 復(fù)制代碼和數(shù)據(jù)段。      free_page_tables (new_data_base, data_limit);	// 如果出錯(cuò)則釋放申請(qǐng)的內(nèi)存。      return -ENOMEM;    }  return 0;}/** Ok, this is the main fork-routine. It copies the system process* information (task[nr]) and sets up the necessary registers. It* also copies the data segment in it's entirety.*//** OK,下面是主要的fork 子程序。它復(fù)制系統(tǒng)進(jìn)程信息(task[n])并且設(shè)置必要的寄存器。* 它還整個(gè)地復(fù)制數(shù)據(jù)段。*/// 復(fù)制進(jìn)程。intcopy_process (int nr, long ebp, long edi, long esi, long gs, long none,	      long ebx, long ecx, long edx,	      long fs, long es, long ds,	      long eip, long cs, long eflags, long esp, long ss){  struct task_struct *p;  int i;  struct file *f;  p = (struct task_struct *) get_free_page ();	// 為新任務(wù)數(shù)據(jù)結(jié)構(gòu)分配內(nèi)存。  if (!p)			// 如果內(nèi)存分配出錯(cuò),則返回出錯(cuò)碼并退出。    return -EAGAIN;  task[nr] = p;			// 將新任務(wù)結(jié)構(gòu)指針放入任務(wù)數(shù)組中。// 其中nr 為任務(wù)號(hào),由前面find_empty_process()返回。  *p = *current;		/* NOTE! this doesn't copy the supervisor stack *//* 注意!這樣做不會(huì)復(fù)制超級(jí)用戶的堆棧 */ (只復(fù)制當(dāng)前進(jìn)程內(nèi)容)。    p->state = TASK_UNINTERRUPTIBLE;	// 將新進(jìn)程的狀態(tài)先置為不可中斷等待狀態(tài)。  p->pid = last_pid;		// 新進(jìn)程號(hào)。由前面調(diào)用find_empty_process()得到。  p->father = current->pid;	// 設(shè)置父進(jìn)程號(hào)。  p->counter = p->priority;  p->signal = 0;		// 信號(hào)位圖置0。  p->alarm = 0;  p->leader = 0;		/* process leadership doesn't inherit *//* 進(jìn)程的領(lǐng)導(dǎo)權(quán)是不能繼承的 */  p->utime = p->stime = 0;	// 初始化用戶態(tài)時(shí)間和核心態(tài)時(shí)間。  p->cutime = p->cstime = 0;	// 初始化子進(jìn)程用戶態(tài)和核心態(tài)時(shí)間。  p->start_time = jiffies;	// 當(dāng)前滴答數(shù)時(shí)間。// 以下設(shè)置任務(wù)狀態(tài)段TSS 所需的數(shù)據(jù)(參見列表后說明)。  p->tss.back_link = 0;  p->tss.esp0 = PAGE_SIZE + (long) p;	// 堆棧指針(由于是給任務(wù)結(jié)構(gòu)p 分配了1 頁// 新內(nèi)存,所以此時(shí)esp0 正好指向該頁頂端)。  p->tss.ss0 = 0x10;		// 堆棧段選擇符(內(nèi)核數(shù)據(jù)段)[??]。  p->tss.eip = eip;		// 指令代碼指針。  p->tss.eflags = eflags;	// 標(biāo)志寄存器。  p->tss.eax = 0;  p->tss.ecx = ecx;  p->tss.edx = edx;  p->tss.ebx = ebx;  p->tss.esp = esp;  p->tss.ebp = ebp;  p->tss.esi = esi;  p->tss.edi = edi;  p->tss.es = es & 0xffff;	// 段寄存器僅16 位有效。  p->tss.cs = cs & 0xffff;  p->tss.ss = ss & 0xffff;  p->tss.ds = ds & 0xffff;  p->tss.fs = fs & 0xffff;  p->tss.gs = gs & 0xffff;  p->tss.ldt = _LDT (nr);	// 該新任務(wù)nr 的局部描述符表選擇符(LDT 的描述符在GDT 中)。  p->tss.trace_bitmap = 0x80000000;  (高16 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久久久久久久久久久久| 欧美性videosxxxxx| 国产很黄免费观看久久| 粉嫩嫩av羞羞动漫久久久| 国产午夜精品在线观看| 精品无人区卡一卡二卡三乱码免费卡| 欧美亚洲高清一区二区三区不卡| 日韩欧美在线观看一区二区三区| 亚洲二区视频在线| 国产午夜一区二区三区| 成人美女在线视频| 欧美美女黄视频| 在线不卡中文字幕| 中文字幕免费不卡| 天堂午夜影视日韩欧美一区二区| 成人一区在线观看| 99久久久久久| 久久综合色综合88| 亚洲成国产人片在线观看| 成人一区在线观看| 精品国产99国产精品| 亚洲色图欧洲色图婷婷| 国产中文字幕精品| 欧美肥妇bbw| 亚洲图片另类小说| 国产成+人+日韩+欧美+亚洲| 欧美高清www午色夜在线视频| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 99精品视频一区二区| 欧美一级片在线| 亚洲国产欧美在线人成| 国产精品18久久久久久久网站| 欧美另类一区二区三区| 亚洲一区在线观看免费观看电影高清 | 波多野结衣中文字幕一区二区三区| 欧美一区二区三区精品| 亚洲午夜激情av| 在线精品国精品国产尤物884a| 久久精品免视看| 国产69精品久久久久毛片 | 麻豆国产一区二区| 欧美日韩成人高清| 亚洲尤物在线视频观看| caoporm超碰国产精品| 久久久久88色偷偷免费| 国产精品一区免费视频| 欧美三级欧美一级| 亚洲一区二区免费视频| 欧洲人成人精品| 亚洲精品国产一区二区精华液 | 欧美丝袜自拍制服另类| 一区二区三区精品| 99国产欧美久久久精品| 国产精品久久一级| a4yy欧美一区二区三区| 亚洲欧洲国产专区| 91久久精品午夜一区二区| 亚洲精品亚洲人成人网在线播放| 99国内精品久久| 亚洲综合成人在线| 91麻豆精品国产| 久久精品99久久久| 国产网红主播福利一区二区| 不卡欧美aaaaa| 夜夜嗨av一区二区三区中文字幕| 欧美日韩国产一区二区三区地区| 丝袜亚洲另类欧美综合| 91精品午夜视频| 国产麻豆精品在线观看| 中文字幕五月欧美| 欧美日韩久久久| 久久9热精品视频| 国产午夜精品一区二区三区四区| 成人黄色在线网站| 亚洲综合999| 精品国产自在久精品国产| 热久久久久久久| 中文字幕精品—区二区四季| 91极品美女在线| 美女视频一区二区三区| 中文字幕制服丝袜一区二区三区| 一本到不卡精品视频在线观看| 日韩国产欧美在线播放| 欧美电影一区二区三区| 亚洲一区二区免费视频| 欧美视频一区二区| 国产高清在线精品| 日本va欧美va欧美va精品| 亚洲人成7777| 精品成人在线观看| 7799精品视频| 91色.com| 97国产一区二区| 成人精品免费网站| 国产乱人伦偷精品视频免下载 | 黄网站免费久久| 青青草伊人久久| 天天操天天综合网| 亚洲一区二区综合| 亚洲日穴在线视频| 日韩美女啊v在线免费观看| 亚洲国产成人一区二区三区| 久久青草国产手机看片福利盒子| 日韩欧美一二三区| 日韩精品中文字幕一区| 在线播放欧美女士性生活| 色激情天天射综合网| 色诱视频网站一区| 色婷婷综合中文久久一本| av电影一区二区| 国产91综合网| 成人av小说网| 色哟哟日韩精品| 色婷婷激情久久| 欧美丝袜第三区| 欧美人伦禁忌dvd放荡欲情| 欧美视频一区二区三区四区| 欧美亚洲禁片免费| 欧美精品1区2区| 日韩精品中文字幕在线一区| 日韩欧美精品在线| 日韩精品一区二区三区swag| 欧美精品一区二区三区一线天视频| 日韩精品一区二区三区四区| 2020国产精品自拍| 中文字幕av一区 二区| 国产精品热久久久久夜色精品三区 | 成人精品视频一区| 94-欧美-setu| 欧美日韩一级黄| 欧美一区二区三区视频在线| 精品第一国产综合精品aⅴ| 亚洲精品在线免费观看视频| 国产日韩欧美精品一区| 亚洲三级电影网站| 日韩国产欧美一区二区三区| 国产又黄又大久久| 99久久精品国产一区二区三区| 欧美性猛片aaaaaaa做受| 5566中文字幕一区二区电影| 久久先锋影音av鲁色资源网| 国产精品久久久久毛片软件| 亚洲一区在线观看视频| 裸体在线国模精品偷拍| 懂色av一区二区三区免费观看| 色婷婷国产精品| 精品欧美一区二区三区精品久久| 国产精品污污网站在线观看| 一区二区三区91| 国产一区二区三区综合 | 国产激情视频一区二区三区欧美| 91老司机福利 在线| 日韩三级电影网址| 亚洲欧美日韩一区| 免费成人av在线| 91色综合久久久久婷婷| 欧美电视剧在线观看完整版| 亚洲视频狠狠干| 国产一区三区三区| 欧美性生交片4| 中文字幕欧美三区| 久久精品国产99国产| 91热门视频在线观看| 精品久久久久久久一区二区蜜臀| 亚洲美女偷拍久久| 国产一区二区三区蝌蚪| 欧美日韩国产片| 中文字幕日韩欧美一区二区三区| 毛片av中文字幕一区二区| 日本道色综合久久| 中文乱码免费一区二区| 美女视频黄 久久| 欧美日韩一区精品| 亚洲色图欧美在线| 国产不卡视频在线播放| 日韩视频永久免费| 亚洲成人你懂的| 色呦呦网站一区| 中文一区在线播放| 国精产品一区一区三区mba桃花| 欧美伦理视频网站| 一区二区三区不卡在线观看 | 亚洲久草在线视频| 丁香另类激情小说| 久久这里只有精品首页| 免费人成网站在线观看欧美高清| 欧美视频中文一区二区三区在线观看| 中文字幕av在线一区二区三区| 国产尤物一区二区| 久久久久国产成人精品亚洲午夜| 久久99最新地址| 欧美www视频| 精品一区二区三区免费观看| 欧美成人一区二区三区片免费| 午夜精彩视频在线观看不卡| 欧美男男青年gay1069videost| 香蕉久久夜色精品国产使用方法| 欧美日韩综合不卡| 亚洲成人黄色小说| 51精品秘密在线观看|