第一次作业:深入源码分析进程模型

挑选一个开源的操作系统,Linux深入源码分析其进程模型,具体包含如下内容:

  • 1.操作系统是怎么组织进程的:以下参考了文章编号1672-5913(2009)14-0027-01举的代码例子

使用了sort()调用创建进程:

           #include<stdio.h>

             main(){

              pid x=0;

             printf("program is ......");

            printf("in function main ");

            id = sort();

           if(id==0){

           printf("child");}

          else{

           printf("parent");

      }

}

这代码很短但是解释了进程创建,进程并发,进程父子关系等的概念。sort()调用给子进程返回0,给父进程返回pid号。因为比较好理解,所以有借鉴其代码的模型;

  • 2.进程状态如何转换(给出进程状态转换图)

(1)就绪状态——>执行状态:进程调度程序为处于就绪状态的进程分配处理机后,就进入执行状态。

(2)执行状态——>等待状态:正在执行的进程因为某件事需要等待而无法执行。

(3)等待状态——>就绪状态:进程所等待的事情发生了,于是进程从等待状态进入了就绪状态。

(4)执行状态——>就绪状态:正在执行的进程因为时间片用完而被暂停执行,或者在可抢占调度方式中优先级高的进程到来后,优先级低的被暂停执行,从而转换为就绪状态。

(5)进程状态转换图:

 

                                                                

                           I/O完成                                I/O请求

                        __________时间片到________                    

                                                           获得cpu

  • 3.进程是如何调度的

调度的含义:当系统中就绪的进程数大于系统中可用的CPU数时,可用的CPU必须选择下一个要运行的进程。在操作系统中,完成选择工作的这一部分称调度程序,该程序使用的算法称为调度算法。

调度程序应该有根据优先级来排序;

调度的实现有很多不同的算法;

  • 4.谈谈自己对该操作系统进程模型的看法

Linux感觉在老师们的眼里很常见,但是暂时在我心中和windows没有多大的区别,感觉windows安装的软件都用的挺好的,代码的打的挺舒服的。可能Linux这个操作系统各个方面都超越了windows,它的进程模型应该更加完美,但是我现在还不是很了解,不会用一长串的代码去演示什么是调度,什么是进程的转换状态,也还不知道了解了这个进程模型之后作用在哪方面。在哪一块可以运用到这个知识。

 

posted on 2018-05-01 13:50  大崽  阅读(88)  评论(0编辑  收藏  举报

导航