[MultiTasking/MultiThread] 멀티태스킹과 멀티스레드

양다혜·2021년 11월 30일
1

컴퓨터기초지식

목록 보기
4/4

이전 글 내용처럼, 프로세스가 메모리에 올라갈 때 운영체제로부터 자원을 할당받는다. 이 때 각각 독립된 메모리 영역(Code/Data/Stack/Heap) 을 할당해주기 때문에 프로세스는 다른 프로세스의 변수나 자료에 접근할 수 없다.

이와 다르게 스레드는 메모리를 서로 공유할 수 있다. 스레드는 코드 내의 함수로 표현할 수 있다. 예를 들어 어떤 프로그램에서 메인 함수는 하나의 스레드가 되는 것이다.

스레드는 실행 흐름의 단위라고 했지만, CPU 입장에서는 스레드가 최소 작업의 단위이고 운영체제 입장에서는 프로세스가 최소 작업 단위인 것이다.

본론으로 가서 멀티태스킹과 멀티스레드를 알아보자!

멀티태스킹

💡 하나의 운영체제 안에서 여러 프로세스가 실행되는 것

(멀티태스킹은 여러 프로세스가 동시에 실행되는 것처럼 보이지만 그렇지 않다.)

멀티스레드

💡 하나의 프로세스가 여러 작업을 여러 스레드를 사용하여 동시에 처리하는 것

멀티스레드 장점

  • Context-Switching할 때 공유하고 있는 메모리 만큼 자원을 아낄 수 있다.
  • 스레드는 프로세스 내의 스택 영역을 제외한 모든 메모리를 공유하기 때문에 통신의 부담이 적어서 응답 시간이 빠르다.

멀티스레드 단점

  • 스레드 하나가 프로세스 내 자원을 잘못 건드리면 모든 프로세스가 종료될 수 있다.
  • 자원을 공유하기 때문에 동기화 문제가 발생할 수 있다.
profile
아는 것을 잘 설명할 수 있는 개발자되기👩🏻‍💻

0개의 댓글