목록분류 전체보기 (270)
빙응의 공부 블로그

📝서론 페이징은 전에서 설명하듯이 상당한 성능 저하가 올 수 있다. 페이징은 페이지 테이블을 통해 매핑 저장 정보를 가져온다. 이것은 매번 메모리에 접근한다는 것으로 시간적으로나 공간적으로나 모두 손해가 심각한다.우리는 페이징의 주소 변환 속도를 향상 시켜야 한다.📝TLB운영체제의 실행 속도 개선을 위해 우리는 대부분의 경우 하드웨어로부터 도움을 받는다.주소 변환을 빠르게 하기 위해서 변환-색인 버퍼 또한 TLB라고 부르는 메모리 관리부(MMU)를 두기 시작한다. TLB의 기본 알고리즘TLB는 쉽게 말하면 캐시와 비슷하다. TLB에 변환 정보를 저장하여 만약 TLB에 들어있다면 메모리에 접근하지 않고 정보를 얻을 수 있다. 흐름을 살펴보자가상 주소에서 페이지 번호만 뽑아낸다.어느 페이지에 있지?TLB..

📝서론 운영체제는 거의 모든 공간 관리 문제를 해결할 때 두 가지 중 하나를 사용한다.가변 크기의 조각들로 분할하는 것(세그먼테이션)가변 크기로 분할하게 되면 공간 자체의 단편화가 발생메모리 할당이 점점 어려워진다.동일 크기의 조각들로 분할하는 것(페이징)유연성 개선 : 프로세스의 주소 공간 사용방식과는 상관없이 효율적인 주소 공간 개념 지원빈 공간 관리의 단순함운영체제는 모든 비어있는 페이지의 빈 공간 리스트만 유지하면 된다.운영체제는 페이지 테이블을 프로세스마다 유지 📝간단한 예제 및 개요페이징에 대해 명확히 이해하기 위해 간단한 예를 살펴보자아래 그림은 가상 메모리를 작은 단위로 쪼개서 페이지라 부르며 아래와 같이 구성된다. 물리 메모리는 아래 그림과 같이 고정 크기의 슬롯들로 이루어진다.물..

📝서론 : 세그먼트의 단점이번 장에서는 세그먼트에서 발생한 빈 공간인 외부 단편화 관리에 대해 알아볼 것이다. 빈 공간을 어떻게 관리할까?- 가변 크기의 요구를 충족시켜야 할 때, 빈 공간은 어떻게 관리하지?- 단편화를 최소하하기 위해 어떤 전략을 사용하지?- 여러 대안들의 시간과 공간적 오버헤드는 얼마지? 📝시작 전 가정malloc() 과 free() 에서 제공하는 것과 같은 기본 인터페이스를 가정한다.힙의 빈 공간을 관리하기 위해 링크드리스트를 사용한다.물론, 빈 공간을 표현할 수 있는 자료구조면 어떤 것이든 가능하다.클라이언트에게 할당된 메모리는 다른 위치로 재배치될 수 없다고 가정 한다. 📝20.2 저수준 기법들분할(splitting) 및 병합(coalescing)에 대해 알아보자 분할과 ..

📝서론 : 베이스와 바운드 방식의 단점전 시간에는 베이스와 바운드 방식을 배웠습니다. 하지만 이 방식에도 단점이 존재합니다.바로 비효율적인 메모리 사용에 있습니다. 아래 그림처럼 전통적인 주소 공간은 힙이 아래쪽으로 스택은 위쪽으로 자랍니다. 이 둘이 충돌하지 않도록 충분한 여유 공간을 남겨둡니다. 여기에서 문제가 발생합니다.베이스와 바운드 방식은 프로세스의 전체 주소 공간을 물리 메모리에 통째로 적재하기에 힙과 스택 사이의 미사용 공간까지 물리 메모리를 차지하게 됩니다.주소 공간이 물리 메모리보다 큰 경우 실행이 어렵다는 단점이 있습니다. 📝19.1 세그멘테이션 : 베이스/바운드의 일반화앞서 베이스와 바운드 레지스터는 하나로 프로세스 전체 주소 공간을 통제했습니다.이곳에서 스택과 힙 사이 미사용 ..
📝배경저번 포스팅 에서는 CSV 파일을 이용해 프로젝트 데이터를 불러오는 과정을 진행했습니다. 또한, MySQL 데이터를 CSV로 변환한 후 MongoDB로 복사하는 작업도 수행했습니다.이 프로젝트의 특성상 데이터는 약 10만 건으로 큰 변화가 없으며, 서버 실행 시 갱신됩니다. 원래는 한 달에 한 번 CSV 파일이 갱신되면, 서버를 재시작해 데이터를 반영하는 방식을 계획했습니다. [Place] 데이터 동기화 완료 - 추가/수정: 100676, 삭제: 0, 시간: 172223ms // 172초 거의 3분📝MySQL 데이터 추가 최적화하기 우선 MySQL 데이터 추가 및 갱신 로직을 최적화하겠습니다.데이터를 추가할 때는 기존 DB와 비교하여 중복 여부를 확인하고, 중복 데이터는 삭제, 갱신된 데이터는..
📝배경 [개인프로젝트]공간 데이터 최적화하기 [개인프로젝트]공간 데이터 최적화하기📝배경 이번에 개인 프로젝트를 진행하면서 공공데이터 포탈의 의료 데이터를 사용하게 되었습니다.그래서 의료 데이터 중 병원, 약국의 정보를 저장하여 그 데이터 중에서 좌표를 활용해서quddnd.tistory.com해당 포스팅에서 저는 공간 데이터를 이용한 병원, 약국 정보 조회에 대해 최적화를 진행했습니다. 이번에는 공간 데이터, 함수, 관계 함수를 제외한 나머지 요소들로 최적화를 진행하기로 했습니다. 해당 사항에 대한 리팩토링 과정을 정리하겠습니다. 📝MySQL 공간 인덱스 MySQL의 공간 인덱스는 R-Tree 인덱스라고 부릅니다. 그 이유 Rectangle의 R과 B-Tree 인덱스를 합쳤기 때문입니다.R-Tree..