- [ 학습기록/CS 공부 ][OS] 가상 메모리 (페이지 부재/페이지 교체/스레싱/워킹셋)2024-02-09 21:04:57create the illustion to users of a very large (main) memory 가상 메모리는 실제 물리적인 메모리보다 큰 용량의 메모리 공간을 제공하는 기술이다. 프로그램이 필요로 하는 데이터를 일부만 물리적 메모리에 로드하고, 나머지는 디스크 공간에 저장한다. 그리고 프로그램이 해당 데이터에 접근할 때만 필요한 부분을 메모리로 옮겨 사용한다. 이를 통해 더 많은 프로그램을 실행할 수 있고, 메모리를 보다 효율적으로 사용할 수 있다. 가상 메모리는 주로 페이징 기법을 사용하여 메모리 용량을 초과하는 프로그램의 데이터를 디스크에 저장하고, 필요할 때마다 가져온다. 그러나 모든 페이지를 메모리에 동시에 유지할 수 없기 때문에 페이지 교체 알고리즘이 필요하다. 페이지 교체 알고리즘..
- [ 학습기록/CS 공부 ][OS] 메모리 관리 2편 (연속 할당/불연속 할당)2024-02-09 01:35:34메모리 관리 메모리 배치 메모리 배치는 시스템의 성능을 향상시키고 자원을 효율적으로 활용하는 데 중요한 역할을 한다. 올바른 메모리 배치는 프로세스 간의 메모리 접근을 최적화하여 프로그램 실행 속도를 향상시킨다. 이는 메모리의 인접한 위치에 있는 데이터 및 명령어에 빠르게 접근할 수 있게 함으로써 프로그램의 실행 효율성을 높인다. 또한, 메모리 공간을 효율적으로 활용하여 메모리 공간 낭비를 최소화한다. 이는 메모리 단편화*를 방지하여 더 많은 프로세스를 동시에 실행할 수 있도록 돕는다. *단편화 (fragmentation) : 메모리가 여러 조각으로 나누어져 메모리를 효율적으로 사용하지 못하는 상황 메모리는 크게 운영체제와 사용자 프로세스가 사용하는 영역으로 나뉜다. os 상주 영역은 운영체제 커널과 시..
- [ 학습기록/CS 공부 ][OS] 메모리 관리 1편 (주소 바인딩/메모리 로드)2024-02-07 23:35:36메모리는 프로그램이 실행될 때 필요한 데이터를 일시적으로 저장하는 공간이다. 운영체제는 이러한 메모리를 효율적으로 활용하여 다음과 같은 작업을 수행한다. 프로세스를 실행하기 위해 필요한 메모리를 할당하고 해제한다. 여러 프로세스가 동시에 실행될 때 메모리를 적절히 분배하여 각 프로세스가 충돌 없이 실행될 수 있도록 한다. 가상 메모리를 활용하여 물리적 메모리의 한계를 극복한다. 이를 통해 더 많은 프로세스를 동시에 실행할 수 있다. 메모리 관리 It determines how memory is allocated among competing processes, deciding which gets memory, when they receive it, and how much they are allowed. 메..
- [ 학습기록/CS 공부 ][DB] 트랜잭션 (ACID/격리 수준)2024-02-05 03:09:44트랜잭션이란? 트랜잭션은 작업의 단위를 의미한다. 트랜잭션은 일관적이어야 하며 다른 트랜잭션에 고립적이어야 한다. 시스템 장애가 발생해도 올바르게 복구하여 데이터베이스의 일관성을 유지해야 한다. 데이터베이스에 동시에 접근하는 프로그램들을 격리시켜야 한다. 트랜잭션은 논리적인 작업의 단위로, 다수의 연산(쿼리)으로 구성될 수 있다. ACID 트랜잭션은 완전히 반영되거나 아예 반영되지 않아야 하고 (원자성) 기존 제약조건을 변경하지 않아야 하며 (일관성) 다른 트랜잭션에 영향을 미치지 않아야 한다. (고립성) 그리고 한 번 변경된 사항은 영구적으로 유지되어야 한다. (지속성) ACID 속성을 보장하기 위해서는 강력한 로깅 시스템이 트랜잭션을 적절하게 처리할 수 있어야 한다. atomicity 트랜잭션 내의 ..
- [ 학습기록/CS 공부 ][DB] 인덱스 (clustered/secondary)2024-02-04 03:14:49clustered Index (primary)클러스터형 인덱스는 데이터베이스를 정렬하여 인덱스의 순서와 일치하도록 만든다. 물리적인 저장 순서를 변경하기 때문에 하나의 테이블에는 하나의 클러스터형 인덱스만 존재할 수 있다.⭐ 클러스터형 인덱스는 물리적인 레코드 순서를 정렬한다!InnoDB에서 클러스터형 인덱스는 기본키를 의미한다. InnoDB는 기본키를 기준으로 테이블을 정렬하여 쿼리 속도를 향상시키는데, 이는 클러스터형 인덱스를 변경하는 데 비용이 많이 들기 때문이다.🚨 클러스터형 인덱스는 테이블을 정렬하기 때문에 자주 수정되는 값을 클러스터형 인덱스로 설정하면 테이블이 계속 정렬된다. secondary Index (non-clustered)보조 인덱스는 비클러스터형 인덱스다. 클러스터형 인덱스와 달리..
- [ 학습기록/CS 공부 ][DB] 인덱스 (B 트리)2024-02-04 00:39:39인덱스란? 인덱스는 책의 목차와 유사하다. 책을 읽을 때 목차를 이용하면 원하는 내용을 빠르게 찾아 읽을 수 있다. 마찬가지로 테이블도 인덱스를 이용하여 원하는 데이터를 빠르게 조회할 수 있다. 데이터베이스에서 인덱스는 테이블에 대한 검색 속도를 높여주는 자료 구조를 의미한다. 특정 컬럼에 인덱스를 생성하면 전체 테이블을 스캔 (full scan) 하는 대신 인덱스를 참조하여 원하는 결과를 빠르게 조회할 수 있다. B 트리 인덱스는 데이터를 미리 정렬하여 검색 연산의 성능을 향상시킨다. 트리 알고리즘은 검색 및 정렬 연산에서 효과적인 자료 구조이므로 인덱스는 트리를 사용하여 구현된다. 💡 균형 잡힌 이진 트리의 경우 O(log n)의 시간 복잡도를 갖는다. 인덱스는 주로 B 트리로 구현되는데, B 트리는..