728x90
반응형

Thread 8

Task, Task<TResult> 클래스 , 비동기 프로그래밍 [Unity]

일반적으로 System.Threading.Tasks 네임스페이스 안에 2가지 클래스가 대표적으로 들어있는데 1. Task -> 비동기 작업을 나타냄 2. Task -> 값을 반환할 수 있는 비동기 작업 위 2개의 클래스들의 역할은 간단하게 말하자면 쓰레드풀로부터 쓰레드를 가져와 비동기 작업을 실행한다. ** Task 관련 클래스들과 Parallel 클래스들을 합쳐 Task Parallel Library(TPL)이라 부르는데 기본적으로 다중 CPU 병렬 처리를 염두해서 만들었다. ???뭔지 모르겠다고?? 알아보자 먼저 1번 Task부터 살펴보자 Task클래스 사용을 위해 흔히 사용되는 방법은 두 가지가 있다. 첫번째로 Task.Factory.StartNew()를 사용하여 실행하고자 하는 "메서드에 대한 델..

C++문법 / 멀티 스레딩, Multi-threading 연산

우리가 스레드를 만드는 이유는.. 효율적으로 사용하기 위해서다. 1부터 10000까지 더하는 작업은 얼마나 걸릴까??? 물론 우리는 n(n+1)/2라는 것을 알고 있지만 컴퓨터는 한 번 경험을 통해서 알게 해주고 싶다. 해보자 우선 스레드 하나로 돌려보자 #include #include #include using namespace std; using namespace chrono; void func1(int *result) { for (int i = 1; i

Thread, 스레드란?

정의 Thread is a basic unit of CPU utilization. CPU, 프로세서 사용의 기본 단위를 말한다. 왜 프로세스가 아닌 스레드가 동작하는 최소단위인가? 동일한 목적을 가진 프로세스가 여러 개가 된다면 code, data stack을 따로 만들어야한다. 하지만 같은 일을 한다면 필요한 데이터를 굳이 2번 만들필요는 없다. (같은 일을 처리하기 위해 동일한 프로그램을 여러 개의 프로세스로 만들게 되면, 그만큼 메모리를 차지하게 되고 PCB 도 각각 만들어야되고 프로세스간 통신을 위해 비용이 커진다.) 데이터의 각 부분만 다르게 각자 읽어서 수행하는 것이 더 효율적이라는 말이다. CPU 수행에 관련된 부분은 나누되 나머지 메모리, 자원같은 것들을 공유하며 존재한다. **Stack ..

CS Interview 2021.06.29

Process, 프로세스란?

21.11.01 Update (멀티 프로세스 내용 추가) 정의 실행 중인 프로그램, Program in execution이다. 다시 말하지만 프로그램 자체는 프로세스가 아니다. 프로그램은 명령어 리스트를 내용으로 가진 디스크에 저장된 파일, 단지 실행 파일일 뿐인다. 그래서 수동적인 존재라고도 한다. 프로세스 문맥교환이란? (Context Switching) 문맥교환은 CPU 레지스터에 저장된 한 프로세스의 상태 정보를 저장하고, 다른 프로세스를 위한 새로운 상태 정보를 레지스터로 읽어 들이는 연산이다. (CPU에서 일어나는 일) PCB는 프로세스가 실행되지 않을 때 기존의 CPU 레지스터를 복사해서 가지고 있는다. 즉, 한 프로세스의 실행이 멈추었을 때는 모든 CPU 레지스터의 내용응 PCB에 저장해놓..

CS Interview 2021.06.28

프로세스(process)란 무엇인가? [운영체제]

쉽게 말하자면 프로세스란 실행 중인 프로그램을 말한다. 자세히 알아보자 운영체제의 주 목적은 사용자 프로그램을 실행하는 것이지만 커널 안에서 보다 사용자 공간에서 가장 잘 할 수 있는 다양한 시스템 작업을 할 필요가 있다. 그래서 하나의 시스템은 일부는 사용자 코드를 실행하고 나머지는 운영체제 코드를 실행하는 프로세스들의 집합체이다. 우선 그림을 보고가자면 이 그림은 프로세스 메모리 배치의 그림이다. **컴퓨터 구조에서 많이 봤다면 같은 것이다. 다시 말하겠다. 프로세스란 실행 중인 프로그램이다. 프로세스의 현재의 상태는 프로그램 카운터(PC) 값과 나머지 프로세서 레지스터의 내용으로 나타낸다. 1. Text: the executable code 실행 코드가 들어간다. 2. Data: global var..

Bounded-Buffer Problem(Producer-Consumer Promlem), 동기화[운영체제]

세마포와 모니터의 사전 이해가 필요하다. [컴퓨터(Computer Science)/운영체제(Operation System)] - 동기화, 세마포 : Synchronization, Semaphores [운영체제] [컴퓨터(Computer Science)/운영체제(Operation System)] - 동기화, 모니터 : Synchronization, Monitor 사실 나는 생산자-소비자 문제로 알고 있었다. 생산자가 데이터를 생산하면 소비자는 그 데이터를 소비하는 형태의 문제이다. 산한 데이터는 중간의 버퍼,buffer 에 저장해두고 소비자는 여기서 필요한 만큼 가져간다. 버퍼의 크기는 유한해서 버퍼 공간 크기 이상의 데이터를 저장할 수 없고 소비자는 버퍼가 비어있다면 가져올 수 없다. **유한한 버퍼의 ..

728x90
반응형