가상 메모리란? 다중 프로그래밍을 실현하기 위해서는 많은 프로세스들을 동시에 메모리에 올려두어야 한다. 가상메모리는 프로세스 전체가 메모리 내에 올라오지 않더라고 실행이 가능하도록 하는 기법이며, 프로그램이 물리 메모리보다 커도 된다는 주요 장점이 있다. 가상 메모리 개발 배경 실행되는 코드의 전부를 물리 메모리에 존재시켜야 했고, 메모리 용량보다 큰 프로그램은 실행시킬 수 없었다. 또한, 여러 프로그램을 동시에 메모리에 올리기에는 용량의 한계와 페이지 교체 등의 성능 이슈가 발생하게 된다. 또한, 가끔만 사용되는 코드가 차지하는 메모리들을 확인할 수 있다는 점에서, 불필요하게 전체의 프로그램이 메모리에 올라와 있어야 하는 게 아니라는 것을 알 수 있다. 프로그램의 일부분만 메모리에 올릴 수 있다면 물리..
메모리 관리 전략이란? 메모리 용량이 이전보다 증가하고 있지만 프로그램의 크기 또한 계속 증가하고 있기 때문에 메모리는 언제나 부족한 상황이다. 이러한 상황에서 제한된 물리 메모리의 효율적인 사용과 메모리 참조 방식을 제공하기 위한 전략을 메모리 관리 전략이라고 한다. 메모리 관리 배경 각각의 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있다. 단지, 운영체제만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않는다. Swapping 메모리의 관리를 위해 사용되는 기법. 표준 Swapping 방식으로는 Round Robin과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장..
트랜잭션이란? 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트랜잭션의 특징 1. 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다. 2. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다. 3. 하나의 트랜잭션은 Commit되거나 Rollback된다. 트랜잭션의 성질(ACID) 1. Atomicity(원자성) 1. 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다. 2. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 ..
뷰(View)란 무엇인가? 1. 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블이다. 2. 뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주된다. 3. 뷰는 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도로 활용된다. 4. 뷰는 조인문의 사용 최소화로 사용상의 편의성을 최대화 한다. 뷰(View)의 특징 1. 뷰는 기본테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같다. 2. 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다. 3. 데이터의 논리적 독립성을 제공할 수 있다. 4. 필요한 데이터만 뷰로 정의해서 처리..
인덱스(Index)란? 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조라고 한다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다. 이렇게 인덱스가 생성하였다면 앞으로 쿼리문에 "인덱스 생성 컬럼을 WHERE 조건으로 거는 등"의 작업을 하면 *옵티마이저에서 판단하여 생성된 인덱스를 탈 수가 있다. 만약 인덱스를 타게 되면 아래의 그림과 같이 인덱스를 타게 되고 먼저 인덱스에 저장되어 있는 데이터의 물리적 주소로 가서 데이터를 가져오는 식으로 동작을 하여 검색 속도의 향상을 가져올 수 있다. 또한 인덱스 생성 시 데이터를 오름차순으로 정렬하기 때문에 정렬된 주소체계라고 표현할 수 있다. (아래 그림을 보..
💡 정규화에 대해 설명해주세요. 더보기 정규화는 데이터 무결성을 유지하기 위해 잘 정의 된 방식으로 테이블을 분할하여 데이터베이스에서 중복 데이터를 제거하는 프로세스입니다. 💡 비정규화에 대해 설명해주세요. 더보기 비정규화는 복잡한 쿼리 속도를 높이고 성능을 향상시키기 위해 테이블에 중복 데이터를 추가하는 프로세스입니다. 💡 정규화의 장점과 단점을 설명하세요. 더보기 장점 데이터베이스 변경 시 이상 현상을 제거하며 데이터베이스 구조 확장시 재디자인을 최소화 할 수 있습니다. 단점 릴레이션 분해로 인하여 릴레이션간의 연산이 많아집니다. 이로 인해 응답 시간이 느려질 수 있습니다. 💡 정규화를 하는 이유? 더보기 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지하기 위해서 각 릴레이션에 중복된 종속성을..
1. 정규화(Normalization) [ 정규화(Normalization)이란? ] 정규화(Normalization)의 기본 목표는 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. [ 제1 정규화 ] 제1 정규화란 테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것이다. 규칙 1. 각 컬럼이 하나의 속성만을 가져야 한다. 2. 하나의 컬럼은 같은 종류나 타입(type)의 값을 가져야 한다. 3. 각 컬럼이 유일한(unique) 이름을 가져야 한다. 4. 칼럼의 순서가 상관없어야 한다. 위의 테이블에서 추신수와 박세리는 여러 개의 취미를..
💡 데드락에 대해 설명해주세요. 더보기 데드락이란, 시스템 자원에 대한 요구가 뒤엉킨 상태입니다. 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 말합니다. 💡 데드락의 발생조건은 무엇이 있나요? 더보기 상호 배제 한 번에 프로세스 하나만 해당 자원을 사용할 수 있다. 사용중인 자원을 다른 프로세스가 사용하려면 요청한 자원이 해제 될 때까지 기다려야 한다. 점유 대기 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다. 비선점 이미 할당된 자원을 강제로 빼앗을 수 없다. 순환 대기 대기 프로세스의 집합이 순환 형태로 자원을 대기하고 있어야 한다. 💡 데드락의 해결 방법은 무엇입니까? 더보기 1...
데드락(Deadlock, 교착 상태)이란? 📌데드락(Deadlock) 운영체제에서 데드락(교착상태)이란, 시스템 자원에 대한 요구가 뒤엉킨 상태입니다. 즉, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 일컫습니다. 👨💻 데드락(Deadlock)의 발생조건 데드락이 발생하기 위한 조건은 크게 4가지로 말할 수 있습니다. 상호 배제 한 번에 프로세스 하나만 해당 자원을 사용할 수 있다. 사용 중인 자원을 다른 프로세스가 사용하려면 요청한 자원이 해제될 때까지 기다려야 한다. 점유 대기 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다. 비선점 이미 할당된 자원을 강제로 빼앗을 수 없다(비선점..
동기(Synchronous)와 비동기(Asynchronous) 동기/비동기는 주로 어플리케이션에서 자주 다뤄지는 개념이며, 다음 작업이 요청되는 시간과 관련되어 있다. 동기(Synchronous) 현재 작업의 응답이 끝남과 동시에 다음 작업이 요청된다. 함수를 호출하는 곳에서 호출되는 함수가 결과를 반환할 때까지 기다린다. 작업 완료 여부를 계속해서 확인한다. 비동기(Asynchronous) 현재 작업의 응답이 끝나지 않은 상태에서 다음 작업이 요청된다. 함수를 호출하는 곳에서 결과를 기다리지 않고, 다른 함수(callback)에서 결과를 처리한다. 작업 완료 여부를 확인하지 않는다. 동기 예시 function run(a, b) { return a + b } const result = run(1, 2);..