日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

进程相关概念

發(fā)布時間:2023/11/30 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进程相关概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??????1.進程相關概念

??????進程是代碼的一次動態(tài)執(zhí)行,擔當分配系統(tǒng)資源的角色,進程信息是被放在一個一個數據結構中,是一個結構體task_struct

??????2.進程控制塊內容

????????????????????

//linux下的進程控制塊 struct task_struct {volatile long state;// 說明了該進程是否可以執(zhí)行,還是可中斷等信息unsigned long flags;// Flage 是進程號,在調用fork()時給出int sigpending;// 進程上是否有待處理的信號 mm_segment_t addr_limit;// 進程地址空間,區(qū)分內核進程與普通進程在內存存放的位置不同0 - 0xBFFFFFFF for user - thead0 - 0xFFFFFFFF for kernel - threadvolatile long need_resched; //調度標志,表示該進程是否需要重新調度, 若非 0, 則當從內核態(tài)返回到用戶態(tài),會發(fā)生調度 int lock_depth;//鎖深度 long nice; //進程的基本時間片 unsigned long policy; //進程的調度策略,有三種 實時進程:SCHED_FIFO,SCHED_RR 分時進程:SCHED_OTHER struct mm_struct mm; //進程內存管理信息 int processor; //若進程不在任何CPU上運行。cpus_runnable 的值是0,否則是1。 這個值在運行隊列被鎖時更新. unsigned long cpus_runnable, cpus_allowed;struct list_head run_list; //指向運行隊列的指針 unsigned long sleep_time; //進程的睡眠時間 struct task_struct next_task, prev_task; //用于將系統(tǒng)中所有的進程連成一個雙向循環(huán)鏈表,其根是init_task. struct mm_struct active_mm;truct list_head local_pages; //指向本地頁面unsigned int allocation_order, nr_local_pages;struct linux_binfmt binfmt;// 進程所運行的可執(zhí)行文件的格式int exit_code, exit_signal;int pdeath_signal;// 父進程終止是向子進程發(fā)送的信號unsigned long personality; // Linux 可以運行由其他UNIX操作系統(tǒng)生成的符合iBCS2標準的程序int did_exec : 1; //按POSIX要求設計的布爾量,區(qū)分進程正在執(zhí)行從父進程中繼承的代碼,還是執(zhí)行由execve裝入的新程序代碼 pid_t pid;// 進程標識符,用來代表一個進程pid_t pgrp; //進程組標識,表示進程所屬的進程組pid_t tty_old_pgrp; //進程控制終端所在的組標識pid_t session; //進程的會話標識pid_t tgid;int leader; //標志,表示進程是否為會話主管struct task_structp_opptr p_pptr, p_cptr, p_ysptr, p_osptr;struct list_head thread_group;// 線程鏈表struct task_struct pidhash_next; //用于將進程鏈入HASH表pidhash struct task_struct pidhash_pprev;wait_queue_head_t wait_chldexit; //供wait4()使用struct completion vfork_done; //供vfork() 使用 unsigned long rt_priority; // 實時優(yōu)先級,用它計算實時進程調度時的weight值,unsigned long it_real_value, it_prof_value, it_virt_value;unsigned long it_real_incr, it_prof_incr, it_virt_value;struct timer_list real_timer;//指向實時定時器的指針struct tms times; //記錄進程消耗的時間,unsigned long start_time;//進程創(chuàng)建的時間long per_cpu_utime[NR_CPUS], per_cpu_stime[NR_CPUS];//記錄進程在每個CPU上所消耗的用戶態(tài)時間和核心態(tài)時間mm fault and swap info : this can arguably be seen as eithermm - specific or thread - specific//內存缺頁和交換信息://min_flt, maj_flt累計進程的次缺頁數(Copy on Write頁和匿名頁)和主缺頁數(從映射文件或交換設備讀入的頁面數);//nswap記錄進程累計換出的頁面數,即寫到交換設備上的頁面數。//cmin_flt, cmaj_flt, cnswap記錄本進程為祖先的所有子孫進程的累計次缺頁數,主缺頁數和換出頁面數。在父進程//回收終止的子進程時,父進程會將子進程的這些信息累計到自己結構的這些域中unsigned long min_flt, maj_flt, nswap, cmin_flt, cmaj_flt, cnswap;int swappable : 1; //表示進程的虛擬地址空間是否允許換出process credentials ///進程認證信息//uid,gid為運行該進程的用戶的用戶標識符和組標識符,通常是進程創(chuàng)建者的uid,gid //euid,egid為有效uid,gid//fsuid,fsgid為文件系統(tǒng)uid,gid,這兩個ID號通常與有效uid,gid相等,在檢查對于文件系統(tǒng)的訪問權限時使用他們。//suid,sgid為備份uid,giduid_t uid, euid, suid, fsuid;gid_t gid, egid, sgid, fsgid;int ngroups; //記錄進程在多少個用戶組中gid_t groups[NGROUPS]; //記錄進程所在的組kernel_cap_t cap_effective, cap_inheritable,cap_permitted;//進程的權能,分別是有效位集合,繼承位集合,允許位集合int keep_capabilities : 1;struct user_struct user;limitsstruct rlimit rlim[RLIM_NLIMITS]; //與進程相關的資源限制信息unsigned short used_math; //是否使用FPUchar comm[16]; //進程正在運行的可執(zhí)行文件名file system info //文件系統(tǒng)信息int link_count, total_link_count;struct tty_struct tty; NULL if no tty 進程所在的控制終端,如果不需要控制終端,則該指針為空unsigned int locks; How many file locks are being heldipc stuff //進程間通信信息struct sem_undo semundo; //進程在信號燈上的所有undo操作struct sem_queue semsleeping; //當進程因為信號燈操作而掛起時,他在該隊列中記錄等待的操作CPU - specific state of this task //進程的CPU狀態(tài),切換時,要保存到停止進程的task_struct中struct thread_struct thread;filesystem information; 文件系統(tǒng)信息struct fs_struct fs;open file information //打開文件信息struct files_struct files;signal handlers //信號處理函數spinlock_t sigmask_lock;Protects signal and blockedstruct signal_struct sig; //信號處理函數,sigset_t blocked; //進程當前要阻塞的信號,每個信號對應一位struct sigpending pending; //進程上是否有待處理的信號 }
??????3.進程狀態(tài)

??????R 運行狀態(tài),S 睡眠狀態(tài), D 狀態(tài)深度睡眠狀態(tài),(在該狀態(tài)下的進程不能被其他進程喚醒,只有自己可以喚醒自己),T 停止狀態(tài), t 追加狀態(tài), X 死亡狀態(tài), Z 僵尸狀態(tài)

??????4.僵尸進程

??????定義:;所謂僵尸進程就是進程處于一個僵死的狀態(tài),即進程已經退出,但其父進程沒有得到子進程的退出信息,此時的進程就會成為一個僵尸進程。
??????來看一段代碼

#include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<stdlib.h>int main() {pid_t id;id = fork();if(id < 0){perror("fork");exit(0);}else if(id == 0){printf("I am child\n");sleep(1);}else{printf("I am father\n");sleep(15);}return; }


??????于是看到了系統(tǒng)中出現了一個僵尸進程。在此必須注意,僵尸進程的父進程如果一直不去讀取該進程的信息,則這個進程將會一直處于將是狀態(tài),并且該進程的PCB也將一直被維持,那么就會造成內從泄露。

??????5.孤兒進程

????????孤兒進程就是父進程先于子進程退出,此時的子進程就會變成孤兒進程,那是不是就是說該進程的信息就沒人來讀取嗎?答案是否定的。此時的子進程會被1號init進程領養(yǎng),于是該子進程就會變成孤兒進程。

#include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<stdlib.h>int main() {pid_t id;id = fork();if(id < 0){perror("fork");exit(0);}else if(id == 0){printf("I am child\n");sleep(1);}else{printf("I am father\n");sleep(15);}return; }

??????????
????????監(jiān)視可以看到并沒有僵尸狀態(tài),則說明子進程退出時的信息被其他進程讀取,進而也說明進程被領養(yǎng)。

??????6.查看系統(tǒng)進程

????????查看系統(tǒng)進程可以用ps,或者top命令來查看
????????
????????其中 PRI 是優(yōu)先級,數字越小優(yōu)先級越高,而 nice 是用來修改 PRI 的 PRI(new) = PRI(old) + nice, nice 的取值范圍是 -20 到 19, 創(chuàng)建進程時 PRI 默認是80, 而 nice 默認為 0。
????????進城之間具有競爭性, 系統(tǒng)進程數目眾多, 而 CPU 的資源有限,因此為了能夠高效完成任務,合理競爭相關資源,進程之間就需要有一個優(yōu)先級,確保CPU正常工作;同時進程在運行期間獨享各自資源,互不干擾,因此進程是具有獨立性的;在多個CPU 的狀況下, 進程之間可以同時工作,因此進程具有獨立性;當只有一個CPU時,為了讓每個進程得以運行,CPU采用進程切換的方式,以確保在一段時間里每一個進程都可以得以運行,因此進程具有并發(fā)性。

總結

以上是生活随笔為你收集整理的进程相关概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女人十八岁毛片 | 最近免费高清mv | 久操视频免费看 | 国产精品毛片av | 久久午夜电影网 | 天天躁日日躁狠狠躁av | 日韩插插插 | 欧美日韩亚洲精品内裤 | 日本一卡二卡在线 | 无码人妻精品一区二区中文 | 福利视频亚洲 | 一区二区在线精品 | 伊人丁香| 日本黄色中文字幕 | 日本四级电影 | 农民人伦一区二区三区 | 亚洲综合免费视频 | 五月丁香啪啪 | 看片一区| 香蕉视频三级 | 久久精品视频偷拍 | 欧美日韩在线播放三区四区 | 亚洲老女人 | 精品h视频 | 欧美老女人xx | 伊人9999 | 国产精品视频一区二区三区不卡 | 丝袜脚交免费网站xx | 成人免费黄色网址 | 亚洲精品在线观看视频 | 99视频久| 中文字幕乱码人妻二区三区 | 不卡中文 | 中文字幕另类 | 亚洲综合婷婷久久 | 四虎成人网 | 曰本三级日本三级日本三级 | 亚洲h在线观看 | 丰满秘书被猛烈进入高清播放在 | 午夜爽爽视频 | 久久久久久久久国产精品 | 姐姐的秘密韩剧免费观看全集中文 | 久久成人人人人精品欧 | 免费午夜视频在线观看 | 日韩av在线免费播放 | 亚洲精品一区二区三区不卡 | 欧美日韩在线观看免费 | 99视频国产精品 | 逼逼av网站 | 在线欧美国产 | 中文久久字幕 | 亚洲AV无码精品黑人黑人 | 国产伦精品一区二区三区照片91 | 美国特色黄a大片 | 久久黄色网 | 国产精品久久久久久久久夜色 | 欧美区一区 | 亚洲精品88 | 亚洲成年网| 精品国产九九 | 福利一区三区 | 韩国三级做爰视频 | 亚洲国产精品久久久久爰色欲 | 999免费视频 | 久久观看最新视频 | 日本色综合网 | 亚洲狼人干 | 葵司一区二区 | www色com| 大学生一级片 | 在线天堂网 | 免费观看成人毛片 | 成人黄色片免费看 | 捆绑无遮挡打光屁股 | 综合色婷婷一区二区亚洲欧美国产 | 欧美七区 | 2018国产大陆天天弄 | 天堂av资源在线 | 男女福利视频 | 超碰干| 亚洲自拍偷拍一区二区三区 | 色妞av| 免费在线观看你懂的 | 日韩伦理av | 精品人人妻人人澡人人爽牛牛 | 天天操 夜夜操 | 女大学生的家政保姆初体验 | 亚洲婷婷综合网 | 亚洲一区二区小说 | 日批的视频 | 四虎网站在线播放 | 国产亚洲欧美在线视频 | 国产经典自拍 | 免费观看毛片视频 | 伊人视频在线观看 | 免费在线观看一区二区三区 | 美女扒开让男人桶爽 | 精品无码国产污污污免费网站 | 九九免费 |