北京网站建站,WordPress仿百度贴吧主题,呼市网站建设,wordpress 调用时间编写一个程序模拟进程 查看进程状态 修改代码后发现进程状态为由S变成R R为运行态#xff0c;S为阻塞态
第一次为S是因为调用了外设#xff08;printf调用屏幕外设#xff09;#xff0c;实际上应该为R#xff0c;S状态轮换#xff0c;但是R太快了#xff0c;所以每次…编写一个程序模拟进程 查看进程状态 修改代码后发现进程状态为由S变成R R为运行态S为阻塞态
第一次为S是因为调用了外设printf调用屏幕外设实际上应该为RS状态轮换但是R太快了所以每次查到了都为S。
R为前台运行运行bash指令无反应。
R加入 为后台运行可以运行bash指令此时只能用kill指令来取消进程 大部分的程序都属于sleep状态等待资源输入比如scanf和bash命令行。
D状态Disk sleep深度睡眠的阻塞态
S状态叫做前度睡眠可以被外部操作唤醒如外部输入kill指令关掉进程。
当进程把数据从内存写入磁盘进程进入S状态。
当资源压力太大操作系统可以杀掉进程为了防止写入磁盘的进程被杀掉进程进入D状态进程就不能被杀死。
D状态不响应操作系统的任何操作。当高I/O状态下才能看到D状态。
T状态暂停进程 19号命令取消进程18号命令唤醒暂停的指令。 T状态和S状态区别S状态常用于等待资源。两种都是阻塞状态
t,X,Z状态
t状态trace stop)暂停状态的一种同样也是阻塞状态常被用于断点处
X(dead):终止态进程结束
Z(zombie)僵尸态进入X状态前进入Z状态。
Z状态会在X状态前维持进程状态等信息。传递信息等给父进程。
编写父子进程此时父进程没有对子进程做任何事情子进程退出保持僵尸态。 进程一般退出时如果父进程没有主动回收子进程信息子进程一直让自己出于z状态进程的相关资源尤其是task_struct结构体不能被释放。
如果父进程一直不释放会造成资源浪费。
父进程先于子进程销毁 此时运行的子进程的父进程变成操作系统操作系统pid为1 该进程被系统领养该子进程也叫孤儿进程该进程的资源被系统回收。
直接kill能让父子进程都销毁。
进程优先级
进程饥饿如果进程长时间得不到cpu资源该进程的代码长时间无法得到推进该进程的饥饿问题。优先权高的进程有优先执行权利。 UID表示执行者身份boki的uid就是 1002
PRI(priority):80这个值越小优先级越高
NI(nice)进程的nice值进程优先级修正数据默认的nice值范围是[-20,19)。
PRI(new)PRI(old) nice 通过修改nice值可以修改优先级nice改成负数PRI变小优先级变高
nice指令和renice指令可以修改优先级
查找进程PID top指令按r修改进程的nice值修改后只会是-20 其中PRI(old)是从永远从80开始
哈希开散列法实现操作系统优先级调度 struct runqueue中有running和waiting两个指针数组。
PCB会根据PRI的值映射到running数组中数组跟据优先级由上往下获取取PCB运行进程如果优先级相同则在添加在PCB1后先从左往右再往下直到数组中全部进程运行完毕。
waiting是镜像数组当负责接收进程把running中的提取和waiting的接收分开接收规则和runing一样。当running数组空了后wait和run指针指向的数组swap()。
用bitmap来判断running数组是否为空。根据01判断数组对应位置是否有PCB指针。 进程的其他概念 竞争性系统进程数目比较众多cpu资源只有一个 独立性多进程运行独享各种资源多进程运行期间互不干扰 并行多个进程在多个cpu分别同时运行称为并行 并发多个进程在一个cpu下采用进程切换的方式在一段时间内让多个进程得以推进 进程切换进程在CPU上离开时要将上下文数据保存好甚至带走 保存的目的 进程被切换的时候保存上下文恢复上下文