赞
踩
从上面图可以看出,进程切换有两种方式:
1.当进程由于需要等待某种资源而无法继续执行下去,这个时候只能主动将自己挂起(调用schedule函数),引发一次任务调度过程;
2.另外一种是进程欢快执行,但是由于各种调度事件的发生(例如时间片用完)而被迫让出CPU,被其他进程抢占。
task_struct --> unsigned int rt_priority;
在OS下如何查看进程的状态信息,/proc/#pid/status中可以说明一个进程运行在哪些cpu上,并且进程分配内存必须在哪些内存节点上:
curtis@curtis-virtual-machine:/mnt/hgfs/share/write_code/cpu_mask_low$ sudo cat /proc/10/status Name: rcuob/0 State: S (sleeping) Tgid: 10 Ngid: 0 Pid: 10 PPid: 2 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 64 Groups: NStgid: 10 NSpid: 10 NSpgid: 0 NSsid: 0 Threads: 1 SigQ: 0/15144 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: ffffffffffffffff SigCgt: 0000000000000000 CapInh: 0000000000000000 CapPrm: 0000003fffffffff CapEff: 0000003fffffffff CapBnd: 0000003fffffffff Seccomp: 0 Cpus_allowed: ffffffff,ffffffff,ffffffff,ffffffff Cpus_allowed_list: 0-127 Mems_allowed: 00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 3 nonvoluntary_ctxt_switches:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。