728x90 전체 글69 [c#/유니티] 네트워크 기초 - 스위치와 라우터 1️⃣ 라우터 : 서로 다른 네트워크를 연결하는 역할을 한다. (네트워크 간) IP주소를 사용하여 데이터 전송을 수행한다. 2️⃣ 스위치 : 같은 네트워크 안에서 데이터 전송을 한다. (네트워크 내) LAN 포트 사이에서 데이터 전송을 하며 MAC 주소를 사용한다. 🤔 MAC와 IP 차이? 📌 MAC 주소 (Media Access Control Address) 하드웨어 고유 주소, 48비트 16진법을 사용한다. 하드웨어 제조 업체가 지정. DC-21-5C-3C-6B-C6 다음과 같은 주소에 해당한다. 📌 ip 주소(Internet Protocol) : 네트워크 관리자 혹은 인터넷 서비스 공급자(ISP)에 의해 제공되는 주소 네트워크 연결을 위해 제공되는 주소 IPv4 주소는 32 비트 주소이고 IPv6 .. 2022. 12. 12. [c#/유니티] ReaderWriterLock 구현 하기 📌 ReaderWriterLock 이란? 읽기 전용 작업(Read-Only) 에 대해서는 동시 접근을 허용하고, 쓰기 작업에 대해서는 독점 접근(exclusive)을 함. 🤔 왜, 언제 사용할까 ❗❓ lock을 사용하면 오직 하나의 스레드만 코드(임계영역)에 접근할 수 있다. 하지만 하나의 스레드만이 쓰고 읽을 수 있다면 매우 시간도 오래걸리고 비효율적일 것이다. 👉 ReaderWriterLock은 이를 해결해준다. 다수의 스레드들이 읽을 수 있게 하며, 쓰기 전용 권한을 가질 수 있도록 한다. 다수의 독자가 있고 작성자가 적은 경우에 효율적이다. .. 2022. 12. 9. [c#/유니티] DeadLock과 SpinLock에 대해 DeadLock에 대해 알아보자 📌 데드락(DeadLock)이란? 두 개 이상의 프로세스가 서로의 작업이 끝나기만을 기다림. 둘 다 대기상태에 이르러 영원히 끝나지 않은 상황이다. 교착 상태라고도 말한다. 👉 한정된 자원을 얻기 위해 서로 경쟁하기 때문에 발생한다. 🔎 DeadLock의 4가지 필요 조건 아래 4가지 조건이 모두 만족되는 경우, 데드락이 발생하라 가능성이 있음 하나라도 만족하지 않으면 절대로 발생하지 않는다. -> 하나라도 해결되면, 데드락 문제를 풀 수 있다. .. 2022. 12. 8. [c#/유니티] 임계영역(Critical Section)을 위한 Monitor와 Lock 멀티 스레드 환경에서 같은 객체를 여러 곳에서 호출하는 경우 예기치 않은 결과가 나타날 확률이 높다. 📌 Monitor 활용 상호 배제(Mutual Exclusive)를 이뤄 다른 스레드의 접근을 막도록 한다. Enter과 Exit로 구현하며 Enter는 문을 잠그는 행위, Exit는 문을 여는 행위라 생각하면 된다. Thread 1에서 Monitor.Enter(_obj)를 통해 임계 영역(Critical Section)에 들어가면, Thread2는 Thread 1에서 Monitor.Exit(obj)로 해제할 때 까지 해당 영역에 접근하지 못한다. *임계 영역 : 여러 스레드가 공유 자원에 접근할 때, 하나만 접근할 수 있도록 보장해 주는 영역. static int number = 0; //공유 자원 s.. 2022. 12. 7. [c#/유니티] Interlocked에 대해 * Interlocked란? int 형 값을 증가시키거나 감소시키는 데 사용하는 클래스 이다. 원자성과 순서를 보장해준다. (단점 : 성능에서 손해) 다음과 같이 int 형 전역 변수인 number를 공유하고 있는 상황에서 Thread_1과 Thread_2가 number를 증가시키거나 감소시키는 작업을 하려 한다. static int number = 0; //전역변수 static void Thread_1() { for (int i = 0; i < 100000; i++) number++; } static void Thread_2() { for (int i = 0; i < 100000; i++) number--; } 결과값으로 0을 기대 했지만, 이상한 값이 나오는 것을 볼 수 있다. 왜..? 🤔 threa.. 2022. 12. 7. [c#/유니티] 캐시(Cache) 이론과 메모리 배리어(Memory Barrier) * 캐시(Cache)란? 자주 사용하는 데이터나 값을 미리 복사해 둔 임시 장소이다. 저장공간이 작고 비용이 비싼 대신 빠른 성능 제공 장점 : 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터 접근이 가능함. 즉, DBMS 혹은 서버에 요청하기 보다는 메모리에 데이터를 저장하여 불러다 쓴다. -> DBMS의 부하가 줄어들며 성능을 높이기 위해서 사용 * 캐시(Cache) 철학 1) 시간 지역성(temporal locality) : 가장 최근에 사용한 변수가 또 사용될 확률이 높다 2) 공간 지역성(spacial locality) : 방금 접근한 주소와 인접한 주소의 변수가 사용될 확률이 높다 int[,] arr = new int[10000, 10000]; { long now .. 2022. 12. 6. 이전 1 ··· 3 4 5 6 7 8 9 ··· 12 다음 728x90 반응형