목록Computer Science/Operating System (4)
The Boxer
[스레드(Thread)]- 정의 : 프로세스 내에서 실행되는 세부 작업의 단위.- 여러 스레드가 모여서 하나의 프로세스를 구성할 수 있습니다.- 즉, 프로세스의 작업 단위를 나눈 것을 스레드라 할 수 있습니다. [특징] - 스레드는 프로세스 내의 다른 스레드들과 Code, Data, Heap 영역을 공유하고 자신만의 Stack 영역을 소유합니다.영역별 설명- Code : Program Counter(다음번에 실행할 명령어 주소), 프로그램 코드를 저장 => Code를 공유하기 때문에 두 개 이상의 스레드가 자신이 포함된 프로세스의 Code영역에 있는 함수를 호출할 수 있습니다.- Data : 글로벌 변수, 스태틱 변수 저장- Heap : 동적 메모리 할당 공간 => 메모리 영역을 공유하기 때문에 프로세스..
※ 두 스레드를 구분할 때 물리적과 논리적이라는 단어는 제가 임의로 붙인 단어입니다. 하드웨어적으로 구현된 스레드와 소프트웨어적으로 구현된 스레드를 구분하기 위함입니다. [물리적 스레드] - 물리적 스레드를 알기 전에 먼저 코어가 무엇인지 알아봅시다. - 코어 : CPU에 내장된 처리회로. 명령어를 메모리에서 뽑아 해석하고 실행하는 반도체 유닛.- CPU는 다수의 코어를 장착할 수 있습니다. 최근에 나오는 듀얼 코어(2코어), 쿼드 코어(4코어), 옥타 코어(8코어) 등이 그 개념입니다.- 코어의 수가 증가할수록 CPU의 처리 속도는 빨라집니다. 싱글 코어에서 2번 해야될 연산을 듀얼 코어에서는 한번에 수행하여 완료할 수 있습니다. 다만, 코어가 증가할 수록 클럭(코어당 연산의 속도)가 낮아진다는 단점이..
[프로세스(Process)] 정의 : 컴퓨터에서 연속적으로 실행되고 있는 프로그램메모리상에서 실행되는 코드 특징- 프로세스는 실행시 Code, Data, Stack, Heap의 독립된 메모리 영역을 할당 받음- 중앙처리장치(CPU)가 돌면서 여러 프로세스를 처리(멀티 프로그래밍)- 프로세스를 회전하면서 프로세스의 상태(Context)를 저장하고 실행시 다시 불러옴(Context Switching)- 프로세스는 독립된 메모리 영역을 차지하므로 Context Switching에 오버헤드가 발생함 [쓰레드(Thread)]정의 : 프로세스에서 동작하는 여러 실행의 흐름프로세스는 최소 1개 이상의 쓰레드를 소유하나의 프로그램에서 여러개의 태스킹을 동시에 실행할때 스레드를 사용가령 게임에서 여러 캐릭터들이 동시에 ..
[동시성(Concurrency)] 싱글코어에서 멀티쓰레드를 동작시키는 방식 싱글코어가 여러개의 쓰레드를 번갈아 가면서 작업(멀티 프로그래밍)논리적인 병렬성 구현쓰레드가 병렬적으로 실행되는것 처럼 보임 [병렬성(Parallelism)]멀티코어에서 멀티쓰레드를 동작시키는 방식멀티코어가 여러개의 쓰레드를 동시에 작업(멀티 프로세싱)물리적인 병렬성 구현쓰레드가 실제로 병렬적으로 실행됨 데이터 병렬성- 같은 작업을 병렬처리 하는 방식- 전체 데이터를 서브 데이터로 나누어 서브 데이터들을 병렬처리- 서브 데이터는 코어 수 만큼 나뉨- Java 8에서 지원하는 병렬 스트림이 데이터 병렬성을 사용함 작업 병렬성- 서로 다른작업을 병렬처리 하는 방식 [Parallelism vs Concurrency] (출처 : http..