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

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

?? 信號燈.txt

?? 這個資料非常不錯
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
  // semop any more.
		{
			arg.val=1;
			if(semctl(semid,0,SETVAL,arg)==-1) perror("semctl setval error");
		} 
	}
	else
	{perror("semget error, process exit");	exit();	}
}
else //semid>=0; do some initializing 	
{
	arg.val=1;
	if(semctl(semid,0,SETVAL,arg)==-1)
		perror("semctl setval error");
}
//get some information about the semaphore and the limit of semaphore in redhat8.0
	arg.buf=&sem_info;
	if(semctl(semid, 0, IPC_STAT, arg)==-1)
		perror("semctl IPC STAT");		
	printf("owner's uid is %d\n", 	arg.buf->sem_perm.uid);
	printf("owner's gid is %d\n", 	arg.buf->sem_perm.gid);
	printf("creater's uid is %d\n", 	arg.buf->sem_perm.cuid);
	printf("creater's gid is %d\n", 	arg.buf->sem_perm.cgid);

	arg.__buf=&sem_info2;
	if(semctl(semid,0,IPC_INFO,arg)==-1)
		perror("semctl IPC_INFO");
	printf("the number of entries in semaphore map is %d \n",	 		arg.__buf->semmap);
	printf("max number of semaphore identifiers is %d \n", 		 	arg.__buf->semmni);
	printf("mas number of semaphores in system is %d \n",		 		arg.__buf->semmns);
	printf("the number of undo structures system wide is %d \n",	 	arg.__buf->semmnu);
	printf("max number of semaphores per semid is %d \n",		 		arg.__buf->semmsl);
	printf("max number of ops per semop call is %d \n",		 		arg.__buf->semopm);
	printf("max number of undo entries per process is %d \n", 	 		arg.__buf->semume);
	printf("the sizeof of struct sem_undo is %d \n", 	  	 			arg.__buf->semusz);
	printf("the maximum semaphore value is %d \n", 					arg.__buf->semvmx);
	
//now ask for available resource:	
	askfor_res.sem_num=0;
	askfor_res.sem_op=-1;
	askfor_res.sem_flg=SEM_UNDO;		
		
		if(semop(semid,&askfor_res,1)==-1)//ask for resource
			perror("semop error");
	
	sleep(3); //do some handling on the sharing resource here, just sleep on it 3 seconds
	printf("now free the resource\n");	
	
//now free resource	
	free_res.sem_num=0;
	free_res.sem_op=1;
	free_res.sem_flg=SEM_UNDO;

	if(semop(semid,&free_res,1)==-1)//free the resource.
		if(errno==EIDRM)
			printf("the semaphore set was removed\n");
//you can comment out the codes below to compile a different version:			
	if(semctl(semid, 0, IPC_RMID)==-1)
		perror("semctl IPC_RMID");
	else printf("remove sem ok\n");
}
注:讀者可以嘗試一下注釋掉初始化步驟,進程在運行時會出現(xiàn)何種情況(進程在申請資源時會睡眠),同時可以像程序結(jié)尾給出的注釋那樣,把該程序編譯成兩個不同版本。下面是本程序的運行結(jié)果(操作系統(tǒng)redhat8.0):

owner's uid is 0
owner's gid is 0
creater's uid is 0
creater's gid is 0
the number of entries in semaphore map is 32000 
max number of semaphore identifiers is 128 
mas number of semaphores in system is 32000 
the number of undo structures system wide is 32000 
max number of semaphores per semid is 250 
max number of ops per semop call is 32 
max number of undo entries per process is 32 
the sizeof of struct sem_undo is 20 
the maximum semaphore value is 32767 
now free the resource
remove sem ok
Summary:信號燈與其它進程間通信方式有所不同,它主要用于進程間同步。通常所說的系統(tǒng)V信號燈實際上是一個信號燈的集合,可用于多種共享資源的進程間同步。每個信號燈都有一個值,可以用來表示當前該信號燈代表的共享資源可用(available)數(shù)量,如果一個進程要申請共享資源,那么就從信號燈值中減去要申請的數(shù)目,如果當前沒有足夠的可用資源,進程可以睡眠等待,也可以立即返回。當進程要申請多種共享資源時,linux可以保證操作的原子性,即要么申請到所有的共享資源,要么放棄所有資源,這樣能夠保證多個進程不會造成互鎖。Linux對信號燈有各種各樣的限制,程序中給出了輸出結(jié)果。另外,如果讀者想對信號燈作進一步的理解,建議閱讀sem.h源代碼,該文件不長,但給出了信號燈相關(guān)的重要數(shù)據(jù)結(jié)構(gòu)。
附錄1: struct sem_array如下:

/*系統(tǒng)中的每個信號燈集對應(yīng)一個sem_array 結(jié)構(gòu) */
struct sem_array {
	struct kern_ipc_perm	sem_perm;		/* permissions .. see ipc.h */
	time_t			sem_otime;			/* last semop time */
	time_t			sem_ctime;			/* last change time */
	struct sem		*sem_base;			/* ptr to first semaphore in array */
	struct sem_queue	*sem_pending;		/* pending operations to be processed */
	struct sem_queue	**sem_pending_last; 	/* last pending operation */
	struct sem_undo		*undo;			/* undo requests on this array */
	unsigned long		sem_nsems;		/* no. of semaphores in array */
};
其中,sem_queue結(jié)構(gòu)如下:

/* 系統(tǒng)中每個因為信號燈而睡眠的進程,都對應(yīng)一個sem_queue結(jié)構(gòu)*/
 struct sem_queue {
	struct sem_queue *	next;	 	/* next entry in the queue */
	struct sem_queue **	prev;	 	/* previous entry in the queue, *(q->prev) == q */
	struct task_struct*	sleeper; 	/* this process */
	struct sem_undo *	undo;	 	/* undo structure */
	int   pid;	 					/* process id of requesting process */
	int   status;	 				/* completion status of operation */
	struct sem_array *	sma;	 		/* semaphore array for operations */
	int	id;	 						/* internal sem id */
	struct sembuf *	sops;		 	/* array of pending operations */
	int	nsops;					 	/* number of operations */
	int	alter;	 					/* operation will alter semaphore */
};
附錄2:union semun是系統(tǒng)調(diào)用semctl中的重要參數(shù):

union semun {
	int val;					/* value for SETVAL */
	struct semid_ds *buf;		/* buffer for IPC_STAT & IPC_SET */
	unsigned short *array;		/* array for GETALL & SETALL */
	struct seminfo *__buf;		/* buffer for IPC_INFO */   //test!!
	void *__pad;
};
struct  seminfo {
	int semmap;
	int semmni;
	int semmns;
	int semmnu;
	int semmsl;
	int semopm;
	int semume;
	int semusz;
	int semvmx;
	int semaem;
};

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品视频免费观看| 亚洲理论在线观看| 日韩欧美黄色影院| 7777精品伊人久久久大香线蕉超级流畅| 91在线porny国产在线看| 成人18精品视频| 成人av在线播放网址| 成人性生交大片免费看在线播放| 高清在线成人网| 成人免费的视频| 99精品偷自拍| 91福利在线导航| 欧美日韩一区二区不卡| 91精选在线观看| 日韩免费观看高清完整版在线观看| 日韩免费视频一区| 久久色中文字幕| 亚洲国产精品精华液2区45| 久久久综合网站| 国产精品素人视频| 中文字幕人成不卡一区| 一区二区三区日韩在线观看| 亚洲丰满少妇videoshd| 日韩激情视频网站| 老司机免费视频一区二区三区| 精品伊人久久久久7777人| 国产一区二区三区在线观看免费 | 国产一区二区三区av电影| 激情综合色综合久久综合| 国产精品一区不卡| 91丨porny丨首页| 欧洲av一区二区嗯嗯嗯啊| 欧美日本韩国一区二区三区视频| 91精品国产色综合久久不卡电影| 欧美大片在线观看| 国产日产精品1区| 亚洲欧美aⅴ...| 亚洲v精品v日韩v欧美v专区| 欧美aⅴ一区二区三区视频| 九色|91porny| 波多野结衣在线aⅴ中文字幕不卡| 日本精品视频一区二区| 88在线观看91蜜桃国自产| 日韩精品在线一区| 亚洲国产精品av| 五月天精品一区二区三区| 狠狠色伊人亚洲综合成人| 成人国产一区二区三区精品| 欧美专区日韩专区| 精品国产一区二区三区忘忧草| 国产欧美日韩精品一区| 亚洲综合男人的天堂| 久久精品国产亚洲高清剧情介绍 | 日韩欧美国产电影| 中文字幕在线观看一区二区| 午夜日韩在线观看| 国产精品一二三区| 欧美午夜免费电影| 国产日韩欧美亚洲| 亚洲va中文字幕| 国产乱码精品一品二品| 欧美在线看片a免费观看| 久久综合一区二区| 一级中文字幕一区二区| 国产一区二区三区在线观看免费 | 欧美一区日本一区韩国一区| 国产午夜一区二区三区| 香蕉av福利精品导航| 成人永久免费视频| 91精品久久久久久久久99蜜臂| 国产精品美女久久久久aⅴ国产馆| 性做久久久久久久久| av电影天堂一区二区在线| 日韩精品一区二区三区视频在线观看 | 成人免费一区二区三区视频 | 色悠悠久久综合| 久久久亚洲国产美女国产盗摄 | 久久精品国产亚洲一区二区三区| 色婷婷精品久久二区二区蜜臂av | 亚洲女同女同女同女同女同69| 麻豆精品在线观看| 欧美视频完全免费看| 亚洲欧美在线视频| 精品在线播放免费| 51精品秘密在线观看| 亚洲精品亚洲人成人网在线播放| 国内精品久久久久影院薰衣草 | 欧美自拍丝袜亚洲| 亚洲第一福利视频在线| 国产成人av一区二区三区在线观看| 精品视频一区 二区 三区| 国产精品国产馆在线真实露脸| 九九久久精品视频| 欧美一区二区三区公司| 一区二区三区欧美在线观看| 成人午夜碰碰视频| 久久久久久久久久久久久久久99| 日韩精品一级二级| 欧美亚洲日本国产| 亚洲精品视频在线观看免费| 国产宾馆实践打屁股91| 久久久九九九九| 国产精品一区2区| 久久夜色精品国产噜噜av| 另类欧美日韩国产在线| 日韩精品一区二区三区视频播放 | 亚洲免费观看在线视频| 99久久99久久免费精品蜜臀| 国产欧美日韩不卡免费| 国产福利一区在线观看| 久久综合九色综合97_久久久| 久久99这里只有精品| 精品成人佐山爱一区二区| 精品一区二区三区久久久| 欧美哺乳videos| 国精产品一区一区三区mba桃花 | 蜜臀av在线播放一区二区三区| 在线不卡免费欧美| 日韩成人伦理电影在线观看| 欧美一级日韩免费不卡| 久久精品国产免费| 国产午夜精品理论片a级大结局 | 久久综合久久综合亚洲| 国产乱子伦视频一区二区三区| 国产亚洲1区2区3区| www.色综合.com| 一区二区三区在线影院| 精品视频一区 二区 三区| 日韩不卡一区二区| 精品人在线二区三区| 国产资源精品在线观看| 国产欧美日韩中文久久| av亚洲产国偷v产偷v自拍| 亚洲男人的天堂一区二区| 欧美精品成人一区二区三区四区| 青娱乐精品视频| 国产日韩欧美电影| 一本到不卡免费一区二区| 亚洲国产一区二区视频| 欧美一区二区高清| 国产91精品精华液一区二区三区| 亚洲色图欧美偷拍| 在线电影国产精品| 国产一区二区三区高清播放| 国产精品久久久久久久久免费丝袜 | 一区二区三区免费看视频| 69成人精品免费视频| 国产裸体歌舞团一区二区| 自拍av一区二区三区| 欧美精品少妇一区二区三区| 黄色日韩网站视频| 亚洲少妇屁股交4| 日韩三级伦理片妻子的秘密按摩| 高清不卡在线观看av| 亚洲狠狠爱一区二区三区| 久久一区二区三区国产精品| 日本韩国精品一区二区在线观看| 日韩av午夜在线观看| 亚洲bt欧美bt精品777| 精品国产制服丝袜高跟| 94-欧美-setu| 麻豆精品视频在线观看| 亚洲同性同志一二三专区| 91精品国产高清一区二区三区蜜臀| 国产激情视频一区二区三区欧美 | 欧美一区二区视频在线观看2022 | 国产又黄又大久久| 一区二区久久久| 久久久www成人免费无遮挡大片| 91美女精品福利| 国产一区亚洲一区| 亚洲一二三级电影| 国产精品欧美极品| 欧美精品18+| 99精品久久免费看蜜臀剧情介绍| 肉色丝袜一区二区| 国产精品久99| 久久综合久久综合亚洲| 欧美视频日韩视频在线观看| 不卡欧美aaaaa| 国产综合久久久久久鬼色| 日日摸夜夜添夜夜添国产精品| 中文字幕在线一区免费| 精品美女在线播放| 欧美精品成人一区二区三区四区| 99精品久久免费看蜜臀剧情介绍| 国产精品一卡二| 蜜桃精品在线观看| 丝袜国产日韩另类美女| 樱桃国产成人精品视频| 亚洲国产精品t66y| 久久久久国产免费免费| 日韩美女一区二区三区| 欧美日韩国产大片| 欧美伊人久久久久久久久影院 | 欧美日韩一区在线观看| 99久精品国产| 99久久精品费精品国产一区二区| 国产精品一线二线三线| 久久精品72免费观看|