스레드의 동작 원리 멀티스레드, 싱글스레드라고 부르며 작업을 동시에 처리하는 기술이라고만 알고 있는 스레드에 대해 조금 더 알아보자. 우선 단일 코어 CPU가 달린 컴퓨터가 있다고 생각하자. 이런 환경에서 프로세스나 여러 스레드가 동시에 실행될 수 있을까? 만약 A 작업과 B 작업을 동시에 진행시킨다면 어떻게 처리할까. 우선 사람이라면 보통 작업의 순서가 정해져있지 않는 이상 하나의 작업을 완료하고 다른 작업을 진행할 것이다. 하지만 우리가 다루는 컴퓨터는 사람과 동일하게 생각하지 않는다. 컴퓨터는 하나의 작업을 하면서 여유가 생기는 찰나의 순간 다른 작업을 진행하려 한다. 즉, 여러 프로세스와 스레드들을 동시에 실행하는 운영체제는 일정 시간마다 번갈아가며 스레드들을 실행한다. 이렇게 스레드를 변경하며 ..
이전 글에서 스레드에 대해 이해했다. 이번 장에서는 멀티스레드 프로그래밍이 어디서 어떻게 사용될지 알아보자. 멀티스레드는 언제 사용되는가? 단일 스레드에서 작업하던 사람들은 멀티 스레드를 접하면 "동시에 여러 작업이 한번에 처리된다."라는 개념에 신선함을 느낄 수 있지만, 멀티스레드는 남용되면 굉장히 골치가 아파진다. 이는 멀티스레드를 어떻게 사용하는가에 따라 단일 스레드보다도 못한 성능이 나올 수도 있기도 하며, 심각하게는 조금만 실수해도 프로그램이 중단되는 오류가 될 수도 있기 때문이다. 그렇다면 멀티스레드는 어디서 사용되야하는가? 대표적으로는 다음과 같은 상황들이 있다. 오래 걸리는 일 하나와 빨리 끝나는 일 여럿을 동시에 처리하는 경우 긴 작업을 진행하는 동안 다른 짧은 일을 처리하는 경우 기기의..
컴퓨터에서 일어나는 작업들 프로그램(program)은 컴퓨터에서 실행되는 명령어들의 모음이며 코드(code)와 데이터(data)로 구성되어 있다. 이러한 프로그램을 실행시키면 프로그램 안의 명령어들이 한 줄씩 실행되며 활동을하고 이를 프로세스(process)라고 한다. 프로그램은 보조 기억 장치에 저장되고 프로세스는 RAM 메모리에 할당된다. 하여 프로그램은 코드와 데이터를 프로세스 메모리로 로딩하여 불러들이기 위해 드라이브에서 메모리로 데이터를 불러들여 힙(heap)과 스택(stack) 메모리 공간에 할당한다. 프로그램은 여러 개가 동시에 실행할 수 있고 이를 멀티프로세싱(Multi-Processing)이라고 한다. 스레드 (Thread) 각 프로세스는 시스템의 종류, 프로세스의 특징에 따라 OS가 할..
게임 서버 게임을 여러 사람과 즐기기 위해선 인터넷 연결을 통해 네트워크 통신을 해야한다. 인터넷을 통해 다른 컴퓨터나 서버 연결이 된다면 게임 클라이언트는 필요한 정보를 외부에서 받아 플레이어의 화면에 출력할 수 있다. 이러한 멀티 플레이를 위한 게임 서버에도 게임의 장르에 따라 사용되는 다양한 형태의 네트워크가 존재한다. P2P (Peer-To-Peer) P2P 서버는 고전 게임과 더불어 현재도 특정 게임 장르에 고정적으로 사용되는 서버 형태이다. P2P의 특징이라면 중앙 서버가 없이 클라이언트 컴퓨터끼리 직접 통신하는 방식을 말한다. 하여 프로그램 엔진으로 컴퓨터간 연결을 통해 데이터나 파일을 송수신하기만하면 되는 간편하고 빠른 속도를 제공한다. (과거에 비해 인터넷이 많이 발전하면서 속도가 많이 ..
- Total
- Today
- Yesterday
- 함수
- 게임수학
- 수학
- New
- 멀티스레드
- 크기
- 초기화
- 입출력
- 프로세스
- dynamic_cast
- 인터럽트
- 컴파일
- CPU
- 알고리즘
- 백준
- 스레드
- 메모리
- const
- 구조
- 상속
- c++
- static_cast
- 포인터
- 클래스
- 할당
- 명령어
- thread
- malloc
- 레지스터
- 운영체제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |