Skip to main content

Command Palette

Search for a command to run...

[OS]multi process와 multi thread

Updated
2 min read

크롬에서 탭을 쓴다고 생각해봅시다. 우리는 chat gpt를 쓰던 학교 강의를 듣던 여러개의 탭을 켜놓고 작업들을 할 것입니다. 이 때에 우리는 멀티 프로세스(Multi-process)와 멀티 스레드(Multi-thread)의 개념을 생각해 볼 수 있습니다.

  1. 멀티-프로세스 모델 : 크롬은 탭이 마치 독립된 브라우저처럼 작동합니다.

  2. 멀티-쓰레드 사용: 각각의 탭이 각각 하나의 프로세스이고 그 안에서는 다수의 쓰레드가 사용됩니다. ex) 웹페이지 렌더링, 자바스크립트 실행, 네트워크 작업 등은 별도의 쓰레드에서 처리될 수 있습니다.

멀티 프로세스(Multi-process)와 멀티 스레드(Multi-thread)는 컴퓨터 프로그램이 작업을 병렬로 수행하는 두 가지 주요 방법입니다. 각각의 방식은 장단점이 있으며, 특정 상황에 따라 적합한 선택이 달라질 수 있습니다.

멀티 프로세스(Multi-process)

  1. 정의: 멀티 프로세스는 여러 개의 독립적인 프로세스가 동시에 실행되는 방식입니다. 각 프로세스는 자신만의 메모리 공간과 시스템 자원을 가집니다.

  2. 장점:

    • 격리성: 프로세스 간에 메모리와 자원이 분리되어 있어, 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않습니다.

    • 안정성: 한 프로세스의 충돌이 시스템 전체에 영향을 미치는 일이 적습니다.

  3. 단점:

    • 자원 소모: 각 프로세스는 독립적인 메모리와 자원을 가지므로, 많은 자원을 소모합니다.

    • 통신 복잡성: 프로세스 간 통신(IPC)이 복잡하고 비용이 많이 듭니다.

멀티 스레드(Multi-thread)

  1. 정의: 멀티 스레드는 하나의 프로세스 내에서 여러 개의 스레드가 동시에 실행되는 방식입니다. 이들 스레드는 프로세스의 메모리와 자원을 공유합니다.

  2. 장점:

    • 자원 효율성: 스레드는 프로세스의 자원을 공유하기 때문에, 자원 소모가 프로세스에 비해 적습니다.

    • 통신 용이성: 같은 메모리 공간을 공유하기 때문에 스레드 간 통신이 더 간단하고 효율적입니다.

  3. 단점:

    • 안정성 문제: 한 스레드의 문제가 전체 프로세스에 영향을 줄 수 있습니다.

    • 동시성 문제: 공유 자원에 대한 접근 관리가 필요하며, 이를 위한 동기화 처리가 필요합니다.

비교

  • 자원 관리: 멀티 프로세스는 자원을 공유하지 않기 때문에 관리가 더 단순하지만, 더 많은 자원을 소모합니다. 반면, 멀티 스레드는 효율적인 자원 사용을 가능하게 하지만, 공유 자원에 대한 복잡한 동기화가 필요합니다.

  • 성능과 오버헤드: 멀티 스레드는 컨텍스트 스위칭 오버헤드가 프로세스보다 작기 때문에 성능상 이점이 있습니다. 반면, 멀티 프로세스는 프로세스 간 컨텍스트 스위칭에 더 많은 비용이 듭니다.

  • 안정성과 격리성: 멀티 프로세스는 프로세스 간 격리가 잘 되어 있어 안정성이 높습니다. 그러나 멀티 스레드는 한 스레드의 오류가 전체 프로세스에 영향을 줄 수 있어, 상대적으로 안정성이 낮습니다.

    -edited by 조준형

More from this blog

[ZSH] tree 사용하기

들어가며 큰 규모의 프로젝트를 출시한 뒤, 후일을 위해서 더 늦기 전에 파일 정리 및 문서화를 진행해야했다. 문서화 작업을 하는 중에 기왕 정리하는 거 파일 구조를 이쁘게 트리 구조로 나열하여 코멘트를 달면 나중에 보더라도 이해하기 더 쉬울 것 같았다. 어떻게 해야 간지나는 트리 구조를 만들 수 있을까 방법을 찾다보니 역시나 파일 구조를 트리로 이쁘게 출력해주는 커맨드 툴이 존재했다. tree 커맨드에 대해서 알아보고 알짜배기 내용만 정리했다....

Feb 21, 20242 min read

[Next.js] parallel routes & intercepting routes

트위터 로그인 모달창을 만들어보며 넥스트의 parallel routes 와 intercepting routes 을 학습한 내용을 정리해보았습니다. 트위터 로그인 창을 확인해봅시다. 루트 디렉토리 화면을 배경으로 i/flow/login 페이지가 동시에 표시되고 있습니다. 저는 app router 를 학습하기 전까지는 createPortal 을 사용하여 포탈 영역에 로그인 컴포넌트를 띄우는 방식을 사용했었습니다. const NoLogin =()=...

Feb 1, 20244 min read

C/C++ 이진 트리(binary tree) 개요 및 구현(1)

개요 트리는 노드들이 나무 가지처럼 연결된 비선형 계층적 자료구조이다. 하위 트리가 존재하고, 그 노드에 또 하위 트리가 존재하는 자료구조 이다. 트리의 맨 위에 있는 루트 노드가 존재한다. 우리가 알아볼 트리는 이진 트리이다. 이진 트리는 자식 노드(부모로부터 아래로 이어진 노드)가 2개 이하인 구조를 말한다. 트리의 사용 사례로는 다음과 같다 계층 적 데이터 저장(파일,폴더) 효율적인 검색 속도 힙 데이터 베이스의 인덱싱 트리에 ...

Jan 31, 20244 min read

[React] Server component (RSC)

React.js 18 에 도입된 리액트 서버 컴포넌트는 서버에서 동작하는 리액트 컴포넌트를 의미합니다. Next가 권장하는 라우팅 방식인 app router의 기반이 되는 컴포넌트이기 때문에 app router 를 이해하기 위해서는 server component 에 대한 이해가 필요합니다. server component 리액트는 클라이언트단만을 컴포넌트화하는 대신, server component라는 개념을 통해 서버 영역을 컴포넌트화합니다. ...

Jan 29, 20243 min read

Flutter, JavaScript

42 posts