본문 바로가기
  • AI (Artificial Intelligence)
Fundamental/Technical

Process 와 Thread 이해

by 로샤스 2014. 12. 19.

1. 프로세스(Process)


프로그램은 윈도우나 리눅스,맥OS같은 운영체제(OS)에 의해서 실행된다. 운영체제들은 프로그램을 실행할때 프로세스 단위로 관리한다.  하나의 프로그램은 하나의 프로세스에 해당된다.


2. 멀티 프로세스(멀티 프로그램, 멀티 태스킹)

컴퓨터의 중앙처리장치(cpu)는 한번에 하나의 일만을 처리한다. 프로그램(프로세스)을 실행시킨다면 한번에 하나의 프로그램만을 실행시킬 수 있다는 말이다. 
하지만 요즘의 운영체제들은 cpu에 시분할시스템을 이용하여 메모리에 다수의 프로그램(프로세스)을 로드시켜놓고 빠른 속도로 번갈아 가면서 실행한다.  실제 사용자에게는 다수의 프로그램이 동시에 실행되는 것처럼 느껴진다.(ex : 음악을 들으면서 게임을 즐기거나 인테넷 사용을 한다) 이것을 "멀티태스킹"이라 한다.  대분의 멀티태스킹은 운영체제 차원에서 지원한다.


3. 쓰레드(Thread)

하나의 프로그램(프로세스)를 쪼개어서 보면 다수의 메서드(함수)로 구성되어 있다.  하나의 프로그램 내에서도 cpu는 한번에 하나의 메서드만을 실행시킬 수 있다. 하나의 프로그램내에서 실행되는 메서드를 쓰레드라 부른다.

※ 프로그램을 실행하면 스택영역의 메모리를 할당받고 스택영역에 올라오는 메세드를 하나씩 처리한다. 자바 프로그램 실행되는 메모리의 구조는 다음을 참조. http://cafe.naver.com/jjdev/227


4. 멀티 쓰레드(멀티 메서드)

메신저같은 프로그램의 경우를 보면 파일을 다운로드 받으면서 채팅을 즐기수 있다. cpu는 하나의 프로세스내에서 한번에 하나의 메서드만을 실행 시킬 수 있다고 했는데, 메신저의 경우 다수의 메서드가 실행되는 것처럼 느낄수 있다.
이것은 cpu가 여러개의 메서드를 빠른 속도로 번갈아 가면서 실행하기에 사용자에게는 동시에 실행되는 것처럼 느껴지는 것이다. 

※ 자바언어에서는 하나의 스택메모리에서 한번에 하나의 메서드만을 사용가능하기에 다수의 스택메모리를 만들어 서 멀티스레드를 구현한다.( java.lang.Thread 클래스 사용 http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html 참조




* 자바언어에서 멀티 쓰레드를 구현하는 방법은 http://cafe.naver.com/jjdev/1159 참조

 

 

 

 

 

출처 : http://cafe.naver.com/jjdev/1758

 

 

 

 

 

 

 

'Fundamental > Technical ' 카테고리의 다른 글

Pub/Sub model  (3) 2019.08.23
IaaS, PaaS, SaaS란 무엇인가?  (0) 2019.06.17
IDS (intrusion detection system)  (0) 2014.12.02
[Terms] RRDtool (round robin database tool)  (0) 2014.11.28
VLAN (Virtual LAN) 에 대한 몇가지 개념  (0) 2014.07.31

댓글