병행 프로세스와 병렬 프로세스의 차이

2021. 9. 24. 17:51·OS
반응형

2021. 9. 24. 17:51

2022. 6. 22. 14:17 복습을 위한 수정 시작

OS는 성능 향상을 목적으로 CPU가 한 개 일 때 프로세스를 병행 실행할 수 있고, CPU가 다수일 때 프로세스를 병렬 실행할 수 있다.

병행 프로세스와 병렬 프로세스에 대해 자세히 알아보겠다.

병행 프로세스 Concurrent Process

  • CPU가 한 개일 때 실행 중인 2개 이상의 프로세스이다.
  • Asynchronous Concurrent Processes
  • 프로세스의 병행성을 높여야, 성능 개선을 기대할 수 있고 효율이 높아진다.
  • 병행 프로그래밍의 최적화로 병행성을 극대화.
  • 병행 프로그래밍을 할 때 고려해야 할 사항들이 있다. 병행 프로세스들 간의 공유 자원 문제, 병행 프로세스들 간의 상호 통신 문제, 병행 프로세스들 간의 동기화 문제 등이 있다.
  • 병행 프로세스 간의 상호 통신을 인터 프로세스 커뮤니케이션이라고 한다.
  • 병행성을 판별하는 기법으로는 선행 그래프 (Precedence Graph)라는 기법이 있다.

병렬 프로세스 Parallel Process

  • 2개 이상의 프로세스를 물리적으로 동시에 실행 (CPU가 다수일 때)
  • DATA Parallelism, Task Parallelism라고도 한다.
  • 병렬 프로그래밍을 할 때 고려해야 할 사항들이 있다.
  • 처리할 TASK의 적절한 분리, 처리량의 균형, 데이터의 적절한 분리(상호 의존성이 없는지),
    데이터 간의 독립성, 테스트와 디버깅의 어려움 등이 존재한다.

병렬 프로그래밍 사례

  • open MP - 고성능 처리를 위해서 Multi CPU를 동시에 사용할 수 있도록 프로그래밍할 수 있는 API. C, C++ API LINUX, Windows, UNIX에서 지원
  • CUDA - 2007, GPU에서 고성능 처리를 위해 nvidia에 의해 개발된 HW/SW (대량의 병렬 처리), AI(딥러닝, Tensor flow), 블록체인 채굴에서 활용됨. CUDA에서 GPGPU API를 사용하여 C/C++로 병렬 프로그래밍 실현.

프로세스는 독립적으로 작업을 할 수도 있고 공유된 자원을 가지고 공동 작업을 할 수도 있다.

여러 프로세스가 한정된 자원을 가지고 공동으로 작업을 하면 문제가 발생할 수 있다. 

이때 등장하는 키워드로는 공유 자원, 경쟁 조건, 임계 구역등이 있는데 이에 대해서는 아래 포스팅에서 확인할 수 있다.

https://devdebin.tistory.com/16?category=972158 

 

OS 임계 구역 해결 방법

임계 구역은 상호 배제 문제, 한정 대기 문제, 진행의 융퉁성 문제가 있다. 임계 구역 해결 방법인 피터슨 알고리즘, 데커 알고리즘, 세마포어, 모니터에 대해 살펴보겠습니다. 먼저 피터슨 알고

devdebin.tistory.com

https://devdebin.tistory.com/24?category=972158 

 

DeadLock 교착 상태

두 개 이상의 프로세스가 필요한 자원을 기다리면서 무한정 중지된 상태가 교착 상태, DeadLock이다. 제한된 자원의 이용률을 높이고 시스템의 효율성을 높이고자 했을 때 발생하는 부작용이 교착

devdebin.tistory.com

이상으로 운영체제 전공 수업 복습을 마친다.

 

2022. 6. 22. 14:55 복습을 위한 수정 마무리

반응형
'OS' 카테고리의 다른 글
  • 프로세스 간 통신
  • 임계 구역과 임계 구역 해결 방법
  • 프로세스와 스레드
  • Operating System (운영체제), Kernel(커널)
Debin
Debin
공부 기록을 남기며 게시글 리팩토링을 진행하는 블로그입니다.
  • Debin
    리팩토링하는 블로그
    Debin
  • 전체
    오늘
    어제
    • 분류 전체보기
      • DB
        • DB 기초
        • MySQL
        • SQL 튜닝
      • OS
      • Network
      • Git
      • 디지털콘텐츠기획
      • 소프트웨어공학
      • 코딩테스트
        • 프로그래머스
        • 백준
        • 인프런
      • 공부 일지
      • 독서
        • 클린코드
        • 일상 속 사물이 알려주는 웹 API 디자인
        • 토비의 스프링
        • 객체지향의 사실과 오해
        • 자바 잘 읽는 법
      • 기록 및 회고
      • Cloud
        • AWS
      • 개발
        • Java
        • Spring Core
        • Spring MVC
        • Spring DB
        • Spring Boot
        • Spring Security
        • Spring Batch
        • JPA
        • Test
        • Android
      • 대외활동
        • UMC SERVER
        • 카엔프 SW 아카데미
      • 프로젝트
      • Docker
      • Gradle
      • ELK
      • 실무 이야기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

    • 본인 깃허브입니다!
  • 인기 글

  • 태그

    객체지향
    컨테이너
    스프링
    객체
    redis
    자바
    AWS
    spring boot
    리눅스
    운영체제
    Java
    ORM
    트랜잭션
    인덱스
    코딩 #개발자 #노마드북클럽 #노개북
    mysql
    도커
    AOP
    데이터베이스
    test
    container
    spring mvc
    spring
    JPA
    docker
    토비의 스프링
    innodb
    SQL
    프록시
    스프링 부트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
Debin
병행 프로세스와 병렬 프로세스의 차이
상단으로

티스토리툴바