2024/05 14

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)가 일정 수준 이상 밀려 있지 않게 하는 데도 도움을 준다. 이 밖에도 강력한 리더십, 조직적 투명성, 팀워크, 사내 열린 소통과 협업을 지원한다...

LLVM

he LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them. The name "LLVM" itself is not an acronym; it is the full name of the project.LLVM 프로젝트는 모듈식의 재사용 가능한 컴파일러와 툴체인의 집합입니다. 이 이름에도 불구하고 LLVM은 기존의 가상머신과는 그것을 만드는데 ..

UML: 클래스 다이어그램과 소스코드 매핑

1. UML   UML이란 Unified Modeling Language의 약자로 1997년 OMG(Object MAnagement Group)에서 표준으로 채택한 통합모델링언어 입니다. 즉, 모델을 만드는 표준언어인 것입니다. 모델이란 것은 어떤 것을 실제로 만들 때 이렇게 만들면 잘 작동할지 미리 검증해보는 것이며, 실제 물건을 만드는 비용보다 훨씬 적게 들 경우 모델을 만들어 설계를 검사합니다.   소프트웨어에서의 모델은 건축, 항공 등의 모델과는 좀 다른 면이 있습니다. 건물을 짓고, 항공기를 만드는 것과 설계를 그리고 만드는 일은 개발보다 비용이 적긴 하지만 훨씬 적게 드는게 아니며 때로는 오히려 개발비용보다 더 많이 들 수도 있습니다. 그래서 UML은 시험해 볼 구체적인 것이 있고, 그것을 코..

The Wayland Protocol 개요

0. Intro   오늘날, 리눅스 UX 관련해서 부각되는 것 중에 하나는 바로 WAYLAND 이다. (WAYLAND 는 기존의 윈도우 매니저를 개발하기 위해 사용해왔던 X11 프로토콜을 대체하는 프로토콜이다.) 대다수의 핵심 UX 관련 프로젝트들(GTK+, Qt, Clutter 등등)이 Wayland를 백엔드로 지원하기 위한 작업들을 진행 중이고, 짧은 시간 동안 상당 부분 진척이 이루어졌다..    사실 현재 X11은 Wayland에서 제공하는 기능들을 전혀 제공하지 못하는 것은 아니다. (심지어 X12 프로젝트 또한 진행 중이다.) 하지만 중요한 것은 이와 같은 여러 가지 이유로 모두가 X 를 버리고 새롭게 시작하기를 원한다는 것이다.다음은 기술적인 그리고 구조적인 몇 가지 이유를 설명하도록 하겠다..

Wayland vs X11

0. Wayland란   Wayland는 리눅스 데스크탑 환경을 구현하기 위한 프로토콜로, 데스크탑 환경은 크게 컴포지터와 쉘로 구분합니다.  Wayland는 컴포지터와 쉘의 구현을 돕는 API와, 쉘이 어플리케이션과 통과할 수 있도록 프로토콜을 제공합니다.    1. Wayland의 장점   1.1  성능  Wayland는 X 서버에 비해 대기 시간을 줄이고 전반적인 성능을 향상시키는 것을 목표로 간결하고 효율적으로 설계되었습니다. 이는 X Server에 존재하는 레거시 기능과 오래된 메커니즘 중 일부를 제거하여 더 부드럽고 응답성이 뛰어난 사용자 인터페이스를 제공함으로써 이를 달성합니다.     1.2  보안  Wayland는 처음부터 보안을 염두에 두고 구축되었습니다. 보다 안전한 아키텍처를 채택하..

[리눅스 GUI] 디스플레이 서버-클라이언트 구조

0. Intro - 윈도우 매니저의 서버-클라이언트 구조   주로 사용하는 리눅스 UX 프로토콜로는 Wayland와 X11(X Window Manager)가 있다.  먼저, X11을 통해 윈도우 매니저의 구조를 살펴보자.    1. X11  1.1 X11 서버-클라이언트 구조의 이해     X 서버와 X 클라이언트를 이해하기 위해, 메모장을 예로 들어보자. 메모장은 X 클라이언트가 된다. 웹브라우저, 동영상 재생기, 게임 같은 모든 GUI 프로그램을 X 클라이언트라고 생각해도 무리는 없다. 메모장을 실행하면X 클라이언트 메모장에 실행 명령이 전달되고호출을 받은 메모장은 X 서버에 "가로세로 크기는 이만큼, 배경색과 글자색은 이렇게, 커서는 깜빡일 것." 하고 X 서버로 X 프로토콜을 날린다.이제 X 서버..

윈도우 매니저 (Window Manager) - 리눅스 GUI 개요

Window Manager   윈도우 매니저를 크게 보면 컴포지터와 쉘로 나눌 수 있다.   컴포지터는 각각의 윈도우 화면을 갱신하고, 겹쳐진 윈도우들의 내용을 가져와서 하나의 화면(클라이언트의 화면)으로 실제 스크린에 출력해주는 과정을 담당한다.  쉘은 클라이언트의 윈도우를 옮기거나, 크기를 변경하는 역할과 배경화면과 시작 메뉴, 패널 등을 관리하는 역할을 한다.   그래서 컴포지터는 기능적인 부분에 대한 최적화가 주요 이슈이고, 쉘은 정책적인 부분들에 대한 결정들이 주로 다루어진다. ※ 디스플레이 서버    1.  Compositor (컴포지터)   컴포지터는 화면 위에 겹쳐있는 모든 윈도우들을 하나의 스크린 위에 합쳐서 보여주는 역할을 한다.   예를 들어, 우리가 두 개의 웹브라우저를 겹치게 띄워..

Docker in i.MX

0.  Intro 이 설정은 docker를 사용하여 격리된 환경에서 i.MX BSP를 구축하는 데 도움이 됩니다.    1.  사전 설정   1.1  Install Docker  docker를 설치하는 방법에는 docker 스크립트를 사용하는 등 다양한 방법이 있습니다.  $ curl -fsSL https://get.docker.com -o get-docker.sh$ sudo sh get-docker.sh    1.2  Run Docker without sudo  sudo 없이 docker를 더 잘 사용하려면 사용자를 docker 그룹에 추가하세요.$ sudo usermod -aG docker    그룹 멤버십을 재평가하려면 로그아웃했다가 다시 로그인하세요.    1.3  Set Docker to wor..