대충벌레 블로그
article thumbnail
728x90
반응형


멀티 태스킹[Multi-tasking]

여러 개의 어플리케이션을 동시에 실행하여서 컴퓨터 시스템의 성능을 높이기 위한 기법입니다.

예를들어 사람은 음악을 들으며 동시에 운동을 할수 있습니다. 

컴퓨터의 경우도 파일을 인쇄하면서 동시에 문서를 편집하거나 파일을 다운로드 받을수 있습니다.

컴퓨터에 CPU가 하나만 있어도 병렬 작업은 가능한데, 이는 운영 체제가 CPU의 시간을 쪼개서 각 작업들에 할당하여 작업들이 동시에 수행되는 것처럼 보이게 하기 때문입니다. 물론 멀티코어를 가진 CPU라면 실제로 동시에 실행이 됩니다.

 

멀티 스레딩[Multi-threading]

병렬 작업의 아이디어를 하나의 애플리케이션 안으로 가져온것입니다.

즉 하나의 애플리케이션 안에서도 여러 가지 작업을 동시에 하는 것을 의미합니다.

예를 들어 음악을 재생하는 애플리케이션은 인터넷을 통하여 mp3 파일을 다운로드 받으면서 동시에 압축을 풀어서 음악을 재생합니다 . 이들 각각의 작업은 스레드(Thread) 라고 불립니다.

스레드는 실이라는 의미로, 하나의 실행 흐름(thread of execution)을 의미합니다.

자바는 멀티 스레딩을 프로그래머들한테 언어 수준에서 제공하고, 프로그래머들은 하나의 애플리케이션 안에서 동시에 실행되는 여러 스레드를 만들수 있으며 이 스레드들은 자바 런타임 시스템에 의하여 동시에 실행됩니다.

 

프로세스와 스레드

컴퓨터에는 프로세스(Process)스레드(Thread)라는 2가지의 실행단위가 있습니다.

가장 근본적인 차이점은 프로세스는 자신만의 데이터를 가지는 데 반해 스레드들은 동일한 데이터를 공유합니다.

동시에 수행되는 스레드들이 변수를 공유하는것은 상당히 위험할수 있지만 동시에 변수를 공유함으로 해서 스레드 간의 통신이 상당히 효율적이게 됩니다.

 

프로세스

프로세스는 실행중인 프로그램입니다. 프로세스는 독자적으로 실행이 가능한 환경을 가지고 흔히 프로그램이나 애플리케이션과 동일한 의미로 사용되지만 하나의 애플리케이션이 여러개의 프로세스로 이루어질수도 있습니다.

또한 프로세스는 자신만의 자원을 가지며 메모리 공간은 다른 프로세스와는 완전히 분리되어 있습니다.

 

스레드

스레드는 경량 프로세스(lightweight process) 라고 불립니다. 왜냐하면 스레드를 생성하는 것은 프로세스를 생성하는 것보다 훨신 자원이 적게 들기 때문입니다. 스레드들은 프로세스 안에서 존재하며 메모리와 파일을 포함하여 프로세스의 모든 자원을 공유합니다.

 

반응형
profile

대충벌레 블로그

@대충벌레

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!