그래픽 운영 체제 p, v 작업

운영 체제의 p, v 작업

컴퓨터의 핵심은 모든 컴퓨팅 작업을 수행하는 CPU이고, 운영 체제는 작업 스케줄링, 리소스 할당 및 관리를 담당하고 전체 컴퓨터 하드웨어를 제어하는 ​​컴퓨터의 관리자입니다.

1. 운영 체제 관련 정의

1. 운영 체제의 정의:

操作系统是控制和管理计算机硬件和软件资源、合理的组织计算机流程以方便用户使用的程序的集合。

2. 운영 체제의 특징:

(1) 동시성(차단).
동시성과 병렬성은 서로 다른 두 가지 개념입니다. 병렬성(Parallelism)은 둘 이상의 이벤트가 동시에 발생하는 것을 의미하고 동시성(Concurrency)은 둘 이상의 이벤트가 동일한 시간 간격 내에서 발생함을 의미합니다. 동시성은 거시적 수준에서 동시에 발생하고 미시적 수준에서는 교대로 실행됩니다.

(2) 공유. 두 가지 유형의 공유: 배타적 공유 및 일정 기간 동안의 동시 공유

(3) 가상

(4) 불확실성. 다중 프로그래밍 환경에서의 실행은 비동기 방식으로 수행되며, 각 프로그램이 실행되고 여러 프로그램의 실행 순서가 불확실한 경우.

3. 멀티코어 단일 CPU

현재 우리 컴퓨터는 멀티 코어 단일 CPU 또는 멀티 코어 멀티 CPU입니다. 멀티 코어 단일 CPU는 칩셋 세트와 스토리지 세트만 있으면 되며, 멀티 코어는 칩의 내부 버스를 통해 통신하고 메모리를 공유합니다. 다중 스레드 프로그램을 실행하면 더 빠른 실행 속도와 더 높은 컴퓨팅 성능으로 병렬로 실행할 수 있습니다.

2. 프로세스와 관련된 개념

1. 프로세스의 정의:

进程是程序的一次执行,改程序可以和其他程序并发执行;
它是一个动态的实体,在传统的计算机设计中,进程即使基本的分配单元,也是基本的执行单元。

위의 개념에서 알 수 있습니다. 프로세스에는 주로 다음과 같은 특성이 있습니다.

1)进程是一个实体。每一个进程都有自己的地址空间,一般情况下,包括文本域 数字域和堆栈。

2)进程是一个执行中的程序,具有独立性 并发性和动态性。

2. 프로세스 구성:

3. 진행현황 및 추이

(1) 프로세스의 기본 상태:

运行态:进程已经获得资源,并占有处理机,处理机正在执行该进程的程序。

阻塞态:等待态、挂起态或者睡眠态。此时程序因为某个事件而暂时不能运行。如等待IO操作

就绪态:进程等待为其分配CPU,而CPU被其他进程占用,所以暂时不能运行,
              但是该进程已经具备了执行的所有条件。
运行--阻塞转换:进程出让CPU,等待系统分配资源或某些事件的发生,如等待用户输入。

运行--就绪:分配的CPU 时间片已经用完,或者在中断模式下,有更高优先级的进程进入系统。

阻塞--就绪:处于阻塞队列的进程,当其等待的事件已发生或者等到可用资源时,进入就绪列竞争CPU。

就绪--运行:进程被调用程序选中CPU。

3단계 상호 작용 - 협력과 경쟁

    在多道程序设计系统中,同一时刻可能有多种进程,这些进程之间存在两种基本关系:竞争关系和协作关系。

1. 경쟁 관계:

시스템의 여러 프로세스는 서로 관련이 없으며 다른 프로세스의 존재를 인식하지 못하며 다른 프로세스의 영향을 받지 않습니다. 여러 프로세스가 일련의 컴퓨터 시스템 리소스를 공유하기 때문에 여러 프로세스가 컴퓨터 리소스를 놓고 경쟁하는 문제가 필연적으로 발생합니다. 리소스를 놓고 경쟁하는 프로세스는 정보를 교환하지 않지만 한 프로세스의 실행이 다른 프로세스의 실행에 영향을 미칩니다. 두 개의 리소스가 동일한 리소스에 액세스하려는 경우 한 프로세스는 운영 체제에서 할당한 리소스를 얻고 다른 프로세스는 기다려야 하며 극단적인 경우 차단된 프로세스는 절대 실행되지 않습니다.

자원 경쟁에서 두 가지 제어 문제가 발생합니다.

1)死锁,一组进程获得了部分资源,还想要得到其他进程所拥有的资源,最终所有的进程都陷入死锁。

2)饥饿,一个进程由于其他进程总是优先于它而被无限的拖延。

2. 협력 관계:

일부 프로세스는 작업을 완료하기 위해 분업과 협력이 필요하며, 협력 프로세스는 모두 독립적이고 결정되지 않은 속도로 실행되기 때문에 협력 프로세스는특정 조정 지점이 작업을 조정합니다.. 협력 과정일 때조정 지점에 도달그 후 파트너 프로세스로부터 정보를 받기 전에자신을 차단. 파트너 프로세스에 의해 깨어날 때까지.

3. 경쟁 문제의 해결책 – 프로세스 상호 배제

프로세스의 상호 배제는 경쟁 문제를 해결하는 수단입니다. 프로세스 상호 배제는 여러 프로세스가 공유 리소스를 사용하려고 할 때 최대 하나의 프로세스가 언제든지 사용하도록 허용하고 다른 프로세스는 대기하는 것을 의미합니다. 리소스를 소유한 프로세스가 리소스를 해제할 때까지.

몇 가지 명사에 유의하십시오.临界资源:称为独占资源,是指一段时间内只允许一个进程去使用的资源。

                    临界区:访问临界资源的代码称为临界区。

크리티컬 섹션 사용에 필요한 지침:

1)当若干个进程要求进入临界区时,应是一个进程进入临界区,他们不应该改互相等待而是谁都不能进入。

2)一次只允许一个进程去访问临界区,其他进程互斥的访问临界区。

3)各进程使用临界区的时间是有限的,进程必须要早有限时间内释放临界资源。

4. 프로세스 협업 관계에 대한 솔루션 – 프로세스 동기화

进程的同步是指两个或两个以上进程基于某个条件来协调他们的活动。
一个进程的执行依赖于另外一个进程的信息。
当一个进程没有受到另一个协作进程发来的消息是,进程会阻塞状态。

4. 공정 관리 - PV 운영

p操作和v操作是不可中断的程序段,称为原语。
P,V原语中P是荷兰语的Proberen(测试), V是荷兰语的Verhogen(增加)。

1. 세마포어 - 세마포어

세마포어는 자원을 나타내는 엔터티로 큐와 관련된 정수형 변수로 P 연산과 V 연산만 지원한다. 구체적인 의미는 다음 코드에 나와 있습니다.
여기에 이미지 설명 삽입

값 값에 대한 설명:
시기:

    value >0 时:信号量可用的资源个数
    value=0 时:无空闲资源,无空闲进程,正在执行一个进程;
    value< 0时:value的绝对值代表使用该资源的阻塞进程的个数;

세마포어는 프라이빗 세마포어와 퍼블릭 세마포어로 나뉩니다.

공용 세마포어: 프로세스 간의 상호 배제에 사용되며 초기 값은 일반적으로 1로 설정됩니다.

개인 세마포어: 프로세스 간의 동기화를 달성하는 데 사용되며 초기 값은 0 또는 n으로 설정되어 프로세스가 P 작업을 수행할 수 있도록 합니다.

2. P(프로베렌) 동작

P操作代表的是对资源的申请,其伪代码如下:

여기에 이미지 설명 삽입
흐름도는 다음과 같습니다.
여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

3、V(증가)操作

V操作是释放资源的操作,其伪代码如下:

여기에 이미지 설명 삽입

4. 프린터 동작을 위한 PV 동작 상세설명

동시성 프로그램에서 인쇄 작업을 수행하는 프로세스 ABC가 있지만 프린터는 한 대뿐이므로 각 프로세스가 프린터를 사용하기 위해 경쟁하면 작업 오류가 발생하므로 프로세스 상호 배제를 사용하여 문제를 해결해야 합니다. 프로세스 경쟁 상태. 세마포어 S=1(공유 리소스 프린터를 나타냄)을 설정하고 PV 작업을 사용하여 프로세스의 상호 배제를 실현합니다.
————————————————
여기에 이미지 설명 삽입
위의 PV 작업은 프로세스의 상호 배제를 실현합니다. 전체 프로세스는 모든 사람이 PV 작동 프로세스를 이해하는 데 도움이 될 수 있습니다.

다섯, 고전적인 IPC 문제

1. 생산자와 소비자의 문제 - 프로세스 동기화에 대한 아주 좋은 예입니다.

문제 설명:

생산자 프로세스 그룹과 소비자 프로세스 그룹은 고정된 크기의 초기 빈 버퍼를 공유합니다. 버퍼가 가득차지 않은 경우에만 생산자 프로세스가 정보를 버퍼에 넣을 수 있습니다. 그렇지 않으면 대기합니다. 영역이 비어 있지 않으면 소비자 프로세스는 여기에서 메시지를 가져올 수 있습니다. 그렇지 않으면 기다려야 합니다. 버퍼는 한 번에 하나의 프로세스에서만 액세스할 수 있습니다(중요 리소스).

(1) 문제 분석: 생산자는 빵집, 소비자는 쇼핑객, 캐시 영역은 빵을 담는 상자(자원)라고 가정합니다.

(2) 관계 분석: 생산자와 소비자는 자원에 대해 상호 배타적으로 액세스할 수 있습니다. 생산자는 빵을 상자에 넣고 소비자는 빵을 가져갈 수 있으며, 소비자가 빵을 가져간 후 생산자는 빵을 상자에 넣습니다. . 빵 속으로, 생산자의 빵과 소비자의 빵은 동시에 수행될 수 없습니다.

생산자와 소비자는 상호의존적이다 생산자가 빵을 생산해야 소비자가 빵을 가져갈 수 있고 소비자가 빵을 가져간 후에야 생산자가 계속해서 생산할 수 있다.

(3) 세마포어 설정:

semaphore empty=n;代表当前的空格子数,对于生产者来说,空格子是生产者的资源;

semaphore full =0;代表当前具有面包的盒子数量,对于消费者来说,放面包的盒子是消费者资源

这就是我们可以称为 empty  full 是私有信号量的原因。

semaphore mutex=1 ;代表临界区互斥信号量

生产者生产一个面包,就会给消费者一个通行证,告诉消费者,可以拿走面包;

消费者消费一个面包,就会给生产者一个通行证,告诉生产者,可以生产面包;

여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

아래와 같이 코드 쇼:
여기에 이미지 설명 삽입

여기에 이미지 설명 삽입
Producer 프로세스가 먼저 P(mutex)를 실행한 다음 P(empty)를 실행하고 Consumer 프로세스가 P(mutex)를 실행한 다음 P(fall)을 실행하면 이것이 가능합니까?

생산자 프로세스가 버퍼를 채웠고 소비자 프로세스가 제품을 가져오지 않았다고 상상해보십시오. 즉, 비어 있음 = 0. 생산자 프로세스가 다음에 계속 실행 중일 때 먼저 P(뮤텍스)를 실행하여 세마포어를 차단하고 그런 다음 P(empty )를 실행하면 차단되며 소비자가 제품을 꺼낸 후 깨울 수 있기를 바랍니다. Consumer 프로세스가 실행될 차례가 되면 P(mutex)를 먼저 실행하지만, Producer 프로세스가 Mutex 세마포어를 차단했기 때문에 Consumer 프로세스도 차단됩니다. 막힐 것이고, 둘 다 예상할 것이다. 상대방은 스스로 깨어나 끝없는 기다림에 빠졌다. 교착 상태에 빠집니다.

독자 및 미용사와 관련된 IPC 문제는 다음 기사에서 소개됩니다.

여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

Supongo que te gusta

Origin blog.csdn.net/kalvin_y_liu/article/details/119865071
Recomendado
Clasificación