메모리 계층 : 레지스터, 캐시, 메인 메모리, 보조 메모리
“메모리” 하면 사실 RAM이 가장 먼저 떠오릅니다. 하지만 여러 메모리 형태가 “메모리 계층”으로 분리되어 존재합니다. 레지스터, 캐시, 메인 메모리, 보조 메모리 이들은 어떤 역할을 하는 걸까요?
“메모리” 하면 사실 RAM이 가장 먼저 떠오릅니다. 하지만 여러 메모리 형태가 “메모리 계층”으로 분리되어 존재합니다. 레지스터, 캐시, 메인 메모리, 보조 메모리 이들은 어떤 역할을 하는 걸까요?
작업 관리자를 들어가면 성능 탭에 CPU 성능에 대한 모니터링 데이터를 볼 수 있는데요.여기에 속도, 코어, 논리 프로세서, 캐시 같은 내용이 있습니다. 오늘은 CPU 란 어떻게 구성이 되어있고, 어떤 과정을 통해서 연산을 하는지…
코딩을 하다보면 특정 시점으로 되돌아가야 하는 경우가 종종 발생합니다. 이런 경우 git restore, git revert, git reset을 사용합니다. “Git 되돌리기” 어떤 경우에 어떻게 사용하는 걸까요?
여러 알고리즘을 공부하게 되면서 “재귀 함수”가 프로그래밍의 기초 개념을 위해 초반에만 살짝 지나가는 개념이 아니라는 것을 깨닫게 되었습니다. “재귀 함수”는 문제를 해결하기 위해 문제를 더 작은 형태로 나누어 직접 또는 간접적으로 정의 내에서 자신을 호출하는 함수입니다.
브루트 포스의 단점이 방대한 input에서는 성능이 떨어진다는 점이였습니다. 이를 해결할 수 있는 게 “이분 탐색” 입니다. 말 그대로 반으로 나누어 탐색하는 거죠. 어떻게 반으로 나누어서 탐색하는 데 답을 찾을 수 있을까요?
BFS 란? BFS(Breadth First Search)는 그래프에서 발생하는 사건들을 검사 혹은 처리하기 위해 탐색하는 방법 중 하나 입니다. BFS는 그래프를 수준별로 탐색하여 다음 수준으로 이동하기 전에 주어진 노드의 모든 인접 노드를 방문하는 그래프 순회 알고리즘입니다. BFS vs DFS BFS와 같은 탐색 알고리즘에서 가장 먼저 비교되는 게 DFS인데요 BFS는 레벨별로 그래프를 탐색하여 다음 레벨로 이동하기 전에 주어진 … Read more
“트리는 그래프의 일종이다” 라는 사실을 알게되서 그럼 “그래프 구조” 란 뭘까? 하고 살짝 찾아본다는 게…. 해외 문서까지 찾아가서 정리해버리게 되었네요…. 당장은 트리 구조에서 문제를 풀고 있지만 언젠가 다른 그래프 구조의 문제도 해결할 일이 생길 것 같아 기왕 트리를 정리하는 김에 그래프를 몽땅 정리해봤습니다. GeeksForGeeks라는 사이트에 graph가 너무 자세히 설명되어서 한 번 쭉 읽고 정리해보았습니다. “그래프” … Read more
“브루트 포스” 알고리즘 이름을 처음 들었을 때는 이름부터 포스가 느껴졌습니다… ㅎ 하지만 한글로는 “완전 탐색” 말 그대로 for 문으로 순회하면서 확인, 연산하는 프로세스를 의미합니다. “브루트 포스 알고리즘”이라는 개념을 몰라도 코딩 기초 과정에서 자연스레 사용했던 알고리즘이였던 것….! 그럼 이런 간단한 알고리즘은 사용하면 안되는 알고리즘일까요? 그리고 그리디 알고리즘은 무엇일까요? 브루트 포스랑 비슷한 알고리즘 일까요? 브루트 포스 (완전 … Read more
큐는 FIFO(선입선출) 원칙을 따르는 데이터 구조입니다. (“파이썬 deque”가 queue의 일종) 사람들이 줄을 서서 기다리게 queue라고 생각하시면 됩니다. 먼저 도착한 사람이 가장 먼저 빠져나갑니다. 실제로 “queue”는 대기줄을 의미하는 단어입니다. queue에서 요소는 후면(끝)에 추가되고 전면(전면)에서는 제거됩니다. 아래 그림을 확인해주세요. 큐 (Queue)는 언제 사용하는 걸까? 큐 자료구조의 특성에 맞게 시퀀스의 양쪽 끝에서 효율적인 삽입 및 삭제 작업이 중요한 … Read more
Compilation과 Interpretation의 차이점 Compilation 컴파일은 프로그램의 소스코드 전체를 기계어나 중간코드로 한번에 번역하는 것을 말합니다. 이 프로세스는 컴파일러에 의해 수행됩니다. 컴파일은 프로그램이 실행되기 전에 발생합니다. 컴파일된 코드는 필요할 때마다 실행할 준비가 되어 있습니다. 컴파일된 코드는 번역이 미리 이루어지기 때문에 실행 속도 측면에서 더 효율적인 편입니다. Interpretation Interpretation이란 프로그램의 소스코드를 기계어로 번역하거나 필요에 따라 한 줄씩 실행하는 … Read more