병렬과 다중 주소의 관계를 정리하다

결론


우선 결론부터 말하자면'병행 병행'처리와'다중 처리'는 직접적인 관계가 없다.
다중 루틴과 다중 프로세스를 병행 처리할 수 있습니다.'병행, 병행'과'프로세스, 라인'은 같은 상하문에 자주 나타나 혼동되기 쉬우나 모두 독립된 단어들이다.'병렬 병행'은 실행 상태를 나타내는 용어로,'프로세스 스레드'는 OS 측의 실행 단위를 관리하는 방법이다.따라서 다선정은 병행 처리의 관계가 없다.
그럼 아래에 상세히 설명하고 싶습니다.

어휘 정리


동급


우선 병행과 병행을 정리하고 싶습니다.
시간 슬라이스를 배운 사람이라면 그림만 봐도 이해할 수 있을 것 같아요.

병렬 처리


시스템이 여러 작업(프로세스 프로세스)을 동시에 수행할 수 있는 상태를 나타냅니다.즉, 하나의 프로세서가 시간 슬라이드를 이용하여 여러 개의 처리를 하고 있다(이때 슬리프 상태의 처리도 inprogress이다).그림의 예를 들어 T1과 T2는 병행된 관계이다

병렬 처리


여러 작업을 동시에 수행할 수 있는 상태를 나타냅니다.여러 프로세서에서 동시에 여러 작업을 하는 상태라는 것이다.그림에서 보듯이 T1과 T3은 병렬 관계이다.
여기서 주의해야 할 것은 병행이 병행을 포함한다는 것이다.뭐랄까, 동시에 집행할 때도'두 처리는 실행상태'라고 할 수 있다는 점은 병행적이다.

프로세스 및 스레드


다음은 프로세스와 라인의 관계를 정리한다.

프로세스


・"프로세스는 실행 중인 프로그램을 추상화합니다."
• 프로세스는 실행 중인 바이너리
· 가상 기억 장치와 과정 관련
종합적으로 말하면 과정은 실제 상황에 따른 처리가 아니라 메모리에서 여러 개 또는 단독의 처리를 통일적으로 관리한다.(프로세스의 가장 큰 목적은 각 프로그램의 메모리 영역의 독립성과 불가침성을 유지하는 것이다)

실마리


• "프로세스의 실행 단위"
· 스레드는 OS 프로세스 스케줄러를 스케줄링할 수 있는 최소 실행 단위입니다.
• 가상 프로세서와 각 스레드 관련
위에서 알 수 있듯이 라인은 처리를 진행하는 단위이다.또한 프로세스의 아래쪽에 라인이 있음을 알 수 있다.
또한 저는 개인적으로 라인이 가장 만족스럽지 못하다고 생각하지만 라인이 이해하기 어려운 요소 중 하나가 두 분야에서 다르다는 뜻입니다.'하드웨어'스레드와'소프트웨어'스레드는 스레드라는 단어를 사용하는 장면으로 존재한다.하드웨어 스레드는 소프트웨어에서 인식할 수 있는 프로세서 수를 나타내는 CPU N 코어/N 스레드의 스레드입니다.소프트웨어 스레드는 CPU 기능이 아니라 운영 환경에서 프로세스에서 생성된 실행 단위입니다.다만, 처리를 수행하는 단위의 뜻이 같기 때문에 같은 단어를 사용했다.("하드웨어"스레드에는 프로세서를 올바르게 공유하는 부분이 있기 때문에 성능 면에서는 여러 부분이라고 단언할 수 없지만 이런 내용은 생략하고 싶습니다.)

병행과 다기능의 관계


용어에 대한 설명은 이미 끝났고 이어서'병행, 병행','프로세스, 라인'등 문제를 종합적으로 고려한다.
우선'병행, 병렬'을 전제로 고려하면 두 개 이상을 처리해야 하기 때문에 고려할 수 있는 모델은 세 가지다.바로'다과정 단식홍','단식홍','다중홍'이다.
중점은 시점의 높이가 병행·병렬에 따라 달라야 한다는 점이다.

다과정 단식과 병행


이런 상황에서 모든 프로세스는 하나의 라인만 있다.따라서 전체 시스템은 병행 운행할 수 있지만 특정한 프로그램은 하나의 프로세서만 사용할 수 있고 병행 운행할 수 없다.

단일 프로세스 다중 스레드 병렬 병렬


이런 상황에서 전체 시스템은 하나의 프로그램만 실행하지만, 이 프로그램은 여러 개의 프로세서를 병렬로 처리할 수 있다.

도로세스 도로스 레드와 병행/ 병행


이때 시스템 전체든 특정 프로그램이든 병행 처리할 수 있다.

+α


만약 다중 루틴 프로세스가 단일 프로세서에서 실행된다면, 프로세서는 순서대로 모든 루틴에 실행 자원을 분배하기 때문에 프로세스의 실행 상태는 병렬적이다.
만약 같은 다중 루틴 프로세스가 공유 메모리 시스템의 다중 프로세서에서 실행된다면, 과정 중의 모든 루틴은 다른 프로세서에서 동시에 실행되기 때문에 프로세스의 실행 상태는 병행될 것이다.
프로세스 스레드 수가 프로세서 수와 같거나 작거나, 스레드를 지원하는 시스템 (스레드 라이브러리) 과 조작 환경은 모든 스레드가 서로 다른 프로세서에서 실행될 수 있도록 합니다.
위에서 알 수 있듯이'병행, 병행'의 처리축 외에'병행, 병행'의 처리축도 있다.이것에 대해'병행·병행'이 위에서 말한 바와 같이'병행·병행'처리는'가능한 병행처리'가 곧 결론이 될 것이다.

다중 프로세스와 다중 루틴 중 어느 것이 좋습니까


여기서, 만약 다중 프로세스와 다중 루틴이 병행 처리된다면, 어느 것을 사용하는 것이 정확할 것 같습니까?
새로운 프로세스를 생성하는 것보다 시스템을 생성하는 라인의 부하가 훨씬 적을 것이다.이것은 새로 생성된 루틴이 현재 프로세스의 주소 공간을 사용하기 때문입니다.루틴 전환에 필요한 시간은 프로세스 전환에 필요한 시간보다 훨씬 짧다.그 중 하나는 라인을 바꿀 때 주소 공간을 바꿀 필요가 없다는 것이다.
같은 프로세스에 속하는 라인 간의 통신은 간단하게 실현할 수 있다.이 단서들이 주소 공간을 포함한 모든 것을 공유했기 때문이다.따라서 모든 다른 라인은 어떤 라인에서 생성된 데이터를 즉시 사용할 수 있다.
즉, 다중 프로세스의 경우 메모리 영역이 독립적이기 때문에 안전하지만 실행하는 전환은 비용이 필요하다.반면 다중 스레드에서 엔지니어는 스레드 안전성이 전환 비용을 대체하는 것이 아니라는 것을 깨달을 필요가 있다.
결론은 이 부분을 규정하는 것은 언어 규범으로 채택, 학습 용이성, 갱신 빈도 등을 포함하여 모두 기술 선택의 한 항목이다.
 

참고 문헌


https://docs.oracle.com/cd/E19455-01/806-7118/6jg0vp9se/index.html
https://milestone-of-se.nesuke.com/sv-basic/architecture/cpu/
https://yakst.com/ja/posts/39
https://www.oreilly.co.jp/books/9784873114354/
https://www.amazon.co.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E6%8A%80%E8%A1%93%E5%85%A5%E9%96%80-%E9%AB%98%E9%80%9F%E5%8C%96%E3%81%AE%E8%BF%BD%E6%B1%82%C3%97%E6%B6%88%E8%B2%BB%E9%9B%BB%E5%8A%9B%E3%81%AE%E5%A3%81-WEB-PRESS-plus/dp/4774164267/ref=asc_df_4774164267/?tag=jpgo-22&linkCode=df0&hvadid=295723231663&hvpos=&hvnetw=g&hvrand=158268926787210135&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1028853&hvtargid=pla-527289512308&psc=1&th=1&psc=1

좋은 웹페이지 즐겨찾기