우리가 기획한 프로젝트에는 타이머(게이지바)가 있는데, 소켓 통신을 이용했더니 게임 화면을 내리거나 다른 탭을 이용하는 경우 다른 사용자들과 시간이 맞지 않는 경우가 있었다.아래와 같은 이유로 발생한 것으로 추측된다.1. 클라이언트 측 시간 동기화- 네트워크 지연 : 웹소켓을 통해 서버와 클라이언트 간에 시간 정보를 주고받을 때 네트워크 지연이 발생할 수 있습니다. 이로 인해 각 클라이언트가 받는 시간 정보에 약간의 차이가 발생할 수 있습니다.- 클라이언트 시스템 시간 : 각 클라이언트의 시스템 시간이 정확하게 동기화되어 있지 않을 수 있습니다. 이는 운영체제 설정, 하드웨어 성능 등 다양한 요인에 의해 발생할 수 있습니다.2. 클라이언트 측 타이머 처리JavaScript 타이머 : 웹 브라우저에서 타이..
728x90
반응형
정글
WebRTC 구현 및 궁금증📝 서버 세팅import http from "http"; // HTTP 서버 생성을 위한 Node.js 기본 모듈import SocketIO from "socket.io"; // 실시간 양방향 통신 라이브러리import express from "express"; // Node.js 웹 프레임워크// Express 애플리케이션 생성const app = express();// 템플릿 엔진 (Pug) 설정app.set("view engine", "pug"); // Express에게 Pug를 템플릿 엔진으로 사용하도록 설정app.set("views", __dirname + "/views"); // Pug 템플릿 파일이 있는 디렉토리 지정// 정적 파일 제공 (public 디렉토리)a..
WebRTC(Web Real-Time Communication) 정의브라우저 간 플로그인의 도움 없이 서로 통신할 수 있도록 설계된 APIP2P(Peer to Peer) 화상회의, 음성 채팅, 화상 채팅, 데이터 교환 등 통신 원리WebRTC는 P2P 통신에 최적화* P2P란? - Peer to Peer의 줄임말로 중앙 서버를 거치지 않고 클라이언트 간 직접 통신하는 방식 시그널링(Signaling)- WebRTC를 연결하기 위해서는 Caller와 Callee가 정보를 주고 받는 과정- 정보를 주고 받기 위해서 중간 역할을 하는 시그널링 서버가 필요시그널링 서버(Signaling Server)- WebRTC는 기본적으로 P2P 연결로 화상 연결 / 음성 연결을 위한 별도의 서버가 존재하지 않음- ..
🔥 CS 개념 복습 자료구조 OS프로세스와 쓰레드 란?프로세스(Process)- 메모리에 로드되어 실행되고 있는 프로그램의 독립적인 개체- 기본적으로 최소 1개의 쓰레드를 가짐- 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당받음- 스케줄링의 대상이 되는 작업(task) -> 실제로는 쓰레드 단위로 스케줄링쓰레드(Thread)- 프로세스 내에서 실행되는 흐름의 단위- 각각 Stack만 따로 할당, Code, Data, Heap영역은 공유동시성과 병렬성 이란?동시성(Concurrency)- 하나의 코어가 타임 슬라이스를 통해 동시에 실행되는 것처럼 보이게 하는 기술- 여러 작업(쓰레드)의 문맥을 빠르게 전환해 동시에 처리하듯 보이게 하는 것- I/O 작업이 많은 웹서버 ..
Spring SecurityArchitectureSpring Security란?인증(Authentication), 권한(Authorize) 부여 및 보호 기능을 제공하는 프레임워크(Java / Java EE)- 인증 : 해당 사용자가 본인이 맞는지를 확인하는 절차- 인가 : 인증된 사용자가 요청된 자원에 접근 가능한가를 결정하는 절차인증(Authentication) 방식1. Principal-Credential 방식 : username, password를 이용하는 방식2. 이중 인증(two factor 인증) : 사용자가 입력한 개인정보를 인증 후, 다른 인증 체계(ex: 물리적인 카드 등)를 이용해 두가지의 조합으로 인증하는 방식3. 하드웨어 인증 : 자동차 키와 같은 방식* Spring Securit..
Virtual Memory가상 메모리 관리가상 메모리 관리에서 가장 중요한 것은 얼마나 disk를 덜 방문하느냐disk에 데이터를 read, write를 하는 작업들은 느리기 때문임 페이징고정된 크기(page 단위)로 메모리 공간을 분할해 가상 메모리를 관리하는 기법필요성1. 메모리 공간이 고르게 분할되어 있기 떄문에 빈 공간이 작게 분할되어 유용하게 사용될 수 있어 외부 단편화 해결2. 필요한 메모리보다 조금 더 큰 크기의 메모리를 할당하여 내부 단편화가 발생하더라도 크게 문제되지 않음3. 물리 메모리보다 더 큰 주소 공간을 제공해 프로세스가 물리 메모리에 직접 접근하지 않고, 가상 주소를 통해 메모리 접근4. 필요한 페이지만 물리 메모리에 로드해 메모리 사용을 최적화5. 각 프로세스마다 독립적인 페이..
fork 더보기모든 케이스를 통과한게 아니라 중간에 틀린 내용이 있을 것으로 예상..fork()자식 프로세스(쓰레드)를 생성하고 부모 프로세스(쓰레드)의 내용을 자식에게 복사함tid_t fork(const char *file_name, struct intr_frame *f){ return process_fork(file_name, f);}process_fork()커널의 인터럽트 프레임을 부모 구조체 내부의 parent_tf에 복사함(자식에게 복사해주기 위함)tid_t process_fork(const char *name, struct intr_frame *if_ UNUSED){ struct thread *parent = thread_current(); // 부모 쓰레드 memcpy(&parent->par..
728x90
반응형