[CS기초] 시스템 콜(System Call)
·
크래프톤 정글/CS기초(키워드, 개념정리)
시스템 콜(System Call)운영체제(OS)는 사용자 프로세스와 하드웨어 사이에 위치하면서 직접적인 자원 접근을 통제합니다. 그런데 사용자 프로세스도 파일을 열거나, 메모리를 할당하거나, 네트워크 통신이 필요할 때가 있는데요. 이때 사용자 프로세스가 운영체제에게 요청을 전달하는 공식적인 방법이 바로 시스템 콜(System Call)입니다. 시스템 콜이란?시스템 콜(System Call)은 시스템 자원 접근이 제한된 사용자 프로세스가 해당 자원을 사용하는 작업을 수행해야 할 때, 운영체제에게 이를 대신 처리하도록 요청하는 공식적인 메커니즘입니다. 즉 일반 프로세스가 직접 하드웨어나 커널 메모리에 접근하는 대신 시스템 콜을 통해 운영체제에 간접적으로 요청을 보내면, 운영체제가 해당 요청을 대신 처리해 ..
[CS기초] Demand-Zero Memory
·
크래프톤 정글/CS기초(키워드, 개념정리)
Demand-Zero MemoryDemand-Zero Memory는 프로세스가 메모리를 요청할 때, 실제 메모리 페이지를 즉시 할당하지 않고, 실제로 접근하는 순간 깨끗한(0으로 초기화된) 메모리를 제공하는 메커니즘을 의미합니다. Demand-Zero Memory의 핵심 개념프로세스가 새 메모리 공간(예: malloc, new, 스택 확장 등)을 요청하면 운영체제는 바로 물리 메모리를 할당하지 않는다대신 가상 메모리 상의 해당 영역을 '예약(reserved)' 상태로 표시해두고, 첫 번째 접근(read/write)이 발생할 때 실제 물리 메모리 페이지를 연결한다이때 제공되는 메모리 내용은 모두 0으로 초기화되어 있어, 프로세스는 이를 '깨끗한 공간'처럼 사용할 수 있게 된다 Demand-Zero Mem..
[CS기초] Implicit Free List vs Explicit Free List
·
크래프톤 정글/CS기초(키워드, 개념정리)
Implicit Free List vs Explicit Free List동적 메모리 할당을 관리할 때, 운영체제나 할당기는 사용 가능한(free) 메모리 블록을 효율적으로 관리하기 위해 다양한 전략을 사용하게 되는데요. 이를 위한 대표적인 두 가지 방법이 바로 Implicit Free List와 Explicit Free List입니다. 이번 글에서는 각 방식의 특징과 장단점을 함께 살펴보도록 하겠습니다. Implicit Free ListImplicit Free List는 메모리의 모든 블록이 포인터를 갖고 있진 않지만, 크기 정보를 이용해 각 블록을 마치 연결 리스트처럼 순회할 수 있는 구조입니다. 각 블록들은 물리적으로는 연속적으로 배치되어 있지만, 블록마다 크기가 가변적이기 때문에 각 블록의 크기를..
[CS기초] 메모리 할당 정책 (Memory Allocation Policies)
·
크래프톤 정글/CS기초(키워드, 개념정리)
메모리 할당 정책 (Memory Allocation Policies)메모리 할당 정책은 사용 가능한 메모리 블록들 중 요청된 크기에 가장 적합한 블록을 선택하는 전략을 의미하는데요. 이때 운영체제가 메모리를 프로세스에게 할당할 때 사용하는 대표적인 방법으로는 First Fit, Next Fit, Best Fit 등이 있습니다. 1. First Fit (최초 적합)개념메모리를 앞에서부터 탐색하여 요청한 크기 이상의 첫 번째 빈 공간을 찾아 할당하는 방법특징탐색 시간이 짧아 빠른 할당이 가능하다앞쪽 메모리 공간이 빠르게 소진될 수 있으며, 단편화가 자주 발생할 수 있다장점: 구현이 단순하고 속도가 빠르다단점: 메모리 앞부분에 단편화가 집중될 수 있다 2. Next Fit (다음 적합)개념이전 할당이 이루어..
[CS기초] 메모리 단편화(Memory Fragmentation)
·
크래프톤 정글/CS기초(키워드, 개념정리)
메모리 단편화(Memory Fragmentation)메모리 단편화란? 메모리 단편화(Memory Fragmentation)는 프로그램 실행 중 메모리를 동적으로 할당하고 해제하는 과정에서 메모리가 비효율적으로 조각나거나 공간을 제대로 활용하지 못하게 되는 현상을 의미하는데요. 이는 시스템 성능과 메모리 사용 효율을 크게 떨어뜨리는 요인이 됩니다. 메모리 단편화의 종류1. 외부 단편화(External Fragmentation)할당과 해제를 반복하다 보면 사용 가능한 메모리 공간이 작은 크기로 여러 곳에 흩어지게 되는 현상총 사용 가능한 메모리는 충분하지만 연속적인 공간이 부족하여 할당 요청이 실패하는 문제가 발생한다예시) 10MB의 빈 메모리가 1MB씩 10개로 흩어져 있어, 2MB의 요청이 실패하는 상..
[CS기초] 동적 메모리 할당 (힙, sbrk, malloc ,free)
·
크래프톤 정글/CS기초(키워드, 개념정리)
동적 메모리 할당 (힙, sbrk, malloc ,free)운영체제와 시스템 프로그래밍을 공부할 때 빠질 수 없는 주제 중 하나가 바로 동적 메모리 할당(Dynamic Memory Allocation)인데요. 이번 글에서는 동적 메모리 할당과 관련된 핵심 개념들인 힙(Heap), sbrk, malloc, free에 대해 정리해 보겠습니다. 동적 메모리 할당이란?정의: 프로그램 실행 도중에 필요한 메모리 크기를 결정하고, 이를 운영체제로부터 요청하여 사용하는 것필요성컴파일 시점에 데이터 크기를 알 수 없는 경우프로그램 실행 중 데이터 구조(배열, 연결 리스트 등)의 크기가 가변적인 경우대표 예시malloc, calloc, realloc, free 함수 사용 힙(Heap) 영역정의프로그램 메모리 영역 중 ..
[CS기초] 가상 메모리(Virtual Memory)와 페이징(Paging)
·
크래프톤 정글/CS기초(키워드, 개념정리)
가상 메모리(Virtual Memory)와 페이징(Paging)운영체제를 공부하면서 반드시 짚고 넘어가야 할 개념 중 하나가 바로 가상 메모리(Virtual Memory)입니다. 그리고 이 가상 메모리를 구현하는 핵심 기법 중 하나가 바로 페이징(Paging)인데요. 이번 글에서는 이 두 개념에 대해 정리해보겠습니다. 가상 메모리(Virtual Memory)가상 메모리는 물리적인 메모리(RAM)의 한계를 극복하고, 각 프로세스마다 독립적인 메모리 공간을 제공하기 위한 운영체제의 메모리 관리 기법입니다. 가상 메모리의 핵심 목적추상화(Abstract)프로세스가 마치 자신만의 큰 연속된 메모리를 가진 것처럼 보이게 함보호성(Protection)프로세스 간 메모리 접근을 격리효율성(Efficiency)실제 ..
[중간정리] 6주차 - C언어(포인터), 이진탐색트리/RB트리/AVL트리
·
크래프톤 정글/CS기초(키워드, 개념정리)
C 코드(포인터) 문제 해결하기 (1)#include int main() { int numArr[5] = { 11, 22, 33, 44, 55 }; int *numPtrA; void *ptr; numPtrA = &numArr[2]; ptr = numArr; printf("%d\n", /** 변수는numPtrA만을 사용하세요. **/); printf("%d\n", /** 변수는 ptr만을 사용하세요. **/); return 0; }문제 요구사항소스 코드의 빈 부분을 완성해 55와 22가 각 줄에 순서대로 출력되게 만들기문제 해석(1) numPtrA 는 int형 포인터(int*)이기 때문에 현재 위치(numArr의 2번 index)에서 4번 ..