캐시
·
👶🏻 CS/Operating System
캐시란?캐시(Cache)는 우리가 자주 접하는 데이터를 더 빠르게 가져오기 위해 미리 준비해 놓는 비서 같은 존재이다.예를 들어, 당신이 서재에서 책을 읽고 있는데, 같은 책을 몇 번씩 꺼내보고 싶어 한다고 하자.책을 서재 구석에서 매번 꺼내오는 것은 시간이 오래 걸리겠지만, 자주 보는 책을 책상 위에 준비해둔다면 훨씬 빨리 볼 수 있을 것이다. 이 책상 위의 책이 바로 캐시다. 운영체제도 비슷한 고민을 한다. CPU는 매우 빠르게 작동하는 반면, 메인 메모리나 디스크에서 데이터를 가져오는 데는 시간이 걸린다.그래서 운영체제는 자주 쓰이는 데이터를 캐시에 저장해 두어, 필요할 때 신속하게 사용할 수 있도록 한다.이로 인해 시스템 성능이 비약적으로 향상된다. 정리하자면, 캐시란 자주 사용하는 데이터나 값을..
트랜잭션 - ACID 원칙, Problem 3가지
·
👶🏻 CS/Database
트랜잭션(Transaction)이란트랜잭션은 데이터베이스에서 하나의 작업 단위를 의미한다. 예제은행에서의 계좌이체를 생각해 보자. 만약 한 계좌에서 다른 계좌로 1,000원을 이체하는 작업은 다음과 같은 단계로 나눌 수 있다.A 계좌에서 1,000원을 출금한다.B 계좌에 1,000원을 입금한다.계좌이체라는 행위를 출금, 입금이라는 두 작업으로 이루어진다.이 두 작업은 반드시 함께 수행되어 둘 다 성공하거나 둘 다 실패해야 한다. 만약 A 계좌에서 돈이 빠져나갔는데 B 계좌에 입금되지 않는다면, 데이터가 불일치하게 되어 문제가 발생할 것이다.이 과정을 동시에 묶는 방법이 바로 트랜잭션이다. 트랜잭션의 주요 특성 (ACID)트랜잭션은 데이터의 무결성을 보장하기 위해 ACID 특성을 만족해야 한다.ACID는..
Concurrent(동시성) vs Parallel(병렬성)
·
👶🏻 CS/Operating System
CPU와 코어CPU는 컴퓨터의 중심에서 명령어를 메모리에서 가져와 해석하고 실행하는 반도체 유닛이다.하나의 CPU는 여러 개의 코어를 가질 수 있으며, 이러한 코어들은 CPU가 동시에 여러 작업을 효율적으로 수행할 수 있도록 해준다. 컴퓨터 사양을 보면 "4코어 8스레드"라는 표현을 자주 볼 수 있다.4코어란 CPU에 물리적 코어가 4개 있다는 의미다. 각 코어는 독립적으로 작업을 수행할 수 있는 단위다.8스레드란 논리적 코어가 8개라는 의미다. 이는 하이퍼스레딩(Hyper-Threading) 기술 덕분에 하나의 물리적 코어가 동시에 2개의 스레드를 실행할 수 있다는 뜻이다.  하이퍼스레딩 (Hyper-Threading)하이퍼스레딩은 인텔(Intel)에서 개발한 기술로, 물리적 코어 하나가 두 개의 스레..
가상메모리와 페이지 교체 알고리즘
·
👶🏻 CS/Operating System
가상 메모리란메인 메모리의 크기는 한정되어 있기 때문에 물리적인 메모리의 크기보다 큰 프로세스는 어떻게 실행되는 걸까?가상 메모리란 실제 물리적 메모리(RAM) 보다 더 많은 메모리를 사용할 수 있도록 하는 메모리 관리 기법을 말한다.즉 가상 메모리는 물리적 메모리와 독립적 논리적 주소 공간을 분리해서 작은 메모리를 가지고 큰 가상주소 공간을 제공하는 것이다.가상 메모리는 필요한 부분만 메모리에 올림으로써 메모리에 올라가는 프로세스의 크기를 줄이는 요구 페이징 기법을 사용한다. 요구 페이징(Demand Paging)이란가상 메모리는 메모리를 고정된 크기로 나눠서 관리하며 이를 페이지라고 부른다.요구 페이징이란 프로그램이 실행될 때 모든 페이지를 처음부터 메모리에 적재하는 것이 아니라, 실제로 접근할 때만..
프로세스와 스레드
·
👶🏻 CS/Operating System
프로세스와 스레드란?프로그램프로그램은 윈도우의 .exe 파일이나 Mac의 .dmg 파일과 같은 컴퓨터에서 실행할 수 있는 파일을 통칭한다.,단 아직 실행되지 않은 상태의 코드 덩어리를 의미한다. 프로세스프로세스는 실행 중인 프로그램을 말한다, 모든 프로그램은주소 공간, 파일, 메모리 등 자원이 필요한데 운영체제로부터 이 자원을 할당받은 프로그램을 의미한다. 스레드스레드는 프로세스 내에서 동시에 진행되는 흐름의 단위이다. 과거에는 프로그램을 실행할 때 하나의 프로세스만 사용했다.예를 들어, 파일을 다운로드하면 다운로드가 끝날 때까지 다른 작업을 수행할 수 없었다.기술이 발전하며 프로그램이 점점 더 복잡해지면서 단일 프로세스로는 한계가 있었고, 여러 프로세스를 사용하면 메모리를 낭비하고 CPU 자원을 중복..
String Constant Pool, feat. Runtime Constant Pool
·
💻 Dev/Java
String str = "hello";String str2 = "hello";System.out.println(str == str2); // true위 코드에서 str == str2의 결과는 뭘까?동등성과 동일성을 배웠다면 false로 예상했겠지만 결과는 true다. "어라 자바에서 객체는 ==이 아니라 .equals()로 비교해야 문자열 비교가 되는 거 아니었나?"그 이유는 JVM이 String Pool을 사용하기 때문이다. String Constant Pool이란?우선 Contant Pool이란 클래스 내에 사용되는 상수들을 담아놓은공간이다.클래스 파일(.class)안에 테이블 형태로 들어가 있다. 이 Constant Pool에서 문자열 리터럴만을 별도로 관리하는 공간이 String Pool(Stri..