본문 바로가기

분류 전체보기113

TIL(21일차) 메모리 할당기 제작 기초 malloc lab 과제를 1주일안에 해치워야 한다. 여태까지 그냥 사용하기만 했던 malloc을 C언어로 구현해보고 메모리의 흐름과 배치 알고리즘을 완벽히 내꺼로 만들어보자 배치 알고리즘에 의해 저번 TIL에 올린 단편화 현상이 어떻게 생기는지 코드로 이해해보는 시간을 가질 것같다. 배치 알고리즘은 3가지가 대표적으로 있는데 배치 알고리즘 First-fit : 메모리의 첫주소부터 검사해서 크기가 맞는 첫번째 메모리를 주는 배치 알고리즘이다. 예를 들어서 20의 작업이 들어가야한다면 처음부터 검사해서 주소를 선형으로 탐색하여 20M이 충분히 들어갈 수 있는 공간이 있다면 그 공간에 바로 적재하는 것이다. Next-fit : First-fit 알고리즘과 다르게 이전에 검색을 중지한 위치에서 검색을 시작한다.. 2023. 5. 17.
TIL(20일차) 동적 메모리 할당 동적 메모리 할당기는 힙 이라고하는 프로세스의 가상메모리 영역을 관리한다. 할당기는 힙을 다양한 크기의 블록들의 집합으로 관리한다. 각 블록은 할당되어있거나 가용한 가상메모리의 연속적인 묶음이다. 할당된 블록은 응용하기 위해 명시적으로 보존되었다. 가용한 블록은 할당을 위해 사용할 수 있는데, 할당된 블록은 응용에 의해 명시적으로 또는 메모리 할당기 자신에 의해 암묵적으로 반환될때 까지 남아있다. Malloc malloc 함수는 블록 내에 포함될 수 있는 어떤 종류의 데이터 객체에 대해서 적절히 정렬된 최소 size 바이트를 갖는 메모리 블록의 포인터를 리턴한다. malloc은 리턴 메모리를 초기화하지 않는다. 초기화환 동적 메모리를 원한다면 calloc을 사용할 수 있다. 할당된 메모리를 0으로 초기화.. 2023. 5. 14.
TIL(19일차) 예외흐름 제어 프로그래밍을 하다보면 예외에 대한 처리를 하는데 한번씩 이 예외들은 안에서 어떻게 처리가 될까? 문득 궁금했던 적이 있었다. 간단하게 글로보면 예외상황이 나오면 다른 행동을 하게 시키는 것이지만 막상 컴퓨터 내부에서는 그리 말처럼 쉽게 돌아가지는 않는다. 예외 상황은 하드웨어와 운영체제에 의해서 구현된 예외적인 제어흐름의 한 가지 형태인데, 부분적으로 하드웨어로 구현되어 있다. 예외상황 우리가 어떤 App을 사용하면서 무난하게 PC가 작동한다고 가정해보자. 프로세서는 현재 어떤 명령어 인스트럭션(I cur)을 실행하고 있을때, 프로세서 상태에 중요한 변화가 일어나고 있다. 이 상태(State)는 프로세서 내 다양한 비트들과 신호들로 인코드되는데, 이런 상태의 변화를 이벤트(Event)라고한다. 이벤트는 .. 2023. 5. 13.
WIL (RB트리 vs AVL트리) RB트리는 AVL과 다르게 색상이라는 속성과 그 속성을 이용하여 트리의 레벨 균형을 맞추는 BST트리의 한 종류이다. BST트리중 균형을 잡는 트리는 대표적으로 2개가 있다. RB트리와 AVL트리이다. 두 트리의 차이는 아래와 같다. RB트리 vs AVL RB 트리 AVL 트리 이진 탐색 트리인가? yes yes 삽입/삭제/검색 시간 worst case = O(log n) worst case = O(log n) 삽입 /삭제 AVL 보다 빠름 RB보다 느림 검색 AVL 보다 느림 RB보다 빠름 balance 방식 black - depth balance-factor 응용사례 커널,자바 Tree map,c++ map dictionary,검색용도 AVL 사진 출처: https://en.wikipedia.org/.. 2023. 5. 11.