본문 바로가기

멀티쓰레드3

[Java] 쓰레드 2 - 싱글쓰레드와 멀티쓰레드 싱글 쓰레드와 멀티 쓰레드 싱글코어에서 하나의 쓰레드로 두개의 작업을 수행한 시간과, 두개의 쓰레드로 두개의 작업을 수행한 시간은 거의 비슷하다. 두 개의 쓰레드로 수행한 게 좀 더 걸리게 되는데, 쓰레드간의 작업전환(context switching)에 시간이 걸리기 때문이다. 작업전환에는 다음에 실행시켜야할 위치(PC, 프로그램 카운터) 등의 정보를 저장하고 읽어오는 시간이 소요된다. 쓰레드의 스위칭보다 프로세스의 스위칭이 더 많은 정보가 교환되므로 더 많은 시간이 소요. class ThreadEx5 { static long startTime = 0; public static void main(String args[]) { ThreadEx5_1 th1 = new ThreadEx5_1(); th1.sta.. 2022. 3. 13.
[Java] 쓰레드 1 - 구현 및 실행(start, run) 프로세스와 쓰레드 프로세스란 '실행중인 프로그램'을 뜻한다. 프로그램을 실행하면 OS(운영체제)로부터 실행에 필요한 자원(메모리)를 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있고, 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 쓰레드이다. 모든 프로세스는 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 '멀티쓰레드 프로세스(muti-threaded process)'라고 한다. 멀티태스킹과 멀티쓰레딩 대부분의 OS는 멀티태스킹(다중작업)을 지원하기 때문에 여러 개의 프로세스가 동시에 실행될 수 있다. 이와 유사하게 멀티쓰레딩은 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것이다. CP.. 2022. 3. 13.
쓰레드(Thread)란 운영체제 관련 글 순서 - 프로세스란 - 쓰레드 - CPU 스케줄링 - 동기화 툴 - 동시성 제어 예제 - 데드락 - 주 메모리 - 페이징과 스와핑 - 가상 메모리와 디맨드 페이징 - 페이지 교체 알고리즘(FIFO, OPT, LRU), 쓰레싱, working set 쓰레드(Thread) lwp(lightweight process)라고도 한다. 프로세스 내에서 실제로 작업을 수행하는 주체 모든 프로세스는 한개 이상의 스레드가 존재하여 작업을 수행 쓰레드의 자원 공통자원 code data heap 독립적인 자원 registers stack ( 지역변수, 매개변수, 리턴값) pc(program counter) 쓰레드는 독립적인 작업을 수행하기 때문에 각각의 스택과 PC,레지스터 값을 가지고 있다. 각각의 스택.. 2022. 1. 5.