ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 99클럽 코테 스터디 9일차 TIL + 프로세스와 스레드, 코루틴
    Study(진행중)/항해99 2024. 7. 31. 02:11

    오늘의 학습 키워드

       - 운영체제

       - 프로세스

       - 스레드

       - 코루틴

    공부한 내용 본인의 언어로 정리하기

    운영체제를 공부하다 보니 스레드와 프로세스 개념이 나왔고, 아직 강의를 다 듣지는 않았지만 그래도 면접에서 해당 질문을 받았던 적이 있고 그 때 대답을 재대로 하지 못해 정리해보려고 한다.

     

    먼저 프로세스는 실행중인 프로그램이다(program in execution)

    그리고 프로그램은 하나의 실행 흐름이다(single thread of execution)

    그래서 OS의 작업의 단위는 프로세스이다.

     

    그럼 멀티 프로세스와 멀티 스레드는 무엇일까? AI에게 물어봤다.

     

    멀티프로세스 (Multiprocessing)

    멀티프로세스는 여러 개의 프로세스를 생성하여 작업을 병렬로 수행하는 방식입니다.

     

    • 독립된 메모리: 각 프로세스는 독립된 메모리 공간을 가지고 있습니다. 메모리 보호가 뛰어나지만, 프로세스 간 데이터 교환이 비교적 느리고 복잡합니다.
    • 무거움: 프로세스 간 문맥 전환이 상대적으로 느리고, 생성 및 종료 비용이 높습니다.
    • 효율적인 CPU 작업: CPU를 많이 사용하는 작업에서는 각 프로세스가 독립적으로 실행되기 때문에 병렬 처리가 효과적입니다. 특히, GIL(Global Interpreter Lock) 문제를 피해야 하는 Python과 같은 언어에서는 멀티프로세스가 더 유리할 수 있습니다.

    멀티스레드 (Multithreading)

    멀티스레드는 하나의 프로세스 내에서 여러 스레드를 생성하여 작업을 병렬로 수행하는 방식입니다. 

    • 공유 메모리: 모든 스레드는 같은 메모리 공간을 공유합니다. 데이터 교환이 빠르지만, 동기화 문제가 발생할 수 있습니다.
    • 경량: 스레드 간 문맥 전환이 빠르고, 프로세스보다 생성 및 종료 비용이 낮습니다.
    • 효율적인 I/O 작업: I/O 작업은 보통 대기 시간이 길기 때문에, 스레드가 I/O 작업을 기다리는 동안 다른 스레드가 작업을 수행할 수 있습니다. 따라서 네트워크 통신, 파일 읽기/쓰기 등 대기 시간이 긴 작업에 적합합니다.

     

    이와 같이 멀티 스레드와 멀티 프로세스는 장/단점이 있고 따라서 적합한 작업이 존재한다.

     

    네트워크나 I/O 등 대기 시간이 긴 작업: 멀티스레드가 적합합니다. 스레드가 대기하는 동안 다른 스레드가 작업을 계속 수행할 수 있기 때문에, 자원을 효율적으로 사용할 수 있습니다.

    CPU 성능이 중요한 작업: 멀티프로세스가 더 적합합니다. 프로세스가 독립적으로 실행되어 CPU 코어를 최대한 활용할 수 있기 때문입니다. 특히, Python에서는 GIL로 인해 멀티스레드의 CPU 바운드 작업 효율이 떨어질 수 있으므로, 멀티프로세스가 더 나은 선택이 될 수 있습니다.


    근데 여기서 갑자기 cpu의 구조가 떠올랐다.

    최근(이라기엔 최소2년은 된 것 같다)에 인텔이 CPU에 P코어와 E코어를 분리해서 만들기 시작했고, AMD역시 이를 따라가고 있는것으로 알고있다.

    그리고 P코어는 성능 코어, E코어는 효율 코어로 알고 있는데, 이게 멀티 프로세스와 멀티 스레드와 상당히 유사해보여서 이 내용을 다시 AI에게 물어봤다.

     

    CPU의 P코어(Performance Core)와 E코어(Efficiency Core)의 개념을 멀티스레드와 멀티프로세스의 장단점을 보완하는 방식으로 이해할 수 있습니다. 이 두 가지 접근 방식은 서로 다른 작업 특성에 맞게 최적화된 성능을 제공하려는 공통된 목표를 가지고 있습니다.

     

    P코어와 E코어

    • P코어 (Performance Core)
      • 고성능 코어로, 복잡한 연산과 높은 CPU 사용률이 필요한 작업에 최적화되어 있습니다.
      • 멀티프로세스와 유사한 방식으로, 고성능을 요구하는 영상 편집, 3D 렌더링 등 CPU 집약적인 작업에 적합합니다.
    • E코어 (Efficiency Core)
      • 저전력 코어로, 단순한 연산과 대기 시간이 긴 작업에 최적화되어 있습니다.
      • 멀티스레드와 유사한 방식으로, 백그라운드에서 실행되는 네트워크 통신, 파일 다운로드 등 대기 시간이 길고 연산이 복잡하지 않은 작업에 적합합니다.

    보완 관계

    멀티스레드와 멀티프로세스의 장단점을 보완하는 방식과 비슷하게, P코어와 E코어도 서로 다른 작업 특성에 맞게 효율적인 처리를 제공합니다.

    • CPU 성능 최적화: P코어는 고성능이 필요한 작업에, E코어는 효율성이 중요한 작업에 최적화되어 있습니다. 이를 통해 CPU 자원을 최대한 효율적으로 사용할 수 있습니다.
    • 전력 소비 최적화: E코어는 저전력으로 동작하므로, 전력 소비를 줄이면서도 병렬 작업을 효과적으로 수행할 수 있습니다. 이는 배터리 수명이 중요한 모바일 기기 등에서 특히 유용합니다.

     

    AI도 P코어와 E코어를 떠올리는게 나름 적절했다고 판단했다.

     

     

     

     내일 학습할 것은 무엇인지

    내일은 이 내용을 이어서 코루틴과 스레드의 차이점에 대해 알아보려고 한다.

    반응형

    댓글

Designed by Tistory.