no image
I2C Communication
Inter-Integrated circuit communication I, 2개를 따서 I2C 통신이라 부른다.일대다 통신이 가능하다. 하나의 Master node와 여러 개의 Slave node 가 있다. Two-pin protocolSDA (Serial data): data transmissionSCL (Seerial clock): clock transmission = 동기를 맞추는 역할을 한다.위의 2개의 핀으로 통신한다.Timing diagramFree state - SCL과 SDA 둘 다 HIGH인 상태로 시작한다.Start condition - SDA가 LOW가 되면 Slave node 들은 데이터를 수신할 준비가 된다. I2C는 일대다 통신으로 Master가 통신할 slave node를 지정..
2024.02.17
no image
Stomp protocol
Stomp DesignSimple Text Oriented Messaging Protocol STOMP 디자인을 이끄는 주요 철학은 단순성과 상호 운용성으로 다양한 언어로 클라이언트와 서버 측 모두에서 쉽게 구현할 수 있는 경량 프로토콜로 설계되었다. 이는 특히 서버 아키텍처에 많은 제약이 없으며 destination naming, reliability, semantics 등의 기능들이 구현에 따라 다르다는 것을 의미한다.Stomp FrameSTOMP는 신뢰할 수 있는 양방향 스트리밍 네트워크 프로토콜(TCP 등)을 기반으로 하고 프레임에 근거해서 통신하는 프로토콜이다.클라이언트와 서버는 스트림을 통해 전송된 STOMP 프레임을 사용하여 통신하고 프레임의 구조는 다음과 같다.COMMANDheader1:v..
2024.01.02
no image
교착상태 Deadlock
교착상태 발생 조건 상호 배제 - 하나의 자원은 하나의 프로세스에 의해서만 사용된다. 점유와 대기 - 하나의 자원을 점유한 상태로 추가 자원 요청 비선점 - 점유된 자원에 대해 경쟁할 수 없다. 환형 대기 - 자원의 점유와 대기가 원형을 구성한 상태 해결 방법 예방 - 상호 배제를 제외한 나머지 발생 조건을 부정하는 방법 * 점유 자원 해제 후 새 자원 요청 * 이미 점유된 자원 경쟁 가능 * 원형 구성이 안되도록 하나의 프로세스 요청을 먼저 다 처리하기 회피 - 데드락이 발생하지 않도록 어떻게든 알고리즘을 잘 짜라 (예방보다 덜 엄격한 제한) * 은행가 알고리즘 발견, 복구 - 알고리즘으로 교착 상태를 감지하고 해결한다. * 자원할당 그래프 (발견) * 프로세스 kill (복구) - 프로세스를 순차적으..
2023.09.18
no image
stack/heap memory
Stack Memory 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역이다. 함수가 호출되면 호출이 끝난 뒤 돌아갈 반환 주소값, 함수의 매개변수, 함수에서 선언된 지역 변수 등이 스택에 저장되고 호출이 완료되면 소멸한다. stack memory의 모든 과정은 컴파일 타임에 미리 결정된다. 즉, 개발자가 코드를 작성하지 않는다. stack은 독립적인 스레드에서 실행된다. stack은 heap보다 할당/해제가 빠르다. why => 스택은 미리 예약된 메모리이기 때문에 메모리 할당이 따로 필요없으며, 사용한 메모리를 굳이 반납하지 않고 (= 삭제 작업을 거치지 않고) 단순히 스택 포인터를 감소시킴으로써 스택 공간을 제한시킨다. 스택 포인터를 감소시키면서 남아있던 데이터는 스택 포인터가 다시 증가..
2023.09.16
no image
TCP/UDP Socket Protocol, Programming
TCP/UDP Socket Protocol 흐름 Socket Interface 를 통해 TCP, UDP 통신 프로토콜을 사용할 수 있다. Socket Interface 는 특정 OS 및 프로그램 언어에 종속돼서 제공된다. TCP Socket Programming 흐름 서버는 Socket을 생성하고 주소를 할당(Bind)한다. 그 후 연결 요청을 기다리고(Listen) 연결을 허용(Accept)한다. 연결은 유지되며 통신하다가 로직에 따라 연결을 해제한다. UDP Socket Programming 흐름 TCP와 다르게 Listen(), Accept() 가 없다. UDP는 연결된 채로 sendto() 를 실행하지 않기에 하나의 sendto()에 하나의 recvfrom()이 호출된다. 예시로 Server의 r..
2023.09.15
no image
OAuth2 를 알아보자
프로토콜이란? 시스템 사이에서 데이터를 주고 받는 양식과 규칙의 체계이고 OAuth(Open Authorization)는 접근 위임을 위한 프로토콜의 일종이다. 내 서버 입장에서는 Third-Party Application을 통해 내 서버에 대해 접근을 위임하는 것이고 Third-Party Application 입장에서는 리소스 소유자를 대신해 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 것이다. OAuth2를 구성하는 4가지 역할 Resource Onwer : 사용자 Client : 나의 Application (나의 Application에서 서버와 클라이언트 둘 다 의미한다.) Authorization Server : 인증/인가를 수행하는 서버로 사용자는 Authorization Serv..
2023.07.25