Home Database Mysql Tutorial 操作系统之进程管理(2)

操作系统之进程管理(2)

Jun 07, 2016 pm 03:00 PM
main common study us operating system manage process

上篇博文我们主要共同学习了进程的一些基本概念,这次我们就要来分析一下进程间的相互作用,即进程的互斥、同步与通信。 进程互斥是进程之间所发生的一种间接性相互作用,这种相互作用是进程本身所不希望的,也是运行进程感觉不到的。进程互斥既可能发生在相

上篇博文我们主要共同学习了进程的一些基本概念,这次我们就要来分析一下进程间的相互作用,即进程的互斥、同步与通信。

         进程互斥是进程之间所发生的一种间接性相互作用,这种相互作用是进程本身所不希望的,也是运行进程感觉不到的。进程互斥既可能发生在相关的进程之间,也可能发生在不相关的进程之间。

         几个概念需要了解:

         共享变量:多个进程均需访问的变量称为共享变量。

         临界区:访问共享变量的程序段称为临界区,也称为临界段。

         临界资源:一次只允许一个进程使用的资源。

         进程互斥:两个或者两个以上的进程不能同时进入关于同一组共享变量的临界区,否则可能发生与时间有关的错误,这种想象称为进程互斥。

         那么如何实现进程互斥呢?

         先给出临界区的框架:

       操作系统之进程管理(2)

         实现互斥就是要编写entrydiv和exit div,保证同一时刻最多只有一个进程处于临界区内。

         下面从软件和硬件两个方面来描述进程互斥的实现:

   l  进程互斥的软件实现

(1)      Dekker互斥算法

      操作系统之进程管理(2)

        操作系统之进程管理(2)                            

         判断一个算法的正确性从三个方面来说明:

u  互斥性原则:任意时刻至多只能有一个进程处于关于同一组共享变量的临界区之中。

u  进展性原则:当临界区空闲时,只有那些执行entry div和exit div的进程参与下一个进入临界区进程的决策,该决策不能被无限期的推迟。

u  有限等待性原则:一个请求进入临界区的进程应当在有限的等待时间内获得进入该临界区的机会。

我们来看看上述算法是否符合这些原则:

先解释一下定义的数据结构:intflag[2];//初值为0  int turn;//初值为0或1

         前者表示进程是想进入或者已经进入临界区,后者表示当前轮流次序。

1.        互斥性:假定P0已经进入临界区,此时flag[0]=1成立,P1欲进入临界区必将在其外层while循环处等待,因而满足互斥性;

2.        进展性:若只有一个进程(设为P0)想要进入其临界区,由于flag[1]=0,P0结束外层while循环,进入其临界区。若两个进程都想进入临界区,假设turn=0,进程P1的if条件成立,将自己的flag[1]置为0,并动态等待P0。P0获得处理器资源运行时,检测到flag[1]不成立,结束外层while循环,进入临界区,因而满足进展性。

3.        有限等待性:假设P0处于临界区中,P1正在执行entry div代码试图进入其临界区。P0离开临界区时,将turn的值置为1,flag[0]=0,这将使P1的内层while循环条件不成立。若P1在判断外层while循环条件之前P0没有再次提出进入临界区的请求,则flag[1]的值为0,P1结束外层while循环进入其临界区;反之,若P1判断外层while循环条件之前P0再次执行entry div代码,则会将flag[0]再次置为1,但是因为flag[1]条件和turn==1条件成立,P0将在其flag[0]标志为0后忙式等待P1,直到P1进入并离开其临界区。因而P1在P0再度进入临界区之前,必能得到进入临界区的机会。

关于软件实现的算法还有很多,诸如Peterson互斥算法、Lamport面包店算法等等,

大家可以自己尝试分析一下,这需要很强的逻辑能力。

l  进程互斥的硬件实现

下面给出一个我认为形式最为简单的算法,开关中断硬件互斥算法

操作系统之进程管理(2)

由于中断是实现进程切换的必要条件,所以关中断后,不会发生进程的切换,进入临界区的进程将连续执行临界区中的全部指令,因而满足互斥性。易于证明,也满足进展性。

         关于进程互斥的硬件实现算法也有很多,诸如:基于测试并设置指令的互斥算法、基于“交换”指令的硬件互斥算法等,大家感兴趣也可以找来算法描述自己分析。

         关于进程互斥的问题我们先了解到这,以后再PV操作中还会涉及到,到时候我们就可以自己写原语,来找出现实问题的求解……

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Copy and paste Love code Copy and paste Love code for free Copy and paste Love code Copy and paste Love code for free Apr 04, 2025 am 06:48 AM

Copying and pasting the code is not impossible, but it should be treated with caution. Dependencies such as environment, libraries, versions, etc. in the code may not match the current project, resulting in errors or unpredictable results. Be sure to ensure the context is consistent, including file paths, dependent libraries, and Python versions. Additionally, when copying and pasting the code for a specific library, you may need to install the library and its dependencies. Common errors include path errors, version conflicts, and inconsistent code styles. Performance optimization needs to be redesigned or refactored according to the original purpose and constraints of the code. It is crucial to understand and debug copied code, and do not copy and paste blindly.

The difference between H5 and mini-programs and APPs The difference between H5 and mini-programs and APPs Apr 06, 2025 am 10:42 AM

H5. The main difference between mini programs and APP is: technical architecture: H5 is based on web technology, and mini programs and APP are independent applications. Experience and functions: H5 is light and easy to use, with limited functions; mini programs are lightweight and have good interactiveness; APPs are powerful and have smooth experience. Compatibility: H5 is cross-platform compatible, applets and APPs are restricted by the platform. Development cost: H5 has low development cost, medium mini programs, and highest APP. Applicable scenarios: H5 is suitable for information display, applets are suitable for lightweight applications, and APPs are suitable for complex functions.

Can you use Tauri to develop desktop applications if you don't know Rust? Can you use Tauri to develop desktop applications if you don't know Rust? Apr 04, 2025 pm 11:42 PM

The impact of Rust language proficiency on desktop program development under the Tauri framework Tauri is a desktop application development framework built using Rust, thanks to its lightweight and...

Can mysql and mariadb coexist Can mysql and mariadb coexist Apr 08, 2025 pm 02:27 PM

MySQL and MariaDB can coexist, but need to be configured with caution. The key is to allocate different port numbers and data directories to each database, and adjust parameters such as memory allocation and cache size. Connection pooling, application configuration, and version differences also need to be considered and need to be carefully tested and planned to avoid pitfalls. Running two databases simultaneously can cause performance problems in situations where resources are limited.

Unable to log in to mysql as root Unable to log in to mysql as root Apr 08, 2025 pm 04:54 PM

The main reasons why you cannot log in to MySQL as root are permission problems, configuration file errors, password inconsistent, socket file problems, or firewall interception. The solution includes: check whether the bind-address parameter in the configuration file is configured correctly. Check whether the root user permissions have been modified or deleted and reset. Verify that the password is accurate, including case and special characters. Check socket file permission settings and paths. Check that the firewall blocks connections to the MySQL server.

Can I install mysql on Windows 7 Can I install mysql on Windows 7 Apr 08, 2025 pm 03:21 PM

Yes, MySQL can be installed on Windows 7, and although Microsoft has stopped supporting Windows 7, MySQL is still compatible with it. However, the following points should be noted during the installation process: Download the MySQL installer for Windows. Select the appropriate version of MySQL (community or enterprise). Select the appropriate installation directory and character set during the installation process. Set the root user password and keep it properly. Connect to the database for testing. Note the compatibility and security issues on Windows 7, and it is recommended to upgrade to a supported operating system.

How to control the top and end of pages in browser printing settings through JavaScript or CSS? How to control the top and end of pages in browser printing settings through JavaScript or CSS? Apr 05, 2025 pm 10:39 PM

How to use JavaScript or CSS to control the top and end of the page in the browser's printing settings. In the browser's printing settings, there is an option to control whether the display is...

How to use locally installed font files on web pages? How to use locally installed font files on web pages? Apr 05, 2025 pm 10:57 PM

How to use locally installed font files on web pages Have you encountered this situation in web page development: you have installed a font on your computer...

See all articles