임계 영역과 뮤텍스 데이터 레이스(data race)라는 개념을 이전 글에서 언급한 바있다. 이는 두개 이상의 스레드가 하나의 변수를 사용할 경우 변수에 대한 IO 주도권이 모호해지기에 데이터 충돌이 날 수 있기 때문이다. 이러한 상태를 경쟁 상태라고도 불리기도 하며 경쟁 상태는 여러 방법으로 해결할 수 있다. 뮤텍스 (Mutex) 경쟁 상태를 해결하는 대표적인 방법이 뮤텍스(mutex)이다. 상호 배제(mutural exclusion)의 준말인 뮤텍스의 개념은 굉장히 간단하다. 스레드에서 어떤 정보를 사용하는 동안 다른 스레드는 해당 정보에 접근이 불가능하다. 즉, 하나의 스레드가 특정 데이터를 사용할때, 뮤텍스의 시작을 선언("락을 건다"라고 표현한다.)하면 뮤텍스가 선언된 명령줄부터 뮤텍스가 해제(..
이전 글에서 스레드에 대해 이해했다. 이번 장에서는 멀티스레드 프로그래밍이 어디서 어떻게 사용될지 알아보자. 멀티스레드는 언제 사용되는가? 단일 스레드에서 작업하던 사람들은 멀티 스레드를 접하면 "동시에 여러 작업이 한번에 처리된다."라는 개념에 신선함을 느낄 수 있지만, 멀티스레드는 남용되면 굉장히 골치가 아파진다. 이는 멀티스레드를 어떻게 사용하는가에 따라 단일 스레드보다도 못한 성능이 나올 수도 있기도 하며, 심각하게는 조금만 실수해도 프로그램이 중단되는 오류가 될 수도 있기 때문이다. 그렇다면 멀티스레드는 어디서 사용되야하는가? 대표적으로는 다음과 같은 상황들이 있다. 오래 걸리는 일 하나와 빨리 끝나는 일 여럿을 동시에 처리하는 경우 긴 작업을 진행하는 동안 다른 짧은 일을 처리하는 경우 기기의..

컴퓨터에서 일어나는 작업들 프로그램(program)은 컴퓨터에서 실행되는 명령어들의 모음이며 코드(code)와 데이터(data)로 구성되어 있다. 이러한 프로그램을 실행시키면 프로그램 안의 명령어들이 한 줄씩 실행되며 활동을하고 이를 프로세스(process)라고 한다. 프로그램은 보조 기억 장치에 저장되고 프로세스는 RAM 메모리에 할당된다. 하여 프로그램은 코드와 데이터를 프로세스 메모리로 로딩하여 불러들이기 위해 드라이브에서 메모리로 데이터를 불러들여 힙(heap)과 스택(stack) 메모리 공간에 할당한다. 프로그램은 여러 개가 동시에 실행할 수 있고 이를 멀티프로세싱(Multi-Processing)이라고 한다. 스레드 (Thread) 각 프로세스는 시스템의 종류, 프로세스의 특징에 따라 OS가 할..
- Total
- Today
- Yesterday
- 명령어
- 메모리
- dynamic_cast
- const
- 프로세스
- 운영체제
- 백준
- CPU
- 초기화
- 구조
- 알고리즘
- c++
- 게임수학
- 크기
- 인터럽트
- 수학
- 멀티스레드
- New
- 컴파일
- 함수
- malloc
- 입출력
- 클래스
- 스레드
- 상속
- 할당
- 포인터
- thread
- 레지스터
- static_cast
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |