안녕하세요.
오늘은 병행 프로세스에 대하여 알아보겠습니다.
우리는 피씨를 이용할 때 음악을 들으며 문서작업을 하기도 하고 동시에 메신저를 사용하기도 합니다.
이러한 여러 작업, 즉 프로세스들을 운영체제는 단순하게 순차처리하는 것이 아닌 병행으로 처리해야 합니다.
특히 병행 프로세스가 서로 유기적으로 상호작용하며 동작하는 경우에는 다양한 문제가 발생할 수 있습니다.
해서 이번 포스팅에서는 병행프로세스의 개념에 대해 간단하게 알아보고 다음 포스팅에서는 병행 프로세스에서 발생할 수 있는 문제와 해결방안에 대하여 알아보겠습니다.
병행프로세스
병행성(concurrency)은 여러 개의 프로세스 혹은 스레드가 동시에 수행되는 시스템의 특성을 말하는데요.
한마디로 동시에 여러개의 프로세스가 수행되는 것입니다.
이렇게 동시에 수행되는 여러 개의 프로세스 혹은 스레드를 우리는 병행 프로세스라고 부릅니다.
병행프로세스의 실행 형태
병행프로세스의 실행 형태는 CPU 개수 따라 나눌 수 있습니다.
Single CPU
하나의 CPU(코어) 가 짧은 시간 동안 돌아가며 프로세스를 처리하는 인터리빙 형식으로 실행됩니다.
프로세서를 빠르게 전환해 마치 동시에 수행하는 것 처럼 보일 수 있습니다.
하지만 사실은 하나의 코어가 돌아가며 프로세스를 수행하고 있습니다.
Multi CPU
하나의 CPU 가 하나의 프로세스를 전담하여 처리하는 병렬처리 형식으로 실행됩니다.
멀티 프로세스 시스템인 경우 메모리 구조에 따라 강결합 시스템과 약결합 시스템으로 다시 나눠볼 수 있습니다.
강결합(tightly-coupled) 멀티프로세서
먼저 강결합 시스템은 여러 개의 CPU에 하나의 메모리를 가진 공유메모리 구조입니다.
여러 CPU 들이 하나의 메모리를 공유하며 하나의 운영체제가 모든 CPU와 시스템을 제어합니다.
약결합(loosely-coupled) 멀티프로세서
약결합 시스템은 분산메모리 구조입니다.
CPU 마다 메모리가 별도로 존재하는데요.
여러 개의 컴퓨터 시스템들이 별도로 구축되어 있고 그 컴퓨터들이 통신선으로 연결된 구조의 시스템입니다.
그럼 병행프로세스에서 각 프로세스들의 관계는 어떨까요?
프로세스 간의 관계
병행프로세스 내의 프로세스는 두가지로 나눌 수 있습니다.
독립프로세스와 협력프로세스입니다.
독립프로세스
수행중인 다른 프로세스에 영향을 주지도 받지도 않습니다.
데이터 및 상태를 다른 프로세스와 공유하지도 않고 독립적으로 실행합니다.
독립프로세스의 실행은 결정적, 재생가능이라는 특징을 가지고 있습니다.
여기서 결정적이라는 것은 실행 결과는 입력에 의해서만 결정되며 입력에 대해서 하나의 실행결과만이 나온다는 의미입니다.
그렇다면 재생가능 하다는 것은 어떤 의미일까요?
바로 같은 입력에 대해 항상 동일한 실행 결과를 나타낸다는 것입니다.
협력프로세스
수행중인 다른 프로세스와 영향을 주고받으며 데이터 및 상태를 타 프로세스와 공유하는 프로세스입니다.
협력 프로세스의 실행은 비결정적, 재생불가능 하다는 특징을 가지고 있는데요.
위에서 말한 것과 반대로 비결정적이라는 것은 실행 결과가 실행 순서에 따라 좌우된다는 뜻입니다.
재생불가능은 같은 입력에 대해 항상 동일한 결과를 보장하지 못한다는 뜻입니다.
'Computer Science > OS' 카테고리의 다른 글
[OS] 협력프로세스 (0) | 2023.04.24 |
---|---|
[OS] 병행성 문제 (0) | 2023.04.23 |
[OS] 프로세스 스케줄링 알고리즘 (0) | 2023.03.15 |
[OS] 프로세스 스케줄링 (0) | 2023.03.13 |
[OS] 프로세스 관리와 쓰레드 (0) | 2023.03.05 |