전체 글 260

프로비저닝이란?

1. Summary    프로비저닝은 IT 인프라를 생성하고 설정하는 프로세스로서, 다양한 리소스에 대한 사용자 및 시스템 액세스를 관리하는 데 필요한 단계를 포함합니다. 프로비저닝은 서버, 애플리케이션, 네트워크 구성, 스토리지, 엣지 기기 등을 배포하는 과정에서 초기 단계에 해당합니다.   프로비저닝과 구성 관리는 각기 다른 작업이지만, 둘 다 배포 프로세스의 단계에 포함되며 시스템을 프로비저닝했으면 다음 단계는 시스템을 구성하여 지속적으로 일관되게 유지 관리하는 것입니다.    2. 프로비저닝의 유형   2.1 서버 프로비저닝  서버 프로비저닝은 물리 또는 가상 하드웨어를 설정하고, 운영 체제, 애플리케이션과 같은 소프트웨어를 설치 및 구성하여 미들웨어, 네트워크, 스토리지 구성 요소에 연결하는 프..

JIRA : : Agile 2024.08.05

[Memory Structure] 변수 타입

1. Fundamental Types   타입 사이즈 및 메모리라고 해서 각 변수나 클래스, 혹은 포인터가 메모리 상에 어떤 크기로 allocation 되는지 알아봅시다.    이전 글에서, 간단한 코드를 만들어서 int 3개와 double 1개를 allocation하여 각 메모리 주소를 알아보았습니다. 그리고, 더 low level로 내려가면 이러한 격자 무늬 속에서 각각의 변수가 그 사이즈에 맞는 공간을 차지하고 있다고 알아보았습니다.  변수의 사이즈는 sizeof() 함수를 통해 확인할 수 있습니다.    그런데 주의해야 할 점은, int는 컴파일러나 아키텍처에 따라 2byte 혹은 4byte로 적용될 수 있다는 점 입니다.       2. Variable size 확인   이럴 땐 크게 두 가지 ..

: : C++ 2024.06.29

[Memory Structure] Variable in Memory

1. Variables in Memory            (Variables => Stack)    Code 영역실행 코드, 전역상수, static 전역상수 부분이 영역의 정보는 read only로서 절대 변경되지 않아야 한다.컴파일할 때, 크기가 정해진다.   Data & Bss 영역Data 영역은 초기화된 static, 초기화된 전역변수 부분Bss 영역은 초기화되지 않은 전역변수, 0으로 초기화된 전역변수, 초기화되지 않은 static 변수, 0으로 초기화된 static 변수가 올라오는 부분Bss 영역에 올라오는 모든 변수는 0으로 초기화된다.컴파일할 때, 크기가 정해진다.   Heap 영역동적으로 할당해준 변수(malloc, new)가 올라오는 부분먼저 들어간 데이터가 가장 먼저 나온다.(FIF..

: : C++ 2024.06.28

C++14 STL 철저 입문

아이버 호튼 지음 / 조현태 옮김길벗2016​Using the C++ Standard Template LibrariesIvor HortonApress2015​​  1장.  표준 템플릿 라이브러리 1장에서는 표준 템플릿 라이브러리에 내재된 기본 개념부터 설명하겠다.- STL에는 무엇이 있는가?- 템플릿을 정의하고 사용하는 법- 컨테이너는 무엇인가?- 반복자는 무엇이고 어떻게 사용하는가?- 스마트 포인터의 중요성과 컨테이너를 사용하는 법- 알고리즘은 무엇이고 응용하는 방법- 수치 라이브러리가 제공하는 기능- 함수 객체는 무엇인가?- 람다 표현식을 정의하고 사용하는 방법​이 장에서는 STL을 지탱하는 기본 아이디어도 소개하지만, 이어지는 장에서 자주 사용하기 때문에 익숙해져야 할 C++ 언어의 기능도 소개할 ..

리눅스 커널(Linux Kernel) 전처리 파일 생성하기

1.  리눅스 커널 전처리 파일 생성 목적   1.1  전처리 코드 생성 목적   리눅스 커널 소스 코드를 분석하다 보면 수 많은 매크로를 만납니다. 그런데 이 매크로가 소스 분석의 큰 걸림돌입니다. 리눅스 커널에서 캡슐화와 다형성과 객체지향 방식을 구현하다 보니 매크로로 구현된 코드가 많습니다.   전처리 코드는 이 매크로를 모두 풀어서 표현해서 훨씬 편하게 소스 코드를 분석할 수 있습니다. 리눅스 커널 코드를 분석할 때 전처리 코드를 함께 보시기 바랍니다.   전처리 코드는 GCC 컴파일 오브젝트를 생성하는 과정에서 추출됩니다.     2.   전처리 파일 전체 생성방법   2.1  MakeFile 수정먼저 리눅스 커널 전체 소스 코드를 전처리 파일로 추출하는 방법을 소개합니다.   $ ~ /rpi_..

[가상화] 1. 가상화 개념 정리(KVM/QEMU)

1. 가상화   가상화란 한 대의 시스템 하드웨어를 논리적으로 분할하여 가상의 시스템에 활용하는 개념이다. 가상 시스템들은 서로 독립적인 하나의 시스템으로 인지되기 때문에 주어진 하드웨어 리소스를 효율적으로 사용할 수 있다. 새로운 하드웨어 자원을 구비하고 시스템을 구축하는 것 보다 있는 자원을 활용하기 때문에 비교적 간결하고 쉽게 시스템을 올릴 수 있다. 호스트 OS를 기저에 두고 호스트를 중앙 시스템으로 하는 중앙 집중형의 서비스를 구축하기에 적절하다.   가상화를 이야기하려면 하이퍼바이저(Hypervisor)를 빼 놓을 수 없는데, 가상 OS와 실제 하드웨어 자원 사이에 위치하며 둘 사이의 괴리를 조정해주는 역할을 하는 것으로 볼 수 있다. 이 과정을 '추상화'라고 하는데, 물리적인 하드웨어 자원을..

clean(), cleansstate(), cleanall()

yocto에서 작업한 레시피에 대해, clean, cleansstate, cleanall 태스크로 작업된 레시피 결과물을 제거할 수 있다.   -c clean$ bitbake -c cleanrecipe의 작업 디렉토리(${WORKDIR})에, unpack 이후에 수행했던 모든 태스크 결과물을 제거한다.   -c cleansstate$ bitbake -c cleansstatedo_clean() + sstate 까지 제거한다.sstate가 잘못된 경우가 있는데, 컴파일 중 전원이 나가는 등의 예상치 않은 빌드 실패 시, sstate 까지 싹 지우자.   -c cleanalldo_clean() + do_cleansstate() + DL_DIR 에 저장된 다운로드 데이터도 제거한다.$ bitbake -c ..

x86-64 CPU 레지스터(Register) 종류, 32bit / 64bit 비교

1. 레지스터란?   CPU의 빠른 데이터 처리를 돕기 위해 사용되는 임시저장공간으로, 처리중인 데이터나 처리 결과를 담는다.  레지스터의 종류에는 범용 레지스터, 세그먼트 레지스터, 포인터 레지스터, 인덱스 레지스터, 플래그 레지스터가 있다.    32bit, 64bit 운영체제에서 32bit, 64bit 는 레지스터 및 데이터 경로의 크기 를 의미한다.  위 예시에서 AH 는 8bit 운영체제와 호환되는 레지스터라고 이해하면 된다.    운영체제의 발전에 따라, 수행해야할 기능이 많아지면서  많은 정보를 다룰 수 있도록 새로운 레지스터가 추가되고, 크기도 점점 커졌다. ※ E 는 Extended 의 약자. CPU의 아키텍쳐에 따라 레지스터의 종류가 다를 수 있다.     2. 범용 레지스터   범용 ..

[CSAPP] Ch 9. 가상메모리 : (1) 물리 및 가상주소 방식

0. Intro 제한된 자원인 물리메모리를 보다 효율적이게 관리하기 위해서 현대의 시스템은 가상메모리라는 메모리의 추상화를 제공한다.가상메모리는 각 프로세스에 하나의 크고 통합된, 사적 주소공간(가상메모리)를 제공한다.​   가상메모리의 중요한 기능 세가지     1. 메인메모리를 디스크에 저장된 주소공간에 대한 "캐시"로 취급하여, 메인메모리를 효과적으로 사용한다.    2. 각 프로세스마다 통일된 주소공간을 제공하여 메모리 관리를 단순화한다.    3. 각 프로세스의 주소공간을 다른 프로세스에 의한 손상으로부터 보호한다.    1. 물리 및 가상주소 방식   9.1 물리 및 가상주소 방식   컴퓨터의 메인메모리(RAM)은 M개의 연속적인 바이트 배열로 구성된다.  각 바이트는 "물리주소(PA)" 라고..

'칸반(Kanban)', 효율적인 작업 흐름 관리의 시작

'칸반(Kanban)', 효율적인 작업 흐름 관리의 시작 칸반(Kanban)이란 생산 과정에서 효율성과 기민성을 높이기 위한 간소화된 작업 흐름 관리 시스템이다. 일반적으로 소프트웨어 개발에 사용되지만 IT뿐만 아니라 모든 업무 영역에서 점진적인 개선을 지향한다. 1940년대 초반 일본에서 토요타에 의해 개발됐으며, 본래 프로젝트 관리를 대체하거나 개발 방법론 역할을 하려고 만들어진 것이 아니다. 대신, 더 좋은 작업 흐름 구조를 만들어 이미 확립된 공정을 개선하는 데 중점을 둔다. 칸반은 조직 내에 진행 중인 업무(Works In-Progress , WIP)가 일정 수준 이상 밀려 있지 않게 하는 데도 도움을 준다. 이 밖에도 강력한 리더십, 조직적 투명성, 팀워크, 사내 열린 소통과 협업을 지원한다...