如何为昆明地区的企业寻找合适的网站建设公司,以下载安卓应用商店?
摘要:网站建设公司昆明,安卓应用商店下载,网站代理怎么设置,Wordpress query 参数hello,大家好,这里是bang___bang_,在上两篇
网站建设公司昆明,安卓应用商店下载,网站代理怎么设置,Wordpress query 参数hello#xff0c;大家好#xff0c;这里是bang___bang_#xff0c;在上两篇中我们讲解了进程的概念、状态和进程地址空间#xff0c;本篇讲解进程的控制#xff01;#xff01;包含内容有进程创建、进程等待、进程替换、进程终止#xff01;#xff01;
附上前2篇文章… hello大家好这里是bang___bang_在上两篇中我们讲解了进程的概念、状态和进程地址空间本篇讲解进程的控制包含内容有进程创建、进程等待、进程替换、进程终止
附上前2篇文章链接
Linux——操作系统进程详解建议收藏细品_bang___bang_的博客-CSDN博客
[Linux]环境变量 进程地址空间虚拟内存与物理内存的关系_bang___bang_的博客-CSDN博客 目录 1️⃣计算机四个重要概念
2️⃣进程创建
fork函数初识
fork返回值
fork调用失败原因
3️⃣进程终止
进程终止的场景
退出码
查看退出码echo
字符串格式查看错误信息strerror
退出码讲解
进程常见退出方法
_exit函数——系统调用接口
exit函数——C库函数
return退出
4️⃣进程等待
进程等待必要性
进程等待的方法
wait方法
waitpid方法
5️⃣进程程序替换
替换原理
替换函数
execl函数
execv函数
execlp函数
execle函数
execvp函数
execvpe函数
execve函数系统调用 1️⃣计算机四个重要概念
✦竞争性系统进程数目众多而CPU资源只有少量甚至1个所以进程之间是具有竞争属性的。为了高效完成任务更合理竞争相关资源便具有了优先级
✦独立性多进程运行需要独享各种资源多进程运行期间互不干扰
✦并行多个进程在多个CPU下分别同时进行运行这称之为并行
✦并发多个进程在一个CPU下采用进程切换的方式在一段时间之内让多个进程都得以推进称之为并发
2️⃣进程创建
fork创建子进程操作系统都做了什么 fork创建子进程系统多了一个进程。 进程内核数据结构进程代码和数据
fork函数初识 创建子进程失败返回-1成功返回子进程PID给父进程0返回给子进程
进程调用fork当控制转移到内核中的fork代码后内核做 ★分配新的内存块和内核数据结构给子进程 ★将父进程部分数据结构内容拷贝至子进程 ★添加子进程到系统进程列表当中 ★fork返回开始调度器调度
在进程详解篇我提到过父子进程代码共享。
那么有个问题是父进程所有的代码子进程都共享呢还是在fork函数之后的代码才共享 代码共享猜想图 写一段fork代码看看结果提示眼见不一定为实
#includestdio.h
#includeunistd.h
#includesys/types.h
#includestdlib.h
int main()
{int num0;int*pnum;printf(Begin:pid:%d,num:%p\n,getpid(),p);pid_t idfork();if(id0){perror(fork);}printf(After:pid:%d,fork return %d,num:%p\n,getpid(),id,p);return 0;
}fork验证结果图 根据结果我们发现Begin在子进程并没有执行但这能表示子进程没有共享父进程的Begin代码吗
答案是不是的实际上子进程也共享到了父进程的Begin语句只不过CPU中有个EPI寄存器他保存了进程的上下文信息使得子进程以为fork是他的开始从fork语句后开始执行 实际代码共享图 创建子进程给子进程分配对应的内核空间结构必须子进程自己独有因为进程具有独立性理论上子进程也要有自己的代码和数据可是一般而言我们创建的子进程没有加载的过程代码和数据一般是从磁盘上加载到的程序也就是说子进程没有自己的代码和数据所以子进程只能“使用”父进程的代码和数据 代码都是不可被写的只能读取所以父子共享 数据可能被修改的所以必须分离
fork返回值 ★子进程返回0 ★父进程返回子进程的pid ★出错返回-1
为什么fork会有2个返回值是因为写时拷贝
在进程地址空间中我有讲解这里再简单讲解一下
基于进程的独立性父子进程的数据必须分离但是对于只读的数据我们也进行拷贝的话对内存太过于浪费所以出现了一种新的技术写时拷贝技术
写时拷贝是一种延时申请技术可以提高整机内存的使用率。
