Memory subsystem은 컴퓨터 시스템에서 데이터를 저장, 검색 및 관리하는 데 사용되는 구성요소와 기술의 집합을 말합니다. 이 시스템은 주로 메모리 계층 구조(memory hierarchy)로 구성되며, 이는 데이터 접근 속도와 저장 비용 사이의 균형을 맞추기 위해 다양한 유형의 메모리 기술을 계층적으로 배열한 것입니다. Memory subsystem의 주요 구성 요소는 다음과 같습니다: 레지스터(Register): CPU에 가장 가까이 있는 매우 빠르고 비용이 많이 드는 메모리 유형입니다. 명령 실행 중에 필요한 데이터와 계산 결과를 임시로 저장합니다. 캐시 메모리(Cache Memory): CPU와 주 메모리 사이에 위치하여 자주 사용되는 데이터와 명령어를 빠르게 접근할 수 있도록 저장합니다..
리눅스에서 프로세스 컨텍스트 스위칭(Process Context Switching)은 운영 체제가 한 프로세스의 실행을 중단하고 다른 프로세스를 실행하기 위해 현재 프로세스의 상태(컨텍스트)를 저장하고, 새로운 프로세스의 컨텍스트를 복원하는 과정입니다. 이 과정을 통해 CPU는 여러 프로세스를 동시에 실행하는 것처럼 보이게 할 수 있으며, 이를 통해 멀티태스킹을 실현합니다. 컨텍스트 스위칭의 주요 구성요소 레지스터 상태: CPU 레지스터에 저장된 값들, 예를 들어, 프로그램 카운터(PC), 스택 포인터(SP), 일반 목적 레지스터, 조건 코드 등이 포함됩니다. 프로세스 제어 블록(PCB): 운영 체제가 각 프로세스에 대해 유지하는 정보로, 프로세스 상태, 프로세스 번호(PID), 프로그램 카운터, 레지스..
리눅스 운영 체제에서 "task"와 "process"는 종종 상호 교환적으로 사용되는 용어입니다. 하지만, 이들 간에는 미묘한 차이가 있으며, 이 차이는 리눅스의 내부 구현과 스케줄링 방식을 이해하는 데 중요합니다. Process 정의: 프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영 체제에서 프로세스는 자체적인 주소 공간, 코드, 데이터 및 시스템 리소스를 가집니다. 프로세스는 하나 이상의 스레드를 포함할 수 있으며, 각 스레드는 프로세스 내에서 실행되는 실행의 단위입니다. 특징: 프로세스는 고유한 프로세스 식별자(PID)를 가지며, 시스템 리소스(예: 파일 핸들, 네트워크 연결 등)와 메모리(데이터 세그먼트, 코드 세그먼트, 스택 등)를 할당받습니다. 관리: 리눅스 커널은 프로세스 생성, 실행,..
fork()와 exec()는 UNIX 및 유닉스 계열 운영 체제(예: 리눅스)에서 프로세스를 생성하고 관리하는 데 사용되는 두 가지 중요한 시스템 호출입니다. 이들은 프로세스의 생성 및 실행에 있어 서로 보완적인 역할을 하지만, 각각의 목적과 작동 방식에는 분명한 차이가 있습니다. fork() 목적: fork() 시스템 호출은 호출한 프로세스(부모 프로세스)의 정확한 복사본을 생성하는 데 사용됩니다. 이 복사본을 자식 프로세스라고 합니다. 자식 프로세스는 부모 프로세스와 거의 동일한 메모리 이미지, 환경 변수, 파일 디스크립터 등을 가지지만, 프로세스 식별자(PID)는 다릅니다. 작동 방식: fork()는 새로운 프로세스를 생성한 후, 부모 프로세스와 자식 프로세스에서 각각 다른 값을 반환합니다. 부모 ..
리눅스의 가상 메모리 관리는 복잡한 시스템이며, 여러 컴포넌트와 메커니즘을 포함합니다. 가상 메모리 시스템의 주요 목적은 물리적 메모리의 한계를 초월하여 프로세스에게 더 많은 메모리를 제공하는 것입니다. 이를 통해 시스템의 효율성과 유연성이 증가합니다. 리눅스 가상 메모리 관리의 핵심 개념과 구성 요소를 아래에 설명합니다. 1. 가상 메모리와 물리적 메모리 가상 메모리: 프로세스에게 제공되는 주소 공간으로, 실제 메모리 주소와는 독립적입니다. 이를 통해 프로세스는 자신만의 독립된 메모리 공간을 가지는 것처럼 동작할 수 있습니다. 물리적 메모리: 컴퓨터에 실제로 장착된 RAM(Random Access Memory)을 의미합니다. 2. 페이지 리눅스는 가상 메모리와 물리적 메모리를 페이지라고 하는 고정 크기..
안드로이드의 Secure Boot는 디바이스가 부팅될 때 운영 체제와 그 커널이 변조되지 않았는지 확인하는 보안 메커니즘입니다. 이 기능은 사용자와 기기의 데이터를 안전하게 보호하기 위해 설계되었습니다. Secure Boot는 루트킷이나 부트로더 수준에서의 악성 소프트웨어 공격으로부터 기기를 보호하는 데 중요한 역할을 합니다. 안드로이드 디바이스가 부팅 과정을 시작할 때, Secure Boot는 소프트웨어가 신뢰할 수 있는 출처에서 온 것인지를 검증합니다. 작동 방식 Bootloader 검증: Secure Boot는 첫 번째 단계로서, 디바이스의 부트로더가 정상적인지 확인합니다. 부트로더는 공개 키 인프라(PKI)를 사용하여 서명되어 있으며, 디바이스의 펌웨어에 내장된 해당 공개 키로 검증됩니다. 운영 ..
Segmentation fault와 Page fault는 컴퓨터 운영 체제에서 발생하는 두 가지 다른 종류의 오류입니다. 각각의 차이점을 이해하기 위해서는, 먼저 각 용어의 의미를 알아야 합니다. Segmentation Fault 정의: Segmentation fault는 프로그램이 잘못된 메모리 영역에 접근하려고 할 때 발생하는 오류입니다. 이는 주로 프로그램이 할당되지 않은 메모리를 읽거나 쓰려고 할 때, 또는 접근 권한이 없는 메모리 영역에 접근하려고 할 때 발생합니다. 원인: 주로 포인터 오류, 배열의 경계를 벗어난 접근, 참조된 메모리의 해제 후 접근 등 프로그래머의 실수로 인해 발생합니다. 결과: 프로그램이 비정상적으로 종료됩니다. Page Fault 정의: Page fault는 프로세스가 현..
- Total
- Today
- Yesterday