면접카타
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 코어를 일컫는다.
출처
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
유저 플로우 작성했다.
와이어프레임을 작성했다.
와이어 프레임을 한 번 정리하고, 질문이 필요한 내용들에 대해 정리하고 있다.