안녕하세요, 루피입니다. 오늘은 자료구조 중 HashMap의 내부 동작을 더 깊이 이해하기 위해, Swift로 직접 구현한 과정을 공유하려 합니다. 바로 시작합니다.1. Map과 HashMap이란?Map: Key와 Value의 쌍으로 데이터를 저장하는 추상적인 자료구조입니다. HashMap: Map이라는 추상적인 개념을 해시 테이블을 사용해 실제로 구현한 구체적인 자료구조입니다.2. HashMap의 특징빠른 속도: 키를 해시 함수로 변환해 내부 배열(버킷)의 인덱스를 계산하므로, 데이터 검색/삽입/삭제가 평균적으로 O(1)의 시간 복잡도를 가집니다.순서 미보장: 데이터를 저장한 순서와 조회하는 순서가 다를 수 있습니다.Key의 유일성: Key의 중복을 허용하지 않습니다. 동일한 Key로 새로운 값을 저장..
안녕하세요, 루피입니다! 오늘은 캐시 메모리에 대해 정리해 보는 시간을 가져보겠습니다. 저번 주기억 장치에 관한 글을 읽고 오시면, 더 쉽게 이해되실 겁니다. 바로 시작합니다.1. 캐시 메모리란?캐시 메모리는 CPU와 주기억장치(RAM) 사이에 위치한, 용량은 작지만 속도가 매우 빠른 메모리입니다. CPU의 연산 속도는 눈부시게 빠른데, 주기억 장치의 속도는 그에 미치지 못하죠. 캐시 메모리는 바로 이 둘 사이의 속도 차이를 극복하기 위해 존재합니다.CPU는 데이터를 찾을 때, 느린 주기억 장치까지 가기 전에 먼저 빠른 캐시 메모리를 확인합니다.1.1) 캐시의 기본 동작CPU가 캐시 메모리를 뒤졌을 때, 원하는 데이터가 있느냐 없느냐에 따라 두 가지 상황이 발생합니다.캐시 히트 (Cache Hit): C..
안녕하세요, 루피입니다! 오늘은 주기억 장치에 대해 정리해 보는 시간을 가져보겠습니다. 특히 메모리에 관한 지식은 개발자에게 필수적인 요소라고 생각하는데 이번 기회에 잘 정리해 봐야 할거 같습니다. 바로 시작합니다.1. 메모리 계층 구조컴퓨터는 모든 데이터를 하나의 거대한 저장소에 보관하지 않습니다. 마치 우리가 일할 때, 가장 급한 서류는 책상 위에, 덜 급한 건 서랍에, 나중에 볼 건 창고에 두는 것처럼 말이죠. 컴퓨터 메모리도 속도, 비용, 용량을 고려해 계층 구조를 이룹니다.레지스터 : CPU 내부에 있는 매우 빠른 메모리로 CPU가 현재 수행 중인 연산에 필요한 데이터를 저장합니다.캐시 메모리 : CPU가 자주 사용할 것 같은 데이터를 미리 가져다 놓는 고속 메모리입니다. 레지스터보단 느리지만,..
안녕하세요, 루피입니다! 오늘은 CPU 동작원리에 대해 정리해보려합니다. 바로 시작합니다.1. 제어 장치와 ALU1) 제어 장치제어 장치는 명령어 실행 순서를 제어합니다. 즉, 명령어를 해석하고 실행에 대한 흐름을 제어하는 역할을 합니다. 예를 들어 다음과 같은 과정이 잘 진행될 수 있도록 흐름을 제어합니다.메모리에서 저장된 명령어를 가져옵니다.명령어를 해석해 ALU에 보냅니다.그러면 ALU는 계산을 실행하고 그 결과를 다시 메모리에 저장합니다.즉, 제어 장치가 각 과정을 수행하는 것이 아니라 일련의 흐름에 따라 순차적으로 잘 수행될 수 있도록 신호를 발생시키는 역할을 하는 것 입니다.2) ALUALU는 말 그대로 연산을 담당합니다. 즉, 산술 연산과 논리 연산을 담당합니다.3) 전체 과정고급언어 혹은 ..
안녕하세요, 루피입니다! 오늘은 컴퓨터의 명령어 처리 방식에 대해 정리해보는 시간을 가져보겠습니다. 바로 시작합니다.1. 명령어 유형명령어란 CPU에 특정 작업을 지시하는 기본 단위입니다. 컴퓨터는 오직 기계어만 이해할 수 있지만, 사람이 기계어를 직접다루기는 어렵기 때문에 어셈블리 언어와 같은 저수준 언어를 사용해 명령어를 표현합니다.어셈블리 언어에서의 명령어 유형명령어 유형설명명령어데이터 전송 명령어데이터를 메모리에서 레지스터로 이동하는 명령어LOAD, STORE, MOVE, PUSH, POP산술 연산 명령어사칙 연산을 수행하는 명령어ADD, SUB, MUL, DIV논리 연산 명령어참, 거짓을 나타내는 연산을 수행하는 명령어AND, OR, XOR, NOT분기 명령어다음에 실행될 명령어를 지정하는 명령..
안녕하세요, 루피입니다! 오늘은 저번 포스팅에 이어서 컴퓨터의 데이터 처리 방식에 대해 정리해보겠습니다. 바로 시작합니다. 1. 컴퓨터의 데이터 처리 단위 : 이진수인간은 숫자를 표현할 때 0부터 9까지의 10진수를 사용합니다. 하지만, 복잡한 연산을 순식간에 처리하는 컴퓨터는 오직 0과 1이라는 두 개의 숫자만으로 세상을 인식합니다. 이처럼 0과 1로 데이터를 표현하고 처리하는 방식을 이진수(Binary) 체계라고 합니다. 컴퓨터가 0과 1을 인식하는 원리는 핵심 부품인 트랜지스터에 있습니다. 트랜지스터란 전기신호를 이용해 스위치처럼 켜고 끌 수 있는 작은 반도체 소자입니다.스위치가 켜진(On) 상태 → 1 (고전압)스위치가 꺼진(Off) 상태 → 0 (저전압)수십억 개의 트랜지스터가 모여 0과 1의 ..
안녕하세여, 루피입니다! 오늘부터 컴퓨터 구조와 운영체제 핵심 노트라는 책을 정리해보려합니다. 바로 시작합니다.1. 컴퓨터 구조란?컴퓨터 구조는 컴퓨터의 물리적 구성과 동작 방식을 설명하는 분야입니다. 컴퓨터의 물리적 구성에는 CPU(중앙처리 장치), 메모리나 하드 디스크 드라이버 같은 기억 장치, 키보드나 마우스 같은 입출력 장치 등이 있습니다. 이러한 구성 중 하나라도 없으면 컴퓨터는 동작하지 않습니다.2. 컴퓨터의 구성요소컴퓨터 시스템은 크게 소프트웨어와 하드웨어로 구성됩니다. 먼저 소프트웨어는 운영체제와 응용 소프트웨어(프로그램)로 구분됩니다.반면, 하드웨어는 구성이 좀 더 복잡합니다. 다음과 같이 중앙 처리장치, 기억 장치, 입출력 장치로 구성됩니다.CPU : 컴퓨터의 두뇌로, 프로그램을 실행하..
안녕하세요, iOS 개발하는 루피입니다! 오늘은 OS란 무엇인가?, OS를 왜 공부해야하지? 라는 주제로 공부한 내용을 정리해 보도록 하겠습니다. 바로 시작합니다.OS 란 무엇인가?간단하게 말하자면, OS는 컴퓨터 시스템을 운영하는 소프트웨어입니다.우리가 흔히 사용하는 Windows, Linux, macOS, iOS 같은 것들이 바로 OS의 예죠.OS는 컴퓨터라는 복잡한 기계를 우리가 편하게 사용할 수 있게 해주는 "중간 관리자" 같은 존재라고 생각하면 됩니다.OS의 주요 특징 3가지항상 작동한다: 컴퓨터가 켜져 있는 동안 OS는 계속 실행되며 시스템을 관리합니다.서비스 제공자: 앱이 하드웨어를 사용할 수 있도록 도와줍니다.관리자 역할: 프로세스, 자원(메모리, CPU 등), UI를 관리합니다.그럼 OS..
안녕하세요, iOS 개발하는 루피입니다! 바로 안 나오면 모르는 거다. 바로 시작하겠습니다.디자인 패턴이란?프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것을 의미합니다. 디자인 패턴은 라이브러리나 프레임워크를 만드는데 기초적인 원리가 되며 지금도 많은 라이브러리, 프레임워크가 어떠한 디자인패턴을 기반으로 만들어지고 있습니다. 예를 들어 UIKit 경우 MVC 패턴을 기반으로 만들어졌습니다. 이때 UIKit은 프레임워크입니다.자 그렇다면 우리는 디자인 패턴을 왜 공부해야 하는가? ( 나의 생각 )1. 우리는 협업을 하는 사람이고, 개발자는 효율적이기 위해 노력해야 한다고 생각합니다.현업에서 일을 하다 보면, 우리는 문제..