메모리 관리(11)
-
커널 포팅 (2. 커널 소스 분석 및 빌드 / 2.1 커널 소스 구조 이해)
2.1 커널 소스 구조 이해리눅스 커널은 대규모의 코드베이스로 이루어져 있으며, 여러 하드웨어 및 시스템 환경에서 동작할 수 있도록 모듈화된 디렉토리 구조를 가지고 있습니다.각 디렉토리는 아키텍처, 드라이버, 파일 시스템, 메모리 관리, 네트워크 스택 등과 관련된 코드가 포함되어 있습니다.🔹 리눅스 커널 디렉토리 구조리눅스 커널 소스 코드를 다운로드하면, 다음과 같은 디렉토리 구조를 확인할 수 있습니다.linux/├── arch/ # CPU 아키텍처별 코드├── block/ # 블록 장치 관련 코드├── crypto/ # 암호화 관련 코드├── Documentation/ # 문서 및 설명서├── drivers/ # 디바이스 드라이버 코드├── fs/ ..
2025.03.06 -
커널 포팅 (1. 개요 및 준비 / 1.1 커널이란 무엇인가?)
1.1 커널이란 무엇인가?커널(Kernel)은 운영체제의 핵심(Core)으로, 하드웨어와 소프트웨어를 연결하는 중간 역할을 담당하는 프로그램입니다. 커널은 CPU, 메모리, 디스크, 네트워크, 프로세스 관리 등을 수행하며, 사용자 프로그램이 하드웨어에 직접 접근하지 못하도록 보호하는 역할을 합니다.🔹 운영체제와 커널의 차이점운영체제(OS, Operating System)와 커널은 밀접한 관계가 있지만, 개념적으로 차이가 있습니다. 구분 운영체제(OS)커널(Kernel)정의컴퓨터의 자원을 관리하고 응용 프로그램이 실행될 수 있도록 하는 소프트웨어 전체운영체제의 핵심 부분으로 하드웨어와 사용자 애플리케이션을 연결하는 역할구성 요소커널(Kernel), 사용자 인터페이스(Shell), 시스템 유틸리티 등프로..
2025.03.06 -
시스템 콜 (System Call) - 요약
1. 시스템 콜이란?시스템 콜(System Call)은 프로그램이 운영체제의 기능을 요청하는 메커니즘입니다.일반적인 애플리케이션은 사용자 모드(User Mode)에서 실행되며, 운영체제의 핵심 기능(파일 시스템, 프로세스 관리, 메모리 관리 등)을 사용하려면 커널 모드(Kernel Mode)로 전환해야 합니다.이때 시스템 콜을 통해 운영체제에게 요청을 전달합니다.✅ 사용자 프로그램 → 시스템 콜 호출 → 커널 모드 전환 → 요청 처리 → 사용자 모드 복귀2. 시스템 콜의 종류와 예제📌 주요 시스템 콜 종류1️⃣ 파일 조작 (File Management)open() : 파일 열기read() : 파일 읽기write() : 파일 쓰기close() : 파일 닫기2️⃣ 프로세스 관리 (Process Manage..
2025.03.05 -
Python Tkinter - 6. 실전 프로젝트와 최적화
6. 실전 프로젝트와 최적화이번 주차에서는 대규모 GUI 애플리케이션 설계, 성능 최적화, 멀티스레딩, 비동기 작업 처리를 배웁니다.특히 모듈화, 이벤트 루프 최적화, 데이터베이스 연동 및 백그라운드 작업 처리를 적용하여 고급 TODO 리스트 애플리케이션을 제작하고, 개인 프로젝트를 기획 및 구현하는 것이 목표입니다.이론1. 대규모 애플리케이션 설계간단한 GUI 애플리케이션은 단일 파일로 작성해도 문제가 없지만, 기능이 많아질수록 코드의 유지보수와 성능 관리가 어려워지므로 모듈화와 클래스 기반 설계가 필요합니다.✅ 모듈화 적용애플리케이션을 기능별로 분리하면 코드의 가독성이 좋아지고 유지보수가 쉬워집니다.예를 들어, 데이터베이스, UI, 이벤트 처리를 각각의 파일로 분리하면 관리가 더 용이해집니다.📁 프..
2025.02.28 -
C++ STL: 10장 - STL의 한계와 대안
10.1 STL의 한계STL은 범용적인 라이브러리이지만, 특정 상황에서는 한계가 존재합니다. 이 장에서는 STL의 제약과 이를 극복할 수 있는 방법을 소개합니다.10.1.1 STL 사용 시 문제점실시간 시스템에서의 한계:STL 컨테이너의 동적 메모리 할당은 예측 가능한 성능을 요구하는 시스템에서 문제가 될 수 있습니다.메모리 사용량:STL 컨테이너는 내부 메모리 관리를 위해 추가적인 오버헤드가 발생할 수 있습니다.멀티스레딩 환경:STL은 스레드 안전하지 않으므로, 동기화를 별도로 구현해야 합니다.10.1.2 STL의 확장과 최적화STL의 한계를 극복하기 위해 다음과 같은 방법을 고려할 수 있습니다:사용자 정의 할당자:특정한 메모리 요구 사항에 맞게 할당자를 커스터마이징하여 성능을 최적화합니다.스레드 안전..
2025.02.26 -
C++ STL: 5장 - STL과 메모리 관리
5.1 메모리 관리의 기본STL은 효율적인 메모리 관리를 위해 std::allocator를 기본 메모리 할당자로 사용합니다. 컨테이너들은 이를 통해 자동으로 메모리를 할당하고 해제하며, 개발자가 직접 메모리를 관리할 필요가 없습니다.5.2 메모리 관리 방식5.2.1 동적 메모리 관리#include #include int main() { std::vector numbers; // 미리 메모리 할당 numbers.reserve(10); for (int i = 0; i 5.2.2 자동 메모리 해제void example() { std::vector numbers = {1, 2, 3}; // 함수 종료 시 자동으로 메모리 해제}5.3 사용자 정의 메모리 할당자STL은 기본적으로 s..
2025.02.26