[OS] 메모리 관리 (Memory Management)
◎ 자료구조와 알고리즘/자료구조 이론2024. 5. 1. 00:54[OS] 메모리 관리 (Memory Management)

🖥️ 목표프로그래밍을 위한 편리한 추상화 제공부족한 메모리 자원을 경쟁 프로세스간 할당 → 최소한의 오버헤드프로세스 간 고립된 환경 제공🔍 Single/Batch Programming간단하게, 하나의 프로세스를 위한 것이므로 메모리를 다 쓰면 된다.🔍 Multiprogramming한 번에 여러 프로세스를 돌려야 함여러 작업의 I/O 및 CPU가 오버랩각 프로세스는 연속적인 공간과 요구하는 메모리 사이즈가 다름요구사항보호 : 각 프로세스가 사용하는 주소 공간을 제한해야 함빠른 변환 : 가상 메모리에서 물리 메모리로의 변환이 빨라야 함빠른 context switch : (보호 및 변환을 위해) 메모리 하드웨어 업데이트가 빨라야 함💡 1. Fixed Partitions📌 물리 메모리를 일정한 크기의 ..

[자료구조] 큐 (Queue) - 배열로 구현 (C, Python)
◎ 자료구조와 알고리즘/자료구조 이론2024. 4. 14. 13:51[자료구조] 큐 (Queue) - 배열로 구현 (C, Python)

🖥️ 들어가며 큐 (Queue) 는 선입선출 (First In First Out) 구조입니다. 가장 대표적인 예시로는 식당에서 줄 서는 상황이라 할 수 있을 것입니다. 큐는 다양한 애플리케이션에서 매우 중요한 역할을 합니다. 예를 들어, 운영체제에서는 프로세스 관리를 위해 작업들을 큐에 넣고, 네트워크 시스템에서는 데이터 패킷의 전송을 위해 큐를 사용하여 데이터의 순서를 유지합니다. 또한 프린터의 작업 대기열, 웹 서버의 요청 처리 등 실생활에서도 큐의 원리를 적용한 시스템을 쉽게 찾아볼 수 있습니다. 큐는 여러 가지 방식으로 구현될 수 있습니다. 가장 기본적인 형태는 선형 큐(Linear Queue)이며, 이외에도 순환 큐(Circular Queue), 우선순위 큐(Priority Queue), 덱(D..

[자료구조] 스택 - Stack (C, Python)
◎ 자료구조와 알고리즘/자료구조 이론2024. 4. 13. 21:51[자료구조] 스택 - Stack (C, Python)

우측 상단에서 다크 모드를 끌 수 있습니다! 🖥️ 들어가며 스택(Stack)은 우리 주변에서도 흔히 볼 수 있는 자료구조입니다. 문서 수정 시 되돌리기나, Ctrl-C Ctrl-V라는 좋은 예도 있고, 가장 대표적으로 사용되는 프링글스 과자 예시도 직관적으로 다가옵니다. 즉, 스택은 말 그대로 ‘쌓아놓은 어떤 더미’를 뜻합니다. 스택 스택의 가장 큰 특징은 후입선출(LIFO : Last-In First-Out)입니다. 아래 그림을 보면 이해하기 쉽습니다. 요는 가장 최근에 들어온 데이터가 가장 먼저 나간다 입니다. 스택의 구조 Push : 데이터 삽입 연산 Pop : 데이터 삭제 연산 요소(데이터) : 삽입된 데이터 스택 하단 : 가장 먼저 삽입된 데이터가 있는 곳, 최하단 스택 상단 : 스택의 입출력이..

[자료구조] 연결 리스트 - Linked List (C, Python)
◎ 자료구조와 알고리즘/자료구조 이론2024. 4. 12. 12:52[자료구조] 연결 리스트 - Linked List (C, Python)

🖥️ 들어가며 리스트는 프로그래밍에서 매우 중요한 자료 구조 중 하나입니다. 이는 순서가 있는 데이터의 집합을 관리하기 위한 방법으로, 데이터를 효율적으로 저장하고 검색, 수정, 삭제하는 작업을 수행할 수 있도록 돕습니다. 리스트는 크게 두 가지 유형으로 나눌 수 있습니다. 순차 리스트 (Sequential List) 순차 리스트는 가장 기본적인 형태의 리스트로, 배열을 기반으로 구현됩니다. 배열의 인덱스를 사용하여 데이터에 접근하기 때문에 특정 위치의 데이터를 빠르게 찾거나 읽어올 수 있습니다. 이러한 특성 덕분에 생성 및 데이터 검색(또는 출력) 작업은 순차 리스트에서 매우 효율적으로 이루어집니다. 그러나 순차 리스트는 데이터의 삽입이나 삭제가 비효율적입니다. 특히 리스트의 중간에서 삭제나 삽입 연산..

[자료구조] 순환 (Recursion)
◎ 자료구조와 알고리즘/자료구조 이론2022. 1. 18. 13:27[자료구조] 순환 (Recursion)

순환 (Recursion) 흔히 재귀라고 부른다. 즉, 함수가 자기 자신을 호출하여 문제를 해결하는 프로그래밍 기법이다. 순환으로 구현할 수 있는 알고리즘의 대다수는 반복으로도 구현할 수 있다. 다만 순환은 단순하지만 반복이 복잡해지거나, 그 반대가 되는 알고리즘이 존재한다. 순환의 예 팩토리얼 팩토리얼은 다음과 같이 정의된다. n!을 정의하는 와중에 (n-1)!이 필요하므로, 순환으로 해결할 수 있다. 간단하게 코드로 구현해 보자. 참고로 팩토리얼의 경우에는 순환보다 반복이 빠르다고 알려져 있다. int factorial(int n) { if (n

image