목록전체 글 (287)
빙응의 공부 블로그

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

📝서론 : 세그먼트의 단점이번 장에서는 세그먼트에서 발생한 빈 공간인 외부 단편화 관리에 대해 알아볼 것이다. 빈 공간을 어떻게 관리할까?- 가변 크기의 요구를 충족시켜야 할 때, 빈 공간은 어떻게 관리하지?- 단편화를 최소하하기 위해 어떤 전략을 사용하지?- 여러 대안들의 시간과 공간적 오버헤드는 얼마지? 📝시작 전 가정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..
📝배경개인프로젝트로 병원, 약국의 위치를 검색하고 그 병원의 진료 내역을 공유할 수 있는 서비스를 기획했습니다.병원, 약국 위치를 받기 위해 공공데이터 포탈의 CSV 파일을 활용하기로 하였고, CSV 파일을 DB에 유지하며 최신 정보가 들어왔을 때 정상적으로 갱신이 되게 하겠습니다. 최종 목표는 CSV 파일을 DB에 저장하고 최신 정보를 중복 처리, 최신화 하는 것입니다. 📝CSV 파일 저장하기 일단 들어가기 앞서 제 프로젝트의 RDB입니다. 지금 CSV 파일에 저장하는 데이터는 장소 정보로 약국, 병원 모두 같은 규격에서 저장합니다. 그것을 이제 타입을 통해 분리합니다.@Entity@Builder@Getter@AllArgsConstructor@NoArgsConstructor@Table(name..