본문 바로가기

Coding/내일배움캠프

[내일배움캠프] 프로세스와 쓰레드, 멀티 프로세스와 멀티 쓰레드 | 최종 프로젝트 Day 02 | Node.js 4기 | Day 83 | 24.03.27.(수)

면접카타

 

23. 프로세스와 쓰레드에 대해서 설명하고 그 차이에 대해서 설명해주세요.

 

프로세스

 

- [운영체제]

    - 호스트 컴퓨터나 단말기의 응용 프로그램 등 단위 실행 프로그램

    - 이는 '실행 중인 프로그램(계산의 주체)'이라는 뜻으로서,

        - 프로그램은 비활동적인(inanimate) 개체로 간주되며,

        - 처리기(운영체제)가 이 프로그램에 생명력을 부여할 때에만,

        - 비로서 그것은 프로세스라는 활동중(active)인 개체가 됨

    - 한편, 하나의 응용이 여러 프로세스를 병행 실행하는 경우는, "병행 프로세스" 참조

        - 대부분의 실행 프로그램은, 1 이상의 프로세스들을 가동함

 

- 실행 중인 프로그램

    - 메모리에 올려져, 실행 중인 프로그램

 

- 프로세스의 특징

    - 시분할 작업의 단위

    - 자신의 일을 수행키 위해, 자원을 필요로 함

    - 프로세스별로 메모리 공간이 격리됨

        - 각 프로세스가 독립된 메모리 공간을 가지도록 보장되어야 함

            - 즉, 프로세스는 타 프로세스, 커널로부터 격리되어, 이들 메모리에 읽기/쓰기가 제한됨

        - 통상, 2개 레지스터(base, limit)를 사용

    - 하나의 프로그램이 여러 프로세스를 만들 수 있고, 제어권 전달 등이 있게 됨

        - 단일 프로그램이 여러 프로세스를 생성 가능 | "fork 시스템 호출" 참조

            - 즉, 여러 프로세스들이 동일 프로그램으로 실행 가능

    - 병행 실행이 가능 | "병행 프로세스" 참조

        - 이때, 프로세스 간 통신 필요 | "IPC" 참조

    - 프로세스 내 스레드

        - 현대 운영체제는, 단일 프로세스가 다수 실행 스레드들을 갖도록 허용

 

출처

 

 http://www.ktword.co.kr/test/view/view.php?m_temp1=5061&id=1004

 

프로세스 [OS]

  Process   프로세스 (2023-11-22)

www.ktword.co.kr

 

쓰레드

 

- 프로세스 내 다중처리를 위함

    - 하나의 프로세스 내에서,

    - 더 작은 단위들로 각각 독립적으로 실행되나,

    - 그 각각은 제어가 가능한 흐름임

- 일명, Execution Context(실행 컨텍스트) 또는 Light Weight Process(경량급 프로세스)라고도 함

 

차이점

 

- 프로세스

    - 완전한 하나의 프로그램이 실행되는 것

    - 예를 들어, 유닉스에서 볼 때, fork()를 통해 생성되는 프로세스는,

       - 원래의 프로세스와 똑같은 변수와 코드 등 여러 면에서 똑같은 복사본임

    - 따라서, 부모와 똑같은 자식을 생성하기 위해서는, 그만큼 많은 자원이 요구됨

- 쓰레드

    - 쓰레드는 프로세스와는 달리,

        - (수행 방식) 부모 프로세스 전체의 복사본을 만들지 않고,

            - 필요한 코드 덩어리 만을 생성하여 동시에 수행

        - (동일 생성, 독립 실행) 해당 스레드들 모두가,

            - 동일 프로그램으로 생성되나,

            - 서로 독립되어 실행됨.

        - (공유) 해당 스레드들 모두가, 주요 메모리 공간을 함께 공유함

    - 따라서, 부모 스레드가 갖고 있는 모든 데이터를 완전하게 접근할 수 있기 때문에,

        - 효율적이고 메모리 제약이 있는 시스템에 널리 사용

 

24. 멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요.

 

멀티 프로세스

 

- 장점

    - 프로그램 안정성

    - 프로그램 병렬성

    - 시스템 확장성

 

- 단점

    - Context Switching Overhead

    - 자원 공유 비효율성

 

멀티 쓰레드

 

- 장점

    - 프로세스보다 가벼운 스레드

    - 자원의 효율성

    - Context Switching 비용 감소

    - 응답 시간 단축

 

- 단점

    - 안정성 문제

    - 동기화로 인한 성능 저하

    - 데드락 (교착 상태)

    - 그래도 Context Switching Overhead

    - 디버깅이 어려움

    - 운영체제의 지원이 필요

 

+ α

 

- 멀티 프로세싱 vs 멀티 태스킹

    - 멀티 프로세싱

        : 여러 개의 CPU 코어가 동시에 작업을 처리하는 것

    - 멀티 태스킹

        : 단일 CPU에서 여러 개의 작업을 동시에 처리하는 것

 

- 멀티 프로세싱 vs 멀티 프로세스

    - 멀티 프로세싱

        : 하나의 시스템에서 여러 개의 프로세서(CPU)를 사용하여 작업을 처리
        : 전체적인 처리 속도가 빨라지는 효과

    - 멀티 프로세스

        : 하나의 응용 프로그램을 여러 개의 프로세스로 분리하여 실행

        : 안정성이 높아지는 것에 목적을 둠

 

- 멀티 프로세스 vs 멀티 프로세서

    - 프로세스

        : 프로그램의 실행 상태

    - 프로세서

        : CPU 코어를 일컫는다.

 

출처

 

https://inpa.tistory.com

 

Inpa Dev 👨‍💻

성장 욕구가 가파른 초보 개발자로서 공부한 내용을 쉽게 풀어쓴 기술 개발자 블로그를 운영하고 있습니다.

inpa.tistory.com

 

MARL(Multi-Agent Reinforcement Learning)

 

https://forbetterdays.tistory.com/80

 

Multi-Agent Reinforcement Learning

MARL(Multi-Agent Reinforcement Learning) - Trying to study Multi-Agent Algorithms in reinforcement learning. - For collaboration or competition, it is a field in which multiple agents interact with each other and find optimal behavior. - In reality, in ord

forbetterdays.tistory.com

 

Node가 싱글 스레드인데 어떻게 멀티 스레드처럼 작동하는지?

 

- 노드 엔진 어떻게 구성되어 있는지?

- 노드 라이브러리 어떻게?

 

Context Switching이 상당히 중요한 포인트

 

https://velog.io/@tastestar/Node.js-libuv

 

Node.js libuv

프로젝트를 마치고, 면접 준비를 하다보니 Node.js가 싱글 쓰레드 인줄 알고 있었는데, Node도 여러 스레드를 가지고 있지만!, 자바스크립트 실행하는 스레드가 하나라 싱글 스레드라는 걸 알게되

velog.io

 

 

 

유저 플로우 작성했다.

 

 

와이어프레임을 작성했다.

 

 

와이어 프레임을 한 번 정리하고, 질문이 필요한 내용들에 대해 정리하고 있다.

 

 

귀여운 스폰지밥 가족