본문 바로가기

전체 글64

컨테이너(container)를 만드는 리눅스 기술 cgroup, namespace (초안 / 작성중) 작성 예정 / 요약 ## cgroup cgroup은 프로세스를 그룹화하고 그룹핑된 프로세스가 사용하는 컴퓨팅 리소스를 제어할 수 있는 기술 입니다. cgroup으로 묶은 프로세스들의 CPU, Memory, I/O bandwidth를 제어할 수 있습니다. ## namespace cgroup이 하드웨어적인 리소스를 분리시켰다면, namespace는 process 수준의 커널 리소스를 분리합니다. 예로, process가 실행되는 커널 환경 -> 파일시스템, 네트워크 스택(네트워크 설정, ip, port 등), pid, hostname 등등 + namespace로 분류되어 생성된 리소스 환경은 호스트 시스템과 분리되어 있습니다. + namespace로 생성된 네트워크 스택은 직접적으로 외부로 노출할 수 없습니다.. 2023. 2. 17.
link local address 169.254.xxx.xxx 동작원리 link local address는 dhcp로부터 ip 할당을 받지 못한 경우 자체적으로 할당하는 ip 대역으로 통상적으로 169.254.0.0/16 대역을 예약하여 사용하고있다. 그리고 많은 글들에서 169.254.0.0/16 대역의 ip를 사용하는 서버끼리는 같은 network segment(broadcast domain, subnet, LAN)에 있다면 통신이 가능하다고한다. 이는 dhcp ip 할당을 실패하더라도 다른 서버를 통해 접근을 하기 위한 방안이라고한다. 여기서 드는 의문, 같은 network segment에서 local link address만 사용하는 서버와 정상적인 subnet의 ip를 사용하는 서버간 통신이 가능할까? 같은 network segment에 구성된 서버라면 사실 굳이 .. 2023. 2. 13.
객체 지향 프로그래밍(OOP)의 고찰 이 글은 필자가 개발을 경험해보면서 object라는 개념에 대해 현타가 왔고 이리저리 문서들을 찾아 읽다가 의식의 흐름대로 생각을 적어봤다. 결론만 궁금하다면.. - #결론 객체지향이란 무엇인가? 구조적 프로그래밍의 한계 ---> 객체 지향적 https://en.wikipedia.org/wiki/Structured_programming object(사물,물체) 위주의 프로그래밍을 추구하는 기법이다. 단, OOP에서 말하는 object는 실제 세계의 물리적인 것과 추상적인 것 모두 포함하며 형상화하고 개념화 할 수 있다면 어떤 것이든 object가 될 수 있다. 실제 세계를 인식하는 것과 닮았다. 객체, object의 가장 중요한 핵심은 캡슐화, 추상화. https://scienceon.kisti.re.k.. 2023. 1. 24.
pyinstaller, bootloader는 무엇인가? pyinstaller는 무엇인가? python3는 현대 대표적인 인터프리터 언어로 작성(개발)된 프로그램을 실행시키기 위해서는 개발 환경과 동일하거나 호환 가능한 버전의 인터프리터 프로그램과 개발하면서 사용한 파이썬 패키지가 추가로 필요합니다. pyinstaller는 다른 컴퓨팅 시스템에서도 파이썬 프로그램을 쉽게 배포할 수 있도록 실행에 필요한 모든 것들을 "패키징" 합니다. pyinstaller는 CPU가 바로 이해할 수 있는 기계어로의 "컴파일"이 아닌 실행 환경의 "패키징"임을 명심해야합니다. 그렇기 때문에 인터프리터 언어로서 실행 속도 개선을 기대할 수 없습니다. 파이썬의 실행속도를 개선하고 싶은 경우, cython등을 사용해서 속도 개선을 원하는 모듈, 로직등은 컴파일언어로 작성후 공유 라이브.. 2023. 1. 24.