加深理解进程基本状态转化
来源:互联网 发布:和淘宝直播合作价格 编辑:程序博客网 时间:2024/06/05 14:06
一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程称为进程。简言之,进程是程序的一次执行活动,即进程就是程序的一次执行,是一个动态的过程。
随着技术发展,为了最大化利用内存资源,又引入了进程优先级。一些低优先级进程可能等待较长时间,从而被对换至外存。目的是:
1.提高处理机效率:就绪进程表为空时,OS将阻塞进程从内存中“挂起”到磁盘的“挂起队列”,再从该队列选另一进程进入内存,或接受一个新进程的请求。
2.为运行进程提供足够内存:资源紧张时,暂停某些进程,如:CPU繁忙(或实时任务执行),内存紧张
3.用于调试:在调试时,挂起被调试进程(从而对其地址空间进行读写)
之后便得到了双挂起的进程状态转化模型
下面有一个简单程序解释了进程的状态转化
#include <stdio.h>#include <Windows.h>#include <iostream>#include <WinBase.h>using namespace std;void SubThread(){ int i; for(i=0;i<5;i++){ cout<<"SubThread "<<i<<endl; Sleep(2000); }}void main(){ cout<<"CreatThread"<<endl;//创建新进程 DWORD IDThread; HANDLE hThread; hThread=CreateThread(NULL, // no security attributes 0, // use default stack size (LPTHREAD_START_ROUTINE)SubThread, // thread function NULL, // no thread function argument 0, // use default creation flags &IDThread); // returns thread identifier if(hThread==NULL) cout<<"Creat Thread error"<<endl; int i; for(i=0;i<5;i++){ cout<<"Main Thread "<<i<<endl; if(i==1){ if(SuspendThread(hThread)==0xFFFFFFFF) cout<<"Suspend thread error"<<endl; else cout<<"Suspend thread is ok"<<endl; } if(i==3){ if(ResumeThread(hThread)==0xFFFFFFFF) cout<<"Resume thread error"<<endl; else cout<<"Resume thread id ok"<<endl; } Sleep(4000); }}
输出的结果应该是:
CreateThread
MainThread 0
SubThread 0
SubThread 1
MainThread 1
Suspend thread is ok
MainThread 2
MainThread 3
Resume thread is ok
SubThread 2
SubThread 3
MainThread 4
SubThread 4
这个程序分析的要点就在于:父进程运行到Sleep()时被挂机起到外存,处于就绪队列中的子进程开始运行。即时刻关注处于内存的Ready队列和处于外存的Ready队列(被挂起)。(此处不考虑双cpu等特殊情况)改变Sleep()中的值会导致输出结果的改变。
阅读全文
0 0
- 加深理解进程基本状态转化
- linux进程状态转化图
- 进程的基本状态
- 进程的基本状态
- C++模拟进程状态的转化
- 进程五种基本状态
- linux系统进程状态理解
- hdu4034floyd加深理解
- sql 语言理解加深
- synchronized 关键字 加深理解
- Visitor模式加深理解
- DeepID2文章加深理解
- DeepID2文章加深理解
- 加深理解BroadcastRecever
- 进程的状态以及状态转化图、导致转化的事件
- 进程的三种基本状态
- 进程的三个基本状态切换
- 进程的基本状态及其转换
- Python numpy函数:zeros()、ones()、empty()
- reverse-linked-list-ii
- 适配iOS11,适配iPhoneX,适配安全区的几个文章和宏
- 选课——动态规划
- 树莓派新手指引
- 加深理解进程基本状态转化
- Websocket SSL加密之android端(带重连)
- Linux常用命令(四)-压缩解压缩,网络及关机重启
- 系统管理操作
- 百度开源移动端深度学习框架 MDL
- 余弦窗(汉宁窗)的作用——图像预处理
- c++ 文件读写 core dump
- 框架学习与探究之定时器--Quartz.Net
- Android 权限检查EasyPermissions