프로세스 vs 스레드 : IPC, 주소 공간, 멀티 프로세스, 멀티 스레드

멀티 프로세스 vs 멀티 스레드

프로젝트를 진행 하다가 처리 시간이 긴 프로세스를 만난 적이 있었습니다. 그때 바로 생각난 개념이 “멀티 프로세싱” 이였습니다. 그런데 공부를 하다 보니 “스레드”라는 개념이 튀어나옵니다. “프로세스 vs 스레드” 끝인가? 아닙니다… 동시성, 병렬성, 뮤텍스…

멀티 태스킹 : 스케줄러, Dispatch, Context Switching, PCB

멀티 태스킹

“Context Switching”에서 Context는 프로세스의 상태를 의미합니다. 기본적으로 Context Switching은 프로세스 상태를 바꾸는 것을 말하며,다시 말하면 프로세스를 일시 중지하고 다시 시작할 수 있도록 프로세스/스레드 상태를…

프로세스 생명주기 : 대기열, 스케줄링, 가상 메모리 스와핑

프로세스 생애주기

어찌보면 당연한거지만 프로세스에도 생애주기가 있었습니다. 사람도 세포도, 여러 대사 작용들도 모두 cycle이 있습니다. SDLC 개념도 처음 들으면서 재밌다 생각했는데, “프로세스 생명주기”도 있다는 걸 깨닫지 못한 게 오히려 신기한 건가 싶기도 합니다.

메모리 계층 : 레지스터, 캐시, 메인 메모리, 보조 메모리

메모리 계층

“메모리” 하면 사실 RAM이 가장 먼저 떠오릅니다. 하지만 여러 메모리 형태가 “메모리 계층”으로 분리되어 존재합니다. 레지스터, 캐시, 메인 메모리, 보조 메모리 이들은 어떤 역할을 하는 걸까요?

재귀 함수 : 볼수록 빠져는 게 꼭 재귀같네

파이썬으로 이해하는 재귀 함수

여러 알고리즘을 공부하게 되면서 “재귀 함수”가 프로그래밍의 기초 개념을 위해 초반에만 살짝 지나가는 개념이 아니라는 것을 깨닫게 되었습니다. “재귀 함수”는 문제를 해결하기 위해 문제를 더 작은 형태로 나누어 직접 또는 간접적으로 정의 내에서 자신을 호출하는 함수입니다.

이분 탐색 : 파이썬으로 이해하는 이분 탐색 (이진 탐색)

파이썬으로 이해하는 이진탐색

브루트 포스의 단점이 방대한 input에서는 성능이 떨어진다는 점이였습니다. 이를 해결할 수 있는 게 “이분 탐색” 입니다. 말 그대로 반으로 나누어 탐색하는 거죠. 어떻게 반으로 나누어서 탐색하는 데 답을 찾을 수 있을까요?

BFS : 파이썬으로 이해하는 BFS

파이썬으로 이해하는 bfs

BFS 란? BFS(Breadth First Search)는 그래프에서 발생하는 사건들을 검사 혹은 처리하기 위해 탐색하는 방법 중 하나 입니다. BFS는 그래프를 수준별로 탐색하여 다음 수준으로 이동하기 전에 주어진 노드의 모든 인접 노드를 방문하는 그래프 순회 알고리즘입니다. BFS vs DFS BFS와 같은 탐색 알고리즘에서 가장 먼저 비교되는 게 DFS인데요 BFS는 레벨별로 그래프를 탐색하여 다음 레벨로 이동하기 전에 주어진 … Read more