분류 전체보기(70)
-
프로세스와 스레드, 컨텍스트 스위칭
1. 프로세스와 스레드의 기본 개념운영체제에서 프로세스와 스레드는 중요한 역할을 담당한다. 프로세스는 실행 중인 프로그램을 의미하며, 독립된 메모리 공간을 가진다. 스레드는 프로세스 내에서 실행되는 단위로, 프로세스의 자원을 공유하면서 동시에 여러 작업을 수행할 수 있다. 프로세스는 각각 독립된 메모리 공간을 가지기 때문에, 프로세스 간의 자원 공유는 IPC(Inter-Process Communication)를 통해 이루어진다. 반면, 스레드는 같은 프로세스 내에서 Stack만 따로 할당 받고, Code/Data/Heap에 해당하는 메모리 영역을 공유하기 때문에 데이터 공유가 용이하다. 만약 프로세스를 여러개 실행하던 중, 하나의 프로세스가 오류로 인해 강제로 종료된다면 다른 프로세스들에 영향이 있..
2024.11.04 -
CH5_멀티 플레이 과제 - 트러블슈팅
🚨 유저를 찾을 수 없습니다 게임 접속과 동시에 밀려드는 로그 속, 시선을 사로잡는 User not found. TCP 멀티 플레이 강의 중에 만들었던 코드를 참고해보기도 하고, 오타가 있는 것인가 싶어 한참을 뜯어봐도 문제가 해결되지 않았다. user가 users 배열에서 사라지는 것은 접속을 종료할 때에만 기능하도록 구현해두었는데, 관련 파일들을 처음부터 끝까지 아무리 살펴봐도 문제가 없었다. // userSession.jsexport const removeUser = async (socket) => { const index = userSessions.findIndex((user) => user.socket === socket); if (index != -1) { const user = u..
2024.11.01 -
전송계층 프로토콜, 대칭키/비대칭키 암호화 방식 그리고 로드밸런싱에 대하여
1. 전송 계층 프로토콜이란?전송 계층의 대표적인 프로토콜은 TCP와 UDP가 있습니다. TCP는 메일이나 파일 전송과 같이 신뢰성이 중요한 경우에 주로 사용되는 연결 지향적 프로토콜입니다. 3 way handshaking 과정을 통해 서버와 클라이이언트 모두 데이터를 주고받을 준비가 되었다는 것을 확인한 뒤 논리적인 경로를 배정하여 데이터를 안정적으로/순서대로/에러 없이 교환할 수 있게 합니다. 데이터 전송 과정에 신뢰성이 중요하기 때문에, 3 way handshaking 과정에 흐름제어나 혼잡제어 등의 기능도 수행하는 만큼 CPU를 사용하게 되어 UDP에 비해 속도가 느리다는 특징이 있습니다. UDP는 신뢰성보다는 연속성이 중요한 스트리밍 서비스 같은 경우에 주로 사용되는 비연결형 프로토콜입니다. ..
2024.10.31 -
Protocol Buffers란?
npm install protobufjs Node.js(java script) 환경에서 유니티(c#)에 연결하려면 데이터 구조가 다르기 때문에, 데이터 직렬화 작업은 필수라고 할 수 있다. 이 작업을 위해 사용하는 것이 바로 Protocol Buffers(프로토콜 버퍼), protobufjs 라이브러리이다. *데이터 직렬화: 메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것을 말한다. 1. Protocol Buffers 란? 프로토콜 버퍼는 언어와 플랫폼에 구애받지 않고, 통신 프로토콜, 데이터 저장 등에서 구조화된 데이터를 이진수로 직렬화하는 확장 가능한 방식이다. Google에서 설계되었으며, '.proto' 파일과 함께 사용할 수 있다. (직렬화 데이터 구조의 예:..
2024.10.25 -
소켓, 웹소켓 그리고 TCP
웹소켓을 활용하는 프로젝트에 이어, TCP를 활용한 프로젝트를 시작하려고 하니 개념이 헷갈리기 시작했다. 이 소켓이 그 소켓인가. 이 양방향 통신과 저 양방향 통신은 무엇이 다른가. 따로따로 정리한 글들을 봐도 이게 그거 같고, 저게 그거 같았다. 이 소켓이 그 소켓인가요?프로그램이 네트워크 상에서 데이터를 송신과 수신을 하기 위한 연결부를 소켓이라고 한다. 서버와 클라이언트의 IP 주소, 포트 번호, 연결 상태 등을 기록해놓은 하나의 파일이기도 하다. 일반적으로 TCP/IP 프로토콜을 이용하거나 WebScoket을 이용한다. 웹소켓 프로젝트에서 socket.io를 사용하며 질리도록 봤던 socket.on의 소켓과 TCP 프로젝트에서 다시 만나게 된 socket.on의 소켓은 같지만 다른 방식으로 구현되..
2024.10.21 -
메모리와 주소공간이란?
1. 메모리(Memory)란?기억장치라는 뜻을 가진 메모리는 상황에 따라 여러가지를 의미하지만, 가장 좁은 의미로는 주기억장치(main memory)를 말한다. 이 주기억장치, 메모리는 컴퓨터에서 특정 작업을 처리할 때, 처리 대상의 내용이나 처리 결과 등을 잠시 기억해야 할 때, 전기적인 신호로 일시적으로 저장하게 된다. 전기 신호를 사용하는 만큼 하드디스크를 이용하는 것보다 훨씬 속도가 빠른 특징을 가진다. 우리가 흔히 아는 RAM(Random Access Memory)가 바로 주기억장치이다. 사무직 직원이 업무 진행을 위해 조사한 자료들을 책상에 펼쳐놓고, 필요한 자료들을 하나씩 확인하여 일을 하게 된다고 할 때, 자료들을 펼쳐놓은 책상이 바로 메모리라고 할 수 있다. 물론 실제 컴퓨터에는 가장 좁..
2024.10.17