kakaotech-25 / cs-plant-interview

cs 의 씨앗을 심기 위한 레포지토리 🌱
2 stars 0 forks source link

[OS] 스레드의 정의와 멀티스레딩 #3

Closed rimeir closed 3 months ago

rimeir commented 3 months ago

예상 면접 질문

JaeJunday commented 3 months ago

프로세스는 프로그램의 실행단위이고, 스레드는 프로세스의 실행단위입니다. 동시성은 CPU가 동작할때 컨텍스트 스위치를 일으키며 여러작업을 번갈아 수행하는것이고 병렬성은 멀티코어등이 적용된 cpu에서 여러 프로세스를 실제로 같이 수행하는것입니다.

LEE-DA-EUN commented 3 months ago
  1. 스레드와 프로세스의 차이

    • 프로세스는 운영체제로부터 시스템 자원을 할당받는 작업 단위, 스레드는 프로세스가 할당 받은 자원으로 실행하는 가장 작은 실행단위
    • 프로세스는 컴퓨너에서 실행 중인 동적인 상태의 프로그램, 스레드는 프로세스의 실행 주체이자 작업 흐름
    • 프로세스는 독립된 메모리 영역으로 code, data, heap, stack 구조의 메모리 영역을 다른 프로세스와 공유하지 않음, 스레드는 메모리 영역인 code, data, heap, stack 중 stack만 따로 할당받고 나머지 영역을 공유
  2. 멀티스레딩의 동시성과 병렬성

    • 멀티스레딩이란 하나의 프로세스 내에서 수행되는 여러 개의 스레드를 지원하는 기능, 동시성과 병렬성을 구현하기 위한 기술이다.
    • 동시성 : 여러 작업이 동시에 실행되는 것 처럼 보이는 상태로, 실제로는 하나의 CPU 코어에서 여러 개의 스레드가 빠르게 번갈아가며 실행함.
    • 병렬성 : 여러 작업이 실제로 동시에 실행되는 상태로, 여러개의 CPU 코어에서 한 개 이상의 스레드를 포함하여 물리적으로 동시에 여러 작업을 처리함.
msung99 commented 3 months ago
    • 프로세스는 운영체제에서 독립된 작업 단위로, 각 프로세스간에 메모리와 자원을 공유하지 않고, 쓰레드에 비해 문맥 교환 비용이 상대적으로 많이 듭니다. 반면 쓰레드는 한 프로세스 내에서의 작업 흐름으로 ,같은 프로세스 내에서 쓰레드들 끼리 자원을 공유하며 문맥 교환 비용이 적습니다. 또한 멀티쓰레딩을 통해 효율적으로 CPU 자원을 사용할 수 있습니다.
  1. 동시성(Concurrency)은 여러 작업이 교대로 실행되며, "마치" 동시에 실행되는 것처럼 보이는 것을 말합니다. 이는 싱글 코어에서도 가능하며, 작업들이 스케줄링에 의해 빠르게 전환됩니다. 반면 병렬성(Parallelism)은 여러 작업이 "실제로" 물리적으로 동시에 실행되는 것을 말합니다. 이는 멀티코어 CPU에서 여러 작업이 각기 다른 코어에서 동시에 처리되는 경우에 해당합니다.