操作系统互斥的实现方法

来源:互联网 发布:bi数据平台 编辑:程序博客网 时间:2024/06/18 07:00

互斥是由程序共享资源所引起的,某一个资源不允许同时多个程序访问,那么解决方法是要么访问其他空闲的同种资源,要么等待这一资源。等待这一资源就要在操作系统实现互斥:当一个进程正在使用资源的时候,其他希望使用该资源的程序必须等待,当该进程使用完并释放资源后,才允许其他进程去访问此资源,我们称这种进程之间的互相制约关系叫做互斥。

互斥的实现方法

软件方法

算法一:

int turn = 0;P0: {        do {            while(turn == 0)            P0的临界区代码CS0;            turn = 1;            进程的其他代码codesegment1;           }        while(ture);    }P1: {        do {            while(turn == 1)            P1的临界区代码CS1;            turn = 0;            进程的其他代码codesegment2;           }        while(true);    }

算法二:

//枚举类型enum boolean {true, false};boolean flag[2] = {false, false};    P0 {        do {            while flag[1];            flag[0] = true;            CS0;            flag[0] = false;            codesegment1;           }        while(true);       }    P1: {         do {             while flag[0];             flag[1] = true;             CS1;             flag[1] = false;             codesegment2;            }         while(true);        }

算法三:

enum boolean{false, true};boolean flag[2] = {false, false};    P0 {        do {            flag[0] = true;            while flag[1];            CS0;            flag[0] = false;            codesegment1;           }        while(true);       }    P1: {         do {             flag[1] = true;             while flag[0];              CS1;             flag[1] = false;             codesegment2;            }         while(true);        }

算法四:

enum boolean{false, true};boolean flag[2] = {false, false};int turn;    P0 {        do {            flag[0] = true;            turn = 1;            while flag[1] && turn == 1;            CS0;            flag[0] = false;            codesegment1;           }        while(true);       }    P1: {         do {             flag[1] = true;             turn = 0;             while flag[0] && turn == 0;              CS1;             flag[1] = false;             codesegment2;            }         while(true);        }
0 0
原创粉丝点击