본문 바로가기

분류 전체보기

#단편화, 스와핑, 페이징, 세그먼테이션 주기억장치에 프로세스를 적재시키지만 단편화 문제가 발생한다. 단편화란 ‘이용되지 않고 낭비되는 공간의 발생’이라고 할 수 있으며, 분할된 영역 내에서 낭비되는 공간이 발생하는 경우를 ‘내부 단편화’라 하고, 전체 영역에서 이용되지 않는 공간이 발생하는 경우를 ‘외부 단편화’라고 한다. 외부 단편화의 한 예로, 작은 크기로 분할된 영역 a가 있는 반면, 필요한 메모리 자원이 이보다 큰 프로세스들만이 메모리를 점유한다면, 이 때 이 영역a는 외부 단편화의 한 요인으로 볼 수 있다. 그러나 이런 단편화는 근본적으로는 해결할 수 없어 보인다. 프로세스의 작업이 동시에 끝나 메모리 자원이 동시에 반환될 수 없기 때문이다. 따라서 단편화를 근본적으로 해결하기 보다는, 불규칙적인 메모리 할당 공간을 보다 효율적으로 .. 더보기
#고정분할과 가변분할 단일 프로세스 일 때는 메모리에 업로드 되는 프로세스가 하나 밖에 없으니 상관없지만, 프로세스가 여러 개일 때는 메모리 자원을 각 프로세스에 어떻게 할당해야 할지 이슈거리가 된다.고정 분할 다중 프로그래밍(FPM, Fixed Partition Multiprogramming)은 메모리의 영역을 여러 영역으로 분할하는 기법이다. 만약 150MB의 메모리라면 아래 표처럼 분할할 수도 있다. 물론 다른 크기로 분할할 수도 있다.[그림 1]10MB20MB30MB40MB50MB가변 분할 다중 프로그래밍(VPM, Variable Partition Multiprogramming)은 FPM과는 달리 메모리를 분할하지 않고 하나의 영역으로 유지하되, 프로세스에 따라 할당 영역과 크기가 정해진다. 즉, 150MB의 메모리가.. 더보기
#단편화와 그 해결 기법 아래 강의 정리 내용입니다. 강의 제공해주신 'Young Hyun Bae'님 감사합니다.09-1 메모리의 기본 구조와 동작 (https://www.youtube.com/watch?v=IB1Klmq4UPc)09-2 메모리 관리 기법 (1) (스와핑, 연속 메모리 할당) (https://www.youtube.com/watch?v=9uygOl-uyhA)09-3 메모리 관리 기법 (2) (페이징, 세그먼테이션) (https://www.youtube.com/watch?v=2gW9pTFEW0U)(정리 및 학습 중) ※ 단편화 (Fragmentation)■ 외부 단편화 (external fragmentation)● 메모리 할당이 반복됨으로써 사용할 수 없는 작은 크기의 가용 공간이 분산되어 생기는 현상■ 내부 단편화.. 더보기
#카탈란 수와 올바른 괄호 경우의 수 찾기 카카오 프로그래머스에 수록된 아래의 알고리즘 문제가 있다.올바른 괄호란 (())나 ()와 같이 올바르게 모두 닫힌 괄호를 의미합니다. )(나 ())() 와 같은 괄호는 올바르지 않은 괄호가 됩니다. 괄호를 이리저리 움직이며 올바른 괄호를 찾던 민호는 N개의 괄호쌍이 있을 때, 올바른 괄호를 만들 수 있는 경우의 수가 궁금해졌습니다. 괄호 쌍의 개수 N개가 주어졌을 때, 경우의 수를 반환하는 parenthesisCase 함수를 완성해 보세요. 예를 들어- N = 1일 경우는 () 의 1가지만 존재하므로 1을 리턴하면 됩니다.- 3일 경우에는 ((())), (())(), ()(()), ()()(), (()()) 의 5가지가 존재하므로 5를 리턴하면 됩니다. 올바른 괄호의 경우의 수를 찾는 문제인데, 괄호 쌍.. 더보기
#Knapsack Problem 학부생 때 제대로 이해 못했던 알고리즘을 지금에서야 공부하고 있다. 무엇보다 기본이 가장 중요하니까- 알고리즘은 간단하지만, 확인하는 절차가 상당히 오래 걸렸다.배낭 문제의 목적은 n개의 무게와 가격을 가진 각각의 아이템 중에서,배낭의 용량을 초과하지 않으면서 가격이 최대가 되는 아이템의 부분집합을 구하는 것이다.대략적인 설명과 알고리즘은 'Youtube 권오흠님의 알고리즘-동적계획법 영상'의 슬라이드로 대체한다. 설명이 조금 부족해 보일 수도 있지만, 동적 계획법을 잘만 이해하고 있다면 어렵지 않게 이해할 수 있을 것이라고 본다.알고리즘이 정말 너무 간단하다....알고리즘의 핵심은 결국 'M'이라는 배열에 memoization 작업을 하는 것이다. 아래는 내가 직접 만들어서 푼 문제이다.def knap.. 더보기
#뮤텍스와 세마포어에 관해. 제대로 알고 가자. 애초에 뮤텍스와 세마포어의 차이를 구분하는 것부터 잘못 되었다.왜냐하면 뮤텍스는 상호 배제를 의미하고, 이를 구현하기 위한 기법 중 하나가 바로 다익스트라가 제시한 '세마포어'이기 때문이다. 세마포어는 N개의 프로세스 간의 상호배제를 busy waiting의 문제없이 아주 심플하게 해결할 수 있다. 이 개념이 제시되기 전까지는 알고리즘들이 복잡해서 이해하기 굉장히 힘들었다. 더보기
#웹의 메소드 정리 HTTP 메소드에는는 여러 가지 있다. GET, POST, PUT, DELETE, PATCH 등등 여러가지 있고, 솔직히 제대로 다 이해하고 있지도 않다. 웹 개발 할 때는 주로 GET과 POST만 썼다. 서버 개발자가 GET과 POST만 사용해서 API를 만들었기 때문이었다. 큰 차이 없다고는 했지만, 어쩐지 찝찝하기는 했다.GET과 POST야 URL에 파라미터를 적재할 것이냐, 헤더에 적재할 것이냐 같은 분명한 차이가 있으니 그렇다 쳐도...POST, PUT는 참 비슷하면서도 다르다. 멱등성의 차이라고는 하는데, 사실 잘 와닿지는 않는다. 대신 멱등성 때문에 POST는 Create, PUT은 Update할 때 사용하면 적절하다는 것 정도? 어라.. 그러고보니 그 때는 Update API도 모조리 PO.. 더보기
#프로세서, 프로그램, 프로세스 구분 #프로세서하드웨어 측면에서 컴퓨터 내에서 프로그램을 수행하는 유닛이며, 소프트웨어적으로는 데이터 포맷을 변환하는 역할을 수행하는 데이터 프로세싱 시스템을 의미하며 워드프로세서, 컴파일러, 어셈블러 등이 포함된다. #프로그램컴퓨터가 처리할 일련의 작업 순서의 기술 및 작업에 필요한 어떤 데이터의 집합 #프로세스메모리에 적재되어 프로세서에 의해 실행 중인 프로그램 #프로그램 실행 과정1. 로더(*)는 메모리에 프로그램을 적재하고 실행 주소를 프로세서의 IP(=Instruction Pointer) 레지스터에 적재한다.2. 프로세서는 IP레지스터에 저장된 주소로 메모리에 접근하여 실행할 명령어를 인출하여 IR(=Instruction Register)에 적재한다.3. 프로세서는 IR에 저장된 명령어를 실행하고 I.. 더보기