




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、uid 和 gid 运行进程所代表的用户之用户标识号和组标识号,通常就是执行该进程的用户。有效uid 和 gid 某些程序可以将 uid 和 gid 改变为自己私有的 uid 和 gid。系统在运行这样的程序时,会根据修改后的 uid 及 gid 判断程序的特权,例如,是否能够直接进行 i/o 输出等。通过 setuid 系统调用,可将程序的有效 uid 和 gid 设置为其他用户。在该程序映像文件的 vfs 索引节点中,有效 uid 和 gid 由索引节点的属性描述。文件系统uid 和 gid 这两个标识符和上述标识符类似,但用于检查对文件系统的访问许可时。处于用户模式的 nfs 服务器作为
2、特殊进程访问文件时使用这两个标识符。保存uid 和 gid 如果进程通过系统调用修改了进程的 uid 和 gid,这两个标识符则保存实际的 uid 和 gid。运行状态 该进程是当前正在运行的进程;或者,该进程是可以运行的进程,即正在等待调度程序将 cpu 分配给它。等待状态 进程正在等待某个事件或某个资源。这种进程又分为可中断的进程和不可中断的进程两种。可中断的等待进程可被信号中断,而不可中断的等待进程是正在直接等待硬件状态条件的进程,在任何情况下都不能被中断。停止状态 进程处于停止状态,通常由于接收到信号而停止,例如,进程在接收到调试信号时处于停止状态。僵死状态 进程已终止,但在 task
3、 数组中仍占据着一个 task_struct 结构。顾名思义,处于这种状态的进程实际是死进程。task_structfsfilesfs_structcountumask*root*pwdfiles_structcountclose_on_execopen_fsfd0fd1fd255inodeinodef_modefilef_posf_flagsf_countf_ownerf_inodef_opf_versioninode文件操作例程集图5.1 进程的文件信息 task_structmmcountmm_structpgdmmap_semmmapmmap_avlcountvm_flagsvm_en
4、dvm_area_structvm_startvm_inodevm_opscountvm_flagsvm_endvm_area_structvm_startvm_inodevm_opsvm_next进程虚拟内存数据代码0 x0000000 x10480000 x8059bbvm_next图5.2 进程的虚拟内存示意 real该定时器实时更新,到期时发送 sigalrm 信号。virtual该定时器只在进程运行时更新,到期时发送 sigvtalrm 信号。profile该定时器在进程运行时,以及内核代表进程运行时更新,到期时发送 sigprof 信号。 linux 对 virtual 和 pro
5、file 定时器的处理是相同的,在每个时钟中断,定时器的计数值减 1,直到计数值为 0 时发送信号。real 定时器的处理比较特殊。 会话 前台进程组 后台进程组 后台进程组 领头 进程 领头 进程 领头 进程 图5.3 会话和进程、进程组父进程的文件描述符子进程的文件描述符file 数据结构图5.4 父进程和子进程共享打开的文件 图5.5 竞争条件(racing conditions) 图5.6 临界区字段描述policy(策略) 系统对该进程实施的调度策略。linux 进程有两种类型的进程:一般进程和实时进程。实时进程比所有一般进程的优先级高,只有一个实时进程可以运行,调度程序就会选择该进
6、程运行。对实时进程而言,有两种调度策略,一种称为“循环赛 (round robin)”,另一种称为“先进先出 (first in first out)”。priority(优先级) 这是系统为进程给定的优先级,可通过系统调用或 renice 命令修改该进程的优先级。优先级实际是从进程开始运行算起的、允许进程运行的时间值(以 jiffies 为单位)。rt_priority(实时优先级)这是系统为实时进程给定的相对优先级。counter(计数器) 这是进程运行的时间值(以 jiffies 为单位)。开始运行时设置为 priority,每次时钟中断该值减 1。表5.4 和进程调度相关的 task_
7、struct 信息elf 可执行映象e_idente_entrye_phoffe_phentsizee_phnum代码数据p_typep_offsetp_vaddrp_fileszp_memszp_flagsp_typep_offsetp_vaddrp_fileszp_memszp_flagse l f0 x804809052322pt_load00 x80480006853268532pf_r, pf_xpt_load685360 x8059bb822004248pf_r, pf_w物理头物理头图5.7 一个简单的 elf 可执行文件的布局 值c 语言宏名用途1sighup从终端上发出的结束
8、信号2sigint来自键盘的中断信号(ctrl-c)3sigquit来自键盘的退出信号(ctrl-)8sigfpe浮点异常信号(例如浮点运算溢出)9sigkill该信号结束接收信号的进程14sigalrm进程的定时器到期时,发送该信号15sigtermkill 命令发出的信号17sigchld标识子进程停止或结束的信号19sigstop来自键盘(ctrl-z)或调试程序的停止执行信号进程 1file 结构 f_mode f_pos f_flags f_count f_owner f_inode f_version f_op进程 2file 结构 f_mode f_pos f_flags f_c
9、ount f_owner f_inode f_version f_op inode 数据页管道写操作集管道读操作集图5.8 管道示意图 msqid_dsipc*msg_last*msg_firsttimes*wwait*rwaitmsg_qnummsg*msg_nextmsg_type*msg_spotmsg_stimemassagemsg_tsmsg_tsmsg*msg_nextmsg_type*msg_spotmsg_stimemassagemsg_tsmsg_tsmsg_qnum图5.9 system v ipc 机制消息队列 semid_dsipctimessem_basesem_pe
10、ndingsem_pending_lastsem_nsemsundoproc_nextid_nextsemadjsemidsem_undonextprevundosleepersem_queuepidstatussmasopsnsops信号量数组图5.10 system v ipc 机制信号量 shmid_dsipcshm_segsztimesshm_npagesshm_pagesattachesptepteptevm_area_structvm_next_sharedvm_area_structvm_next_shared图5.11 system v ipc 机制共享内存 nextsync*
11、routine()*datanextsync*routine()*data任务队列tq_structtq_struct图 5.12 任务队列数据结构 timer(定时器) 该队列用于对需要在系统时钟周期之后尽可能快地完成的任务进行排队。每次时钟周期中,都要检查队列是否为空,如果不为空则定时器队列底层处理过程将激活此任务。在随后运行的调度程序中,定时器队列底层处理例程被调用,从而定时器队列中排队的任务也被处理。immediate(立即) 该队列在调度程序处理活动的底层处理程序时处理。因为 immediate 底层处理过程的优先级较低,因此比起定时器底层处理过程,对这些任务的处理要稍微拖后一些。scheduler(调度程序) 该任务队列由调度程序直接处理。该队列用来支持系统中的其他任务队列,这种情况下,要运行的任务实际是处理某个任务队列的例程。nexttasknexttaskwait_queuewait_queuetask_struct.task_struct.图 5.13 linux 中的等待队列 count(计数) 该域用来跟踪希望访问该资源的进程个数。正值表示资源是可用的,而负值或零表示有进程正在等待该资源。该计数的初始值为 1,表明同一时刻有且只能有一个进程可访
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论