컴퓨터를 사용하다보면 프로그램이라는 단어를 많이 사용해보았을 것이다.
- 프로그램
윈도우 사용자 기준으로 설명을 한다면 .exe파일들 , 즉 실행할수 있는 모든 것을 프로그램이라고 한다.
- 프로세스
그리고 그 프로그램들이 실행이 되거나 동작을 하게 되면 그것들을 프로세스라고 한다.
윈도우 사용자들은 강제 종료를 위해서 Ctrl + Alt + Delete 를 눌러보았을텐데 거기서 작업관리자를 들어가면 사진처럼 많은 프로세스가 현재 윈도우 상에서 돌고 있음을 확인할수 있다.
예전 초창기 컴퓨터에서는 다중, 멀티프로세싱이 불가능 하여 하나의 작업을 할동안은 다른 작업들은 대기를 해야만 했다.
하지만 기술의 발전으로 동시성 프로세싱이 가능해졌다.
여러개의 작업이 있을때 A작업조금 B작업조금 .... Z작업 조금 이렇게 하나씩 조금씩 진행을 하면서 일부분씩 프로세스를 실행하였다.
이렇게 작업을 바꾸는것을 context switch 라고 하는데 이 속도가 빠르게 되다보니 실제로 동시에 이루어지는것처럼 보이곤 했다.
하지만 요즘은 병렬 처리라 하여 cpu안에 코어라는 개념을 두고 코어에서 작업을 진행 시킴으로써 각 코어가 각자 하는 일을 실행하곤 한다.
- 스레드
작업은 프로세스 단위로 이루어 지는데 그러면서 자연스레 프로세스 단위로 자원을 할당해주게 된다.
하지만 그 하나의 프로세스도 여러개의 작업들이 모여있고, 그 작업들은 비슷한 작업들로 이루어진다.
그 작업들을 하나하나를 스레드라고 한다.
- 멀티프로세스, 멀티스레드
멀티프로세싱과 멀티 스레드라는 개념도 존재하는데
멀티 프로세싱은 하나의 프로그램을 여러개의 프로세스로 구성하여 다중 프로세스가 하나의 작업을 처리하는것을 말하며
멀티 스레드는 하나의 프로그램을 여러개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는것이다.
- 자바 스레드
비슷하지만 엄연히 다른 프로세스와 스레드인데, 사용하기 위해서는 알고 사용하는것이 도움이 될것이고
자바 프로그래밍을 하게 될 경우엔 자바의 스레드에서 JVM이 OS역할을 하며 작업들이 하나하나의 스레드 단위로 동작을 하기에 최적화를 실행하기엔 더욱 도움이 될것이다.
'IT > Knowledge' 카테고리의 다른 글
동기 / 비동기 프로그래밍 (43) | 2022.03.24 |
---|---|
Cookie ? Session? Cache? (53) | 2022.03.23 |
Internet Explorer 가 사라지고 있는 이유 (51) | 2022.03.21 |
Browser란? (50) | 2022.03.20 |
MVC란? (44) | 2022.03.19 |
댓글