본문 바로가기

정글37

(TIL22일차) 저장장치 메모리 계층 구조란 보통 컴퓨터를 보는 시각으로는 메모리는 바이트들의 선형 배열이고, CPU는 각 메모리 위치를 상수시간 동안 접근할 수 있는 모델이라고 배운적이 있지만 현대 시스템들은 조금 괴리감이 있다. 바로 메모리 계층구조 때문인데, 메모리 시스템 . 즉 메모리 계층구조란 CPU 레지스터들은 가장 자주 이용하는 데이터를 보관한다. 작고 빠른 캐시메모리는 CPU 부근에서 비교적 늘니 메인메로리에 저장된 데이터와 인스트럭션들의 부분집합에 대한 준비장소로 사용된다. 계층 구조가 왜 필요할까? 보통 메모리 계층구조는 잘 작성된 프로그램이 어느 특정 수준의 저장장치를 다음 하위수준의 저장장치보다 좀 더 자주 접근하는 경향을 갖기 때문에 작동한다. 그래서 다음 수준에 있는 저장장치는 더 느릴수 있고, 크기도 .. 2023. 5. 17.
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.