多进程是怎么回事

来源:互联网 发布:mac地址查询品牌 ieee 编辑:程序博客网 时间:2024/04/28 09:48

在从接触到电脑,就一直有个疑惑为什么电脑可以同时运行多个程序,照理说只有一个Cpu,为什么呢


在系统启动时,一般都是先启动一个主进程,其他的进程都是由他派生而来,什么是派生的,说白了就是受管理的一方(仔细想想什么是受管理)。


说到这,我们得先说说,为什么你单击一下桌面的图标,为什么这个程序就运行了呢:

第一点:当我们运行一个程序的时候,这个程序运行的是在系统之上运行的,换句话说,这个程序是受到操作系统管理,那是怎么管理的呢--->>系统会生成一个循环的队列(任务队列),想其中添加有执行的程序信息(程序在内存中的什么地方,现在已经执行到了哪一步这类的数据)


第二点:当我们双击程序的图标,系统首先将会从磁盘上将这个程序加载到内存,并开辟一个内存空间来存储,而这段内存空间中中存放的其实就是cpu的要执行的指令集(运行在虚拟机上的除外,虚拟机的作用就是将平台无关的指令序列转换为本地的机器码)

例:10101100    01010011   11111111    

操作        左操作数      右操作数

第三点:既然已经有了我们要指令的指令集,那就需要一个游标,制定当前需要执行的到底是哪个指令了,这就是pc指针,pc指针就是个寄存器,pc寄存器中保存着你要执行的机器码在内存中的存储地址,这样程序就可以一次执行了

第四点:已经弄明白程序是怎么执行的,系统的多进程是不是已经有些眉目了呢。没错,就是要动态的改变当前pc指针所指向的地址(有木有一点想明白)。

接着原来的方向说,什么是受管一方呢,其实操作系统原生的进程只有一个,在这个进程中,他会使用轮询的方法,轮询什么呢,就是上面所讲的第一点,轮询任务队列,首先会设置一个定时器(要不然怎么轮询呢,当然了,这里只是剖析一下实现原理,具体的线程调度方法:抢占调度,优先级什么呢还很多呢)------>>有了时间片,这下应该知道时间片轮转速算法是什么了吧

与进程相对的还有线程,线程是工作在进程内部的,划分原理差不多,当然啦,现在的多核计算机,已经可以并行执行多个程序喽

0 0