본문 바로가기

Process

(3)
[Java] Single Thread와 Multi Thread Multi Threading 개념Multi Threading란Multi Threading은 하나의 프로세스 내에서 여러 스레드가 동시에 작업을 수행하는 것이다. 그러나 Multi Threading에서 스레드들은 번갈아가면서 실행되는 경우가 더 일반적이다. 보통 스레드의 수는 언제나 코어의 개수보다 훨씬 많은 환경이기 때문이다. 그래서 프로세스의 성능이 단순히 스레드의 개수에 비례하는 것이 아니다. 경우에 따라 하나의 스레드를 가진 프로세스 보다 두 개의 스레드를 가진 프로세스가 오히려 더 낮을 성능을 보일수도 있다. 물론, CPU 코어의 개수에 따라 Multi Threading은 병렬로 처리될수 있다. CPU 코어 개수가 실행되는 스레드 개수 이하일떄는 말이다. 실제로 CPU의 코어에서는 한번에 하나의 ..
[Linux] Multi Tasking와 Multi Processing Multi Tasking단일 프로그램 실행예를 들어, 연산을 처리하는 CPU 코어를 하나라고 가정한다. 이때, 음악 프로그램으로 노래를 들으면서 워드 프로그램을 사용하면 어떻게 되나? 음악 프로그램을 종료된 이후에 워드 프로그램으로 문서 작업을 할수 있다. 프로그램의 실행은 프로그램을 구성하는 코드를 순서대로 CPU가 연산하는 것이다. 앞서 가정했듯이 CPU 코어가 하나라면, 한번에 하나의 프로그램의 코드를 실행할수 있다.  이러한 문제점을 해결하기 위해서, 하나의 CPU 코어로 여러 프로그램들을 동시에 실행하는 multi tasking 기술이 등장했다. Multi Tasking이란?컴퓨터 시스템에서 하나의 코어로 동시에 여러 작업(프로그램)을 수행하는 능력을 Multi Tasking이라 한다. 다만,..
[Java] Process와 Thread Process프로세스란?프로세스를 간단히 말하면 프로그램이 실행된것이다. 프로그램은 실행하기전에는 단순히 파일에 불과하다. 그러나 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아서 프로세스가 된다. 운영체제의 각 프로세스는 독립적인 메모리 공간을 갖고 있다. 이렇게 운영체제에 의해 프로세스들은 각기 격리되어 관리되기 때문에 하나의 프로세스가 충돌해도 다른 프로세스에 영향을 끼치지 않는다.  프로세스의 메모리 영역code: 실행할 프로그램의 코드가 저장되는 영역data: static 변수와 global 변수가 저장되는 영역heap: 동적으로 할당되는 영역stack: 메서드 호출시 생성되는 지역변수, 매개변수와 반환주소가 저장되는 영역프로세스의 역할프로세스는 메모리 공간, 파일 핸들, ..