JAVA 16

스레드 생성과 실행 - 스레드 종류

1. 자바 메모리메서드 영역프로그램을 실행하는데 필요한 공통 데이터를 관리클래스 정보static 영역런타임 상수 풀 스택 영역자바 실행 시, 하나의 실행 스택이 생성스택 프레임 : 메서드를 호출할 때 마다 하나의 스택프레임이 쌓이고, 메서드가 종료되면 해당 스택 프레임이 제거스레드 별로 하나의 실행 스택이 생성된다. 따라서 스레드 수 만큼 스택이 생성지역 변수, 중간 연산 결과, 메서드 호출 정보 힙 영역객체(인스턴스)와 배열이 생성, GC가 이루어지는 영역2. 멀티 스레드public class HelloThread extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getN..

JAVA 2024.10.23

Context switching와 스레드작업 종류(CPU-bound tasks, I/O-bound tasks)

Context switching정의 : CPU에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것  위원회 준비를 하다가, 다른부서에 시스템 사용문의 요청이 들어왔으면 위원회 준비를 어디까지 헀는지 적어놨다가 멈추고 나중에 메모를 보면서 머리속에 진행흐름(문맥)을 기억해내고 진행을 해야한다 운영체제의 멀티테스킹도 과정이 같은데, 잠깐 중단하는 스레드 진행 위치와 계산하던 변수의 값(문맥)을 메모리에 저장해놨다가 다시 진행할때 이 값들은 CPU에 불러와야한다. 이런과정을 컨텍스트 스위칭이라고 한다. 컨텍스트 스위치 과정에서 이전에 실행 중인 값을 메모리에 잠깐 저장하고, 이후에 다시 실행하는 시점에 저장한 문맥을 CPU에 다시 불러와야 해서 약간의 비용이 발생한다.  그러므로 멀티스레드는..

JAVA 2024.10.21

(스레드) Thread와 Scheduling

"운영체제가 스케줄링을 수행하고CPU를 최대한 사용하면서 작업이 골고루 수행될 수 있게 최적화 한다." 1. 멀티태스킹에서의 Scheduling 과정 한 CPU 코어가 프로세스A - 잠깐 중단 하고 프로세스B - 잠깐 중단...(반복)  □ 단일 코어 스케쥴링 (CPU 코어1개)대기스케쥴링 큐 스레드A1, 스레드B2, 스레드B1CPU 코어-  프로세스A 스케쥴링 큐  스레드B2, 스레드B1CPU 코어스레드A1  - 잠깐 중단 하고 프로세스B 스케쥴링 큐  스레드A1, 스레드B1CPU 코어스레드B2 - 잠깐 중단..  프로세스B 스케쥴링 큐  스레드A1 , 스레드B2CPU 코어 스레드B1 □ 멀티 코어 스케쥴링 (CPU 코어 2개 이상)대기스케쥴링 큐 스레드A1, 스레드B2, 스레드B1CPU 코어-    ..

JAVA 2024.10.21

프로세스와 스레드

"운영체제 안에 프로세스가 있고, 프로세스 안에 스레드가 있다."프로그램 : 컴퓨터에서 어떤 작업을 실행할 수 있는 코드 덩어리프로세스 : 운영체제 안에서 실행중인 프로그램스레드 : 프로세스 내에서 실행되는 작업의 단위, 하나의 프로세스는 하나 이상의 스레드를 가지고 있다 1. Program컴퓨터에서 어떤 작업을 위해 실핼할 수 있는 '정적인 상태'의 파일 (ex. exe 파일)사용자가 원하는 일을 처리할 수 있도록 프로그래밍 언어를 사용하여 올바른 수행절차를 표현해 놓은 명령어의 집합(=  어떤 작업을 하기 위해 해야할 일들을 순서대로 나열 = 코드 덩어리)이에 필요한 데이터를 묶어 놓은 파일로 보조 기억장치에 저장되어있다.2. Process (작업의 단위)자바 언어로 비유하면 클래스는 프로그램, 인스..

JAVA 2024.10.21

(스레드) Multi-Tasking과 Multi-Process

"멀티 태스킹은 소프트웨어 기반, 멀티 프로세스는 하드웨어 기반 개념이다" 1. Multi Tasking프로그램의 실행은 프로그램을 구성하는 코드를 순서대로 CPU에서 연산(실행)한다. CPU 코어는 하나로 가정하고, 한 번에 하나의 프로그램 코드만 실행한다.Ex - CPU연산이 느리다면, 음악 프로그램을 모두 실행한 다음에 워드 프로그램을 실행할 수 있다.이를 개선하기 위해 멀티 태스킹을 사용,하나의 CPU 코어로 여러 프로그램을 동시에 실행할 수 있는 기술.CPU가 매우 빠르게 두 프로그램의 코드를 번갈아 수행하여, 사용자가 동시에 실행되는 것 처럼 느끼게 해준다.각 프로그램의 실행 시간을 분할해서 마치 동시에 실행되는 것 처럼 하는 기법을 시분할 기법이라고 한다.하나의 컴퓨터가 동시에 여러 작업을 ..

JAVA 2024.10.21