CPU란? 중앙처리장치(CPU: Cnetral Processing Unit)는 사람의 두뇌와 같이 컴퓨터 시스템에 부착된 모든 장치의 동작을 제어하고 명령을 실행하는 장치입니다. 중앙 처리장치는 제어장치, 연산장치, 레지스터 그리고 이들을 연결하여 데이터를 전달하는 버스로 구성되어 있습니다. CPU의 구성장치 제어장치(control unit) 제어장치(Control Unit)는 컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치입니다. 제어장치는 명령 레지스터에서 읽어들인 명령어를 해독하여 해당하는 장치에게 제어 신호를 보내 정확하게 수행하도록 지시합니다. 연산장치(ALU, Arithmetic) 연산장치(ALU, Artihmetic)는 제어장치의 명령에 따라 실제로 연산을 수행하는 장치입니다. 연..
쿠버네티스 기본 개념 쿠버네티스가 어떻게 동작하는지, 설치는 왜 이리 어려운지, 설정 파일은 왜 그렇게 복잡한지 이해하기 위해 쿠버네티스의 디자인과 구성 요소, 각각의 동작 방식을 알아보겠습니다. 쿠버네티스에서 가장 중요한 것은 desired state - 원하는 상태 라는 개념입니다. 원하는 상태라 함은 관리자가 바라는 환경을 의미하고 좀 더 구체적으로는 얼마나 많은 웹서버가 떠 있으면 좋은지, 몇 번 포트로 서비스하기를 원하는지 등을 말합니다. 쿠버네티스는 복잡하고 다양한 작업을 하지만 자세히 들여다보면 현재 상태current state를 모니터링하면서 관리자가 설정한 원하는 상태를 유지하려고 내부적으로 이런저런 작업을 하는 로직을 가지고 있습니다.이러한 개념 때문에 관리자가 서버를 배포할 때 직접적..
쿠버네티스란? 쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼입니다. 컨테이너 오케스트레이션이 하는 일은 여러 개의 서버에 컨테이너를 배포하고 운영하면서 서비스 디스커버리Service discovery같은 기능을 이용하여 서비스 간 연결을 쉽게 해주는 것입니다. 서버마다 app01, db01, cache01 같은 이름을 지어주고 하나하나 접속하여 관리하는 것이 아니라 server1, 2, 3, 4..를 하나로 묶어 적당한 서버를 자동으로 선택해 애플리케이션을 배포하고 부하가 생기면 컨테이너를 늘리고 일부 서버에 장애가 발생하면 정상 동작 중인 서버에 다시 띄워 장애를 방지합니다. 다양한 배포 방식 컨테이너와 관련된 많은 예제가 웹(프론트엔드+백엔드) 애플리케이션을 다..
Docker network docker0는 container가 통신하기 위한 가상 linux bridge 입니다. bridge는 기본적으로 L2 통신 기반이며, 만약 container가 하나 생성되면 이 bridge에 container의 interface가 하나씩 binding 되는 형태입니다. 따라서 container가 외부로 통신할 때는 무조건 docker0 interface를 지나야합니다. 만약 외부와 연결을 해야할 경우에는 호스트에 veth(=virtual eth)라는 네트워크 인터페이스를 생성하고 컨테이너의 eth와 연결이 됩니다. veth 인터페이스는 사용자가 직접 생성할 필요 없이 도커엔진에 의해 자동으로 생성이 됩니다. veth 인터페이스 뿐만 아니라 docker()라는 브리지도 있는데, ..
X명령어 x 명령어는 프로그램 실행시 메모리를 검사할 때 사용합니다. (gdb) x/옵션 기준점 여기서 기준점은 메모리 주소이며 ebp, eip, esp 등의 레지스터로 표시해도 됩니다. 아래는 사용예시입니다. x/4wx $ebp (ebp를 기준으로 16진법(x)으로 4바이트 단위(w)로 4개 보여준다. (gdb) x/4wx $ebp 0xbfffedf8 : 0x41414141 0xb5c3b8c3 0xbfc2bfc3 0xbfffee00 x/8wx $ebp (ebp를 기준으로 16진법(x)으로 4바이트 단위로(w) 8개 보여준다.) (gdb) x/8wx $ebp 0xbfffedf8 : 0x41414141 0xb5c3b8c3 0xbfc2bfc3 0xbfffee00 0xbfffee08 : 0xbfffee50 0..