BloomFilter에 대하여.
2024. 5. 29. 21:55
CS/자료구조
0. 들어가며 BloomFilter에 대해 알아보게 된 계기대규모 사용자 기반을 가진 서비스에서 사용자들에게 개인화된 정보를 제공하는 경우, 개인화된 정보를 효율적으로 저장하고 이를 빠르게 처리해야하는 것이 중요합니다. 하지만 DB만을 저장소로 사용하다보면 데이터가 쌓일수록 저장공간도 많이 사용해야하고, 트래픽이 많아질 수록 성능 저하가 생길 수 있습니다. 이러한 문제를 해결하기 위해 메모리를 효율적으로 사용하면서도 빠르게 특정 원소가 집합에 포함되어있는지 확인이 가능한 BloomFilter라는 자료구조를 도입해보았고, 도입하는 과정에서 BloomFilter에 대해 알아본 내용들을 정리해보려합니다.이번 글에서 다룰 내용 소개이번 글에서는 다음과 같은 내용을 다룹니다.BloomFilter가 무엇인지Bloo..
[Database] 인덱스(index)에 대하여.
2023. 12. 23. 02:28
CS/데이터베이스
0. 들어가며 데이터베이스의 쿼리 성능 향상을 위해 빼놓을 수 없는 것이 바로 인덱스입니다. 무지성으로 인덱스를 where 절에 있는 컬럼에 맞춰걸지 않지 않기 위해 공부한 내용을 정리해보려 합니다. 인덱스는 어떻게 동작하고, 인덱스를 걸었더니 왜 성능이 빨라진거지에 대한 물음을 얻는 것이 목표이며, 본 글의 내용은 Real MySQL 8.0을 주로 참고한 내용입니다. 따라서 MySQL과 InnoDB 스토리지 엔진을 기반으로 된 설명임을 알립니다. 이 글을 읽기 전 알고 있어야할 배경지식은 다음과 같습니다. B-Tree가 무엇인지 DB에 대한 간단한 지식 1. 데이터베이스의 디스크 읽기 HDD는 SSD에 비해 500배 느리고, SSD는 DRAM에 비해 1,000배 가량 느립니다. 또 DRAM은 CPU에 ..
[Database] Transaction에 대하여 1편 - 트랜잭션과 ACID
2023. 3. 24. 02:36
CS/데이터베이스
0. 들어가며 🏃🏻♂️ 이번 글은 데이터베이스의 트랜잭션 개념에 대해 가볍게 공부해보려다가 결국 데이터베이스 전공책을 펴게된 김에 정리하게 되었습니다. 본 글은 DATABASE SYSTEM CONCEPTS 7th edition의 Chapter 17. Transaction 내용을 나름대로 번역 + 요약 + 변형한 글입니다. 1. 트랜잭션와 ACID 😎 데이터베이스에서 실행되는 여러 연산은 사용자 입장에서는 하나의 단위로 보이는 경우가 있습니다. 대표적으로 송금이 그 예시이죠. 사실 송금이라는 행위는 한 계좌를 읽고, 돈을 빼고, 다른 계좌를 읽고, 돈을 넣고 등의 행위를 해야합니다. 허나 사용자 입장에서는 논리적으로 하나의 단위인 행위이죠. 이처럼 하나의 논리적 작업 단위를 이루는 연산의 집합을 트랜잭..
[운영체제(OS)] 디스크 구조와 디스크 스케줄링
2022. 3. 11. 23:46
CS/운영체제
0.🚶들어가며 이번 글에서는 저장장치의 대표적인 예인 디스크에 대해 알아볼 예정입니다. 디스크의 구조는 어떠한지, 디스크 스케줄링은 무엇인지에 대한 내용을 다뤄보도록 하겠습니다. 1.⚪디스크의 구조 위 그림은 디스크의 구조를 보여줍니다. 몇 가지에 대해 알아보도록 하겠습니다. 1) 플래터 플래터는 표면의 자성체와 자기를 이용해 0과 1의 데이터를 저장합니다. 2) 섹터와 블록 섹터는 하드 디스크의 가장 작은 저장 단위입니다. 하나의 섹터에는 한 덩어리의 데이터가 저장되고 이들이 모여 플래터가 됩니다. 블록은 논리적인 개념에서의 가장 작은 단위입니다. 하드디스크와 컴퓨터 사이에 데이터를 전송하는 단위이고 메모리에서는 블록마다 주소가 배정됩니다. 정리하면 하드 디스크 입장에서는 섹터가 가장 작은 저장 단위이..
[운영체제(OS)] 입출력 시스템 개요
2022. 3. 8. 21:36
CS/운영체제
0.🚶들어가며 이번 글에서는 입출력 시스템의 개요를 소개해보려 합니다. 입출력 장치는 무엇이 있는지, 컴퓨터 주변 장치는 무엇인지, 주변장치와 필수 장치 사이의 통신은 어떻게 이루어지는지 등에 대해 알아보도록 하겠습니다. 1.💽주변장치에 대하여 컴퓨터는 필수 장치인 CPU와 메모리, 주변장치인 입출력 장치와 저장장치로 구성됩니다. 또한 각 장치는 메인보드에 있는 버스로 연결되죠. 오늘 알아볼 내용은 대부분 주변장치에 대한 이야기입니다. 주변장치는 데이터 전송 속도에 따라 아래 두 가지로 구분됩니다. 1) 저속 주변장치 메모리와 주변장치 사이에 오고 가는 데이터 양이 적어 데이터 전송률이 낮은 장치입니다. 키보드가 대표적인 예입니다. 2) 고속 주변장치 메모리와 주변장치 사이에 오고 가는 데이터 양이 많아..
[운영체제(OS)] 가상 메모리 - (5) 스레싱과 프레임 할당
2022. 3. 3. 03:14
CS/운영체제
0.🚶들어가며 이전 글에서 페이지 교체 알고리즘에 대해 알아보았습니다. 이번 글에서는 스레싱이 무엇인지, 프로세스에게 프레임 할당하는 방식은 어떤 것이 있는지에 대해 알아보도록 하겠습니다. 1.📖스레싱 가상 메모리 시스템에서는 프로세스들이 프레임을 할당받습니다. 만약 많은 수의 프로세스들이 실행 중이라 각각 프로세스들에게 충분한 수의 프레임을 할당하지 못한다면 어떻게 될까요? 페이지 부재가 많이 발생하여 계속해 스왑 영역을 다녀오는 상황이 생길 것입니다. 이런 상황이 벌어지면 하드디스크 입출력이 너무 잦아져 작업이 멈춘 것 같은 상태가 되어버립니다. 이를 스레싱이라고 합니다. 스레싱은 메모리의 크기가 일정할 경우 멀티프로그래밍 정도에 밀접한 관계가 있습니다. 멀티 프로그래밍 정도가 너무 높으면 스레싱이 ..
[운영체제(OS)] 가상 메모리 - (4) 페이지 교체 알고리즘
2022. 3. 3. 01:08
CS/운영체제
0.🚶들어가며 [운영체제(OS)] 가상 메모리 - (3) 요구 페이징(Demand Paging) 0.🚶들어가며 지난 글들에서 살펴보았던 페이징과 세그멘테이션 기법은 MMU의 역할 중 배치(Placement)에 대한 내용이었습니다. 이번 글에서는 가져오기(Fetch) 정책에 대한 내용을 다뤄보도록 하겠 kjhoon0330.tistory.com 지난 글에서는 요구 페이징, 페이지 부재, 지역성 등에 대한 개념을 살펴보았습니다. 이번 글에서는 페이지 부재를 최소화하기 위해서 사용하는 페이지 교체 알고리즘의 개념과 종류를 알아보도록 하겠습니다. 1.📖페이지 교체 알고리즘이란? 프로세스가 요구한 페이지가 메모리에 없을 경우 페이지 부재가 발생합니다. 만약 메모리까지 꽉 차있는 상황이라면 대상 페이지를 정하고 이를..
[운영체제(OS)] 가상 메모리 - (3) 요구 페이징(Demand Paging)
2022. 3. 2. 21:22
CS/운영체제
0.🚶들어가며 지난 글들에서 살펴보았던 페이징과 세그멘테이션 기법은 MMU의 역할 중 배치(Placement)에 대한 내용이었습니다. 이번 글에서는 가져오기(Fetch) 정책에 대한 내용을 다뤄보도록 하겠습니다. 1.📖Demand Paging (요구 페이징)이란? 이전 글에서도 살펴보았듯 프로세스는 자신이 필요한 모든 데이터를 메모리 위에 올려두지 않는 경우가 많습니다. 가상 메모리 시스템을 사용하여 메모리와 스왑 영역을 가지고 작업을 진행시키죠. 이러한 방식으로 얻을 수 있는 장점들에 대해서는 아래 글에서 다루어 보았습니다. [운영체제(OS)] 가상 메모리 - (1) 가상 메모리와 페이징 기법 0.🚶들어가며 이번 글에서는 가상 메모리가 무엇인지에 대해 알아보고 가상 메모리를 구현하는 방법 중 하나인 페..
[운영체제(OS)] 가상 메모리 - (2) 세그멘테이션 기법과 세그멘테이션-페이징 혼용 기법
2022. 3. 1. 18:20
CS/운영체제
0.🚶들어가며 지난 글에서 가상 메모리와 페이징 기법에 대해 알아보았습니다. 이번 시간에는 세그멘테이션 기법과 세그멘테이션-페이징 혼용 기법에 대해 알아보도록 하겠습니다. 1.📖세그멘테이션 기법 세그멘테이션 기법은 가변 분할 방식을 이용한 가상 메모리 관리 기법으로, 물리 메모리를 프로세스 크기에 따라 가변적으로 나누어 사용합니다. 세그멘테이션 기법의 구현과 주소 변환은 어떤 방식으로 이루어지는지 알아보겠습니다. 1) 세그멘테이션 기법 구현 위 사진은 세그멘테이션 기법과 세그멘테이션 테이블에 대해 보여주고 있습니다. 세그멘테이션 테이블에는 limit 값과 address 값이 존재합니다. address값은 페이징 테이블의 프레임과 비슷한 개념입니다. 페이징 테이블에는 없었던 limit 값은 세그먼트가 메..
[운영체제(OS)] 가상 메모리 - (1) 가상 메모리와 페이징 기법
2022. 3. 1. 18:19
CS/운영체제
0.🚶들어가며 이번 글에서는 가상 메모리가 무엇인지에 대해 알아보고 가상 메모리를 구현하는 방법 중 하나인 페이징 기법에 대해 알아보도록 하겠습니다. 1.💻가상 메모리..? 컴퓨터마다 메인 메모리(물리 메모리)의 크기가 다릅니다. 그렇다면 크기가 3GB인 프로세스를 2GB의 메모리만 가지고 있는 컴퓨터에서 실행하고 싶을 때는 어떻게 해야 할까요? 크기가 다른 물리 메모리에서도 일관되게 프로세스를 실행할 수 있게 도와주는 것이 바로 가상 메모리 기술입니다. 물리 메모리의 크기와 상관없이 메모리를 이용할 수 있도록 지원해주는 기술이죠. 가상 메모리 기술 덕분에 프로그래머는 물리 메모리 크기에 구애받지 않고 편하게 프로그램을 만들 수 있게 되었습니다. 현대 메모리 관리의 가장 큰 특징은 물리 메모리의 크기와 ..