CPU管理与多进程图像
CPU管理与多进程图像
多进程操作系统的由来
多进程图像对操作系统非常重要,是操作系统的核心部分,明白了它之后对于操作系统就明白了一大部分。
那么多进程图像是怎么想出来的呢?
操作系统的核心就是管理硬件,CPU是计算机的核心硬件,操作系统就是在管理cpu的时候想出了多进程图像,并且通过多进程图像将cpu管理好了,CPU管理好了,其他硬件自然带动起来了,所以说多进程图像是操作系统的核心图像。
这一节是以后操作系统文章的一个总体概念所以详细的东西就不多说了
操作系统是如何支持多进程图像的
多进程给上层用户的感觉就是:同时启动了多少个进程
操作系统只需要把这些进程记录好,按照合理次序推进,让用户感觉这几个进程同时在运行。
前面说过,main.c文件中有这样两行:
if (!fork())
{init();}
这个其实就是创建了第一个进程。就是创建第一个进程,在init中创建了shell,shell对应windows就是启动了windows桌面。在shell中有如下一段代码**init()**中
int main(int argc,char*argv[])
{
while(1)
{
scanf("%s", cmd);
if(!fork())
{
exec(cmd);
}
wait();
}
}
大意就是:等待用户输入一个命令,然后创建一个进程,运行它,等待下一个命令的到来,直到关机。
操作系统是如何组织多进程的?
操作系统感知、组织进程全靠PCB 。如何组织呢?在PCB这个结构体之上形成一些数据结构(队列);进程可能有几种状态,有正在执行的进程(运行态),有准备好了只等cpu来执行的进程(就绪态),有还缺少一些东西没准备好在等待的进程(阻塞态)。操作系统可以通过进程对应的PCB来知道进程现在所处的状态。根据进程的状态转化可以形成如下的进程状态图
新建态表示进程刚创建出来时所处的状态,终止态表示进程运行完之后所处的状态。
箭头表示操作系统的控制作用 ,操作系统通过控制进程所处的状态来推进进程的运行;对进程进行管理。
根据PCB 、状态形成不同的队列,放在不同的位置。
操作系统如何交替(切换,非常复杂)?
包括调度和切换 ,调度是指从就绪队列中选择哪一个进程进入运行态。切换就是如何保留现场之后进入。
新的进程,然后还能回来。
调度是一个很深刻的问题,有很多算法问题;只会讲FIFO:公平,但是没有考虑进程执行
的任务的区别。
Priority优先级:给每个任务设置优先级。
切换:首先保留上一个进程的执行现场 ,就是将cpu里面的东西保存在进程对应的PCB里面;
转到另外一个进程将进程PCB里面的东西放到CPU里面去;问题就是这些都要精细的控制,控制每个寄存器。
多进程如何影响?
多个进程之间会相互影响,为什么会相互影响呢?因为多个进程都是存放在内存上面的,如果进程A在执行的时候操作了进程B所在的内存,那么当进程B运行的时候肯定会出问题呀,因此必须要避免。如何避免呢?
对地址进行分离,这是内存管理的内容 ,基本思路是给每一个进程都分配一个地址映射表 ,进程A中操作的地址经过映射表之后会映射到实际的物理地址 ,因为每一个进程都有一个映射表(映射算法不同),所以不同进程代码中相同的地址映射到的实际地址是不同的,也就是说进程中的地址可以一样,因为实际操作的地址不同呀。
比如进程A中的[100]经过地址映射到物理地址是80,进程B经过地址映射表之后映射到的地址是20,这样即使进程A和进程B中都操作了[100]这个地址也无所谓,因为实际操作的物理地址是不一样的。
注意这个不是使用CPL和DPL来解决的,CPL和DPL只是用来区分用户态和核心态的。
上一篇: 打印功能-打印预览,打印部分页面
下一篇: Linux C语言 shell
推荐阅读
-
Linux进程和线程的基础与管理
-
Mac下Supervisor进程监控管理工具的安装与配置
-
Linux进程和线程的基础与管理
-
详解Supervisor安装与配置(Linux/Unix进程管理工具)
-
【python】pyenv与virtualenv安装,实现python多版本多项目管理
-
Brain2CPU PhotoSelector怎么激活 图像管理软件激活安装图文教程
-
Linxu:进程的管理与进程的延迟性&周期性调度
-
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
-
关于Linux下进程的详解【进程查看与管理】
-
Oracle的体系结构、进程管理与结构组件详细介绍