멀티스레드

둘 이상의 스레드가 하나의 프로세스에서 동시에 작업하는 것을 의미, 하나의 프로세스 내의 여러 스레드들은 프로세스에게 할당받은 자원을 공유한다. (스택 영역은 공유 X)

 

스레드 스케줄링

스레드를 어떤 순서로 동시성을 실행할 것인지 결정하는 것, (우선순위, 순환 할당 방식이 있다.)

스레드가 많다고 좋은 건 아니다.

컴퓨터가 동시에 작업 수는 CPU의 코어 수와 같다. CPU의 코어 수보다 스레드를 많이 사용하게 되면 문맥 교환이 발생하는데 오히려 효율은 저하된다. 코어 수만큼 스레드를 실행시키는 것이 좋다.

 

 


https://tcpschool.com/java/java_thread_multi

반응형

'STUDY > 네트워크' 카테고리의 다른 글

[네트워크] 유니티 네트워크 공부#1  (0) 2021.08.09
네트워크) TPC/IP 프로토콜  (0) 2019.11.17
네트워크) 네트워크 구성  (0) 2019.11.13

네트워크 프로그래밍 관련 공부를 하면서 간단히 정리해보았다. TCP

 

ServerCore(서버) /  Client(클라이언트) 두 개의 스크립트를 작성한다.

 

ServerCore

string host = Dns.GetHostName();
IPHostEntry ipHost = Dns.GetHostEntry(host);
IPAddress ipAddr = ipHost.AddressList[0];
IPEndPoint endPoint = new IPEndPoint(ipAddr, 7777);

host : ip주소가 아닌 도메인주소로 사용하도록 한다. 

AddressList : IP주소 리턴

IPEndPoint : IP주소와 포트번호를 통해 생성

 

Listener.class

매개변수 OnAcceptHandler : Accept이 성공했을 때 불리는 콜백

_listenSocket.Bind(endPoint); : 넘겨 받아온 IPEndPoint의 바인드 처리

_listenSocket.Listen(10); : Listen 시작 클라이언트의 연결 요청을 대기상태

SocketAsyncEventArgs : 비동기 소켓의 관련한 패턴을 사용할 때? 쓰임

args.Completed += new EventHandler<SocketAsyncEventArgs>(OnAcceptCompleted); : 작업이 완료되면 OnAcceptCompleted을 호출

RegisterAccept(args); : 최조 한번 등록

 

args.AcceptSocket = null; : 전에 사용했던 args이기 때문에 null 초기화 작업

bool pending = _listenSocket.AcceptAsync(args); : 완료되면 false를 리턴

즉시 완료되면 OnAcceptCompleted 실행

 

_OnAcceptHandler.Invoke(args.AcceptSocket); : 연결 성공시 송수신 처리

RegisterAccept(args); : 다시 Accept 처리.

 

Init()에서 최초 Accept 처리 -> Accept 성공 완료 콜백 OnAcceptCompleted 에서 Accept 처리 -> Accept처리 ...

로 계속 반복해서 Accept을 시도한다.


 

인프런 유니티로 만드는 MMORPG 게임 개발 시리즈를 학습 예제

반응형

'STUDY > 네트워크' 카테고리의 다른 글

[네트워크] 멀티스레드 #1  (0) 2021.09.23
네트워크) TPC/IP 프로토콜  (0) 2019.11.17
네트워크) 네트워크 구성  (0) 2019.11.13

네트워크 구성TPC/IP 프로토콜

TCP/IP는 4단계 층으로 구성되는 계층적 프로토콜이다. 가장 하위 계층에는 네트워크 접속 계층이 있는 이는 하나의 계층으로 정의하기도 하고 또는물리 계층과 네트워크접속 계층, 2개의 계층으로 정의하기도 한다. 그 다음 패킷을 목적지까지 전송 책임을 수행하는 인터넷 프로토콜계층 그리고 종단간 신뢰성있는 연결을 수행하는 세그먼트 단위의 정보교환을 담당하는 전송 계층이 있으면 마지막으로 송수신지 응용 프로세스 사이 정보의 처리 기능을 수행하는 응용프로세스 계층이 있다.  

응용 계층

응용 계층은 원격의 프로세스 혹은 응용들 사이에 통신을 제공한다. HTTP, FTP, Telent, SMTP, SNMP기반의 응용서비스가 수행되는 계층이다.

  1. HTTP웹 서비스를 제공하는 응용 계층 프로토콜이다. 
  2. FTP파일 전송에 사용되는 프로토콜로서 파일의 전송을 위해 두개의 연결이 생성된다. 하나는 원격 시스템에 제어정보 송수신을 위해 연결된다. 그리고 연결 후 파일 전송을 위해 또 다른 연결이 수행된다.
  3. Telnet과 SMTP
  4. SNMP

전송 계층

1. TCP

전송 계층 프로토콜은 TCP와 UDP가 있다.  TCP 프로토콜은 두 종단 호스트간에 신뢰적인 연결형 서비스를 제공하여, 전송메세지의 정확한 수신지 도착 여부의 확인을 보장한다. 즉 시간 초과와 오류 재전송 그리고 데이터 흐름제어 기능이 제공된다.

네트워크 계층인 IP계층에서는 비연결형을 지향하므로 네트워크에 대한 에러제어와 흐름제어 기능을 수행하지 않기 때문에 TCP전송계층에서 에러제어와 흐름제어 기능이 제공된다. 

2. UDP

UDP프로토콜은 비연결형 서비스를 지원한다. UDP의 특징은 수신측에 패킷이 도착했는지 확인 여부를 보장하지 않으며 흐름제어의 기능을 제공하지 않는 비신뢰적인 서비스를 제공한다.  그러므로 수신된 데이터 훼손에 따른 무결성을 보장받지 못하므로 암호화기술이 적용될 수 있다. 네트워크 혼잡 시에 데이터 일부가 소실된다 하더라도 확인 작업이나 재전송 서비스가 지원되지 않는 특징을 가진다. UDP서비스는 제어용의 작은 메세지 혹은 재전송이 필요 없는 동영상 정보전송에는 적절한 서비스가 될 수 있다.

 

반응형

'STUDY > 네트워크' 카테고리의 다른 글

[네트워크] 멀티스레드 #1  (0) 2021.09.23
[네트워크] 유니티 네트워크 공부#1  (0) 2021.08.09
네트워크) 네트워크 구성  (0) 2019.11.13

클라이언트 프로그래머(초짜)지만 업무에 네트워크의 기본적인 지식은 필요하다고 생각되어 오늘부터 공부를 시작해보려고 한다!

네트워크

네트워크 구성

네트워크를 구축한다는 것은 사용자와 홈 그리고 사무실 등을 물리적 통신 설비를 기반으로 표준 통신 프로토콜로 연결하여 네트워크를 구축하는 것을 의미한다. 또한 네트워크는 또 다른 네트워크로 연결되어 거대한 인터넷으로 구성된다.

네트워크를 구성하는 물리적인 개념에서 하드웨어기반의 구성요소가 필요한데, 그 예로 라우터, 스위치, 이더넷 카드, 커넥터 허브 등이 있고, 서버 시스템과 개인용 컴퓨터 같은 호스등이 있다.

 

 

네트워크 구성요소 기능
라우터 IP주소기반 다른 네트워크와 통신 가능 장비
스위치 이더넷 주소기반 다음 목적지 회선 선택 장비
커넥터(RJ-45) 다양한 통신장비를 네트워크로 연결
이더넷 카드 단말기에 연결되어 데이터 송수신 역할
모뎀,허브,공유기 데이터전송을 위한 통신 주변 장치

네트워크를 구성하게 되면 거리와 공간의 제약을 극복하여 많은 정보기술의 다양한 장점을 활용할 수 있다. 먼저, 같은 네트워크 스토리지와 백업 장치를 비롯한 하드웨어와 소프트웨어 자원들 그리고 수많은 데이터와 응용 프로그램들의 공유가 가능하다. 

 

TCP / IP 프로토콜

표준 네트워크 프로토콜 기반의 인터넷에서는 네트워크 주요 서비스인 이메일 서비스,포털서비스와 게임 등 실시간으로 정보를 주고받는 애플리케이션 서비스를 어디서든지 이용할수 있게 된다. 네트워크 구축을 위해 사용되는 표준 프로토콜은 인터넷에서 사용되는 TCP/IP 프로토콜이다. TCP/IP 프로토콜을 이용하여 여러 토폴로지 형태의 네트워크를 연결한 것이 인터넷이다. 그리고 TCP/IP 프로토콜을 이용하여 내부 네트워크를 연결하여 내부 네트워크 사이 통신을 가능하게 한것이 인트라넷이다.

반응형

'STUDY > 네트워크' 카테고리의 다른 글

[네트워크] 멀티스레드 #1  (0) 2021.09.23
[네트워크] 유니티 네트워크 공부#1  (0) 2021.08.09
네트워크) TPC/IP 프로토콜  (0) 2019.11.17

+ Recent posts