- [ 학습기록/CS 공부 ][DB/쉬운코드] MVCC2024-05-13 17:10:19MVCC; multiversion concurrency controllock 기반의 동시성 제어는 같은 데이터를 read 하는 경우는 허용하지만, 그 외의 경우는 모두 허용하지 않는다. 이는 동시에 실행될 수 있는 트랜잭션을 제한하여 성능 저하를 유발한다. 반면, MVCC는 같은 자원에 대해 write 하는 경우만 허용하지 않는다. MVCC는 특정 시점을 기준으로 가장 최근에 commit된 데이터를 읽는다. 특정 시점은 isolation level에 따라 달라진다. MVCC는 데이터의 변화 이력을 관리해야 하므로 추가적인 저장 공간이 필요하다. isolation level🚨 MVCC는 commit된 데이터를 읽으므로 read uncommitted level은 MVCC가 적용되지 않는다.read commi..
- [ 학습기록/CS 공부 ][DB/쉬운코드] 트랜잭션과 동시성 제어 (ACID/이상 현상)2024-05-03 17:06:02트랜잭션J가 H에게 20만원을 이체하는 상황을 SQL문으로 작성해보면 위와 같다. 이체 작업은 두 SQL문이 모두 성공해야만 성공한다. 즉, 하나라도 실패해서는 안된다. 트랜잭션은 하나의 논리적인 작업 단위를 의미한다. 즉, 논리적인 이유로 여러 SQL문을 단일 작업으로 묶어서 처리해야 하는 것을 의미한다. 위 이체 작업을 트랜잭션으로 처리하면 일부만 성공해서 DB에 반영되는 일이 일어나지 않는다.START TRANSACTION; /* 트랜잭션의 시작 (= AUTOCOMMIT 비활성화) */UPDATE account SET balance = balance - 200000 WHERE id = 'J';UPDATE account SET balance = balance + 200000 WHERE id = 'H'..
- [ 학습기록/CS 공부 ][DB/쉬운코드] stored program2024-05-02 22:00:20stored programstored program은 데이터베이스 내부에 저장되어 있는 프로그램을 의미한다.functionproceduretriggerstored program은 데이터베이스에서 직접 실행하기 때문에 서버와 데이터베이스 간의 네트워크 트래픽을 줄여준다는 장점이 있다. stored functionstored function은 사용자가 정의한 함수로, 연산 후 하나의 값을 반환한다. stored function을 정의하기 위해서는 `CREATE FUNCTION`문을 사용한다.CREATE FUNCTION func_name(param1, param2) RETURN data_type [characteristics] BEGIN /* function body */ END🚨 `func_na..
- [ 학습기록/CS 공부 ][DB/쉬운코드] 데이터베이스 (모델/스키마/relation)2024-05-02 17:12:20데이터베이스데이터베이스는 전자적으로 (electronically) 저장•사용되는 관련있는 데이터 (related) 들의 조직화된 집합이다. 같은 목적으로 사용되는 데이터들을 조직적으로 관리하여 데이터를 빠르게 검색하고, 불필요한 데이터가 중복으로 저장되는 것을 방지하여 데이터 불일치 문제를 예방한다. DBMS : 사용자에게 데이터베이스를 정의/생성/관리하는 기능을 제공하는 소프트웨어 시스템ex. PostgreSQL, MySQL, Oracle, MSSQL 등메타데이터 : 데이터베이스를 정의하거나 기술하는 부가적인 데이터ex. 데이터 유형, 구조, 제약 사항, 보안, 인덱스, 사용자 그룹 등데이터베이스 시스템 = 데이터베이스 + DBMS + 연관된 어플리케이션 데이터 모델데이터 모델은 DB 구조*를 추상화할..
- [ 학습기록/CS 공부 ][OS/공룡책] Part 4. Memory Management2024-04-30 22:03:46keep many processes in memory simultaneously to allow multiprogramming 메인 메모리메모리는 고유의 주소를 갖는 바이트의 배열이다. 각 코어에 들어있는 레지스터와 메인 메모리는 CPU가 직접 접근할 수 있는 유일한 스토리지다. CPU는 PC값에 해당하는 메모리 주소에서 명령어를 가져와 실행하는데, 만약 데이터가 메모리에 없다면 실행 전에 메모리에 적재해야 한다. 메모리 보호we must protect the operating system from access by user processes.우리는 사용자 프로세스로부터 운영체제를 보호해야 한다. 이는 base 레지스터와 limit 레지스터를 이용하여 구현할 수 있다.base 레지스터 : 물리적 메모리의..
- [ 학습기록/CS 공부 ][OS/공룡책] Part 3. Process Synchronization2024-04-27 01:44:58Concurrent access to shared data my result in data inconsistency. 동기화 방법프로세스들은 동시에 실행되거나 서로 다른 코어에서 병렬적으로 실행될 수 있다. 공유 자원에 여러 개의 프로세스가 동시에 접근하는 상황을 경쟁 상태라고 부르는데, 이는 공유 데이터의 무결성을 해칠 수 있다. 따라서 한 번에 하나의 프로세스만 공유 데이터를 조작하도록 접근 순서를 제어해야 한다. (동기화)⭐ 경쟁 상태두 개 이상의 프로세스가 공유 자원에 동시에 접근할 때, 공유 자원에 대한 접근 순서에 따라 그 실행 결과가 달라지는 상황 The Critical-Section Problem임계구역은 다른 프로세스와 공유하는 코드의 일부분을 의미하며, 다음 구조를 갖는다.entry-s..
- [ 학습기록/CS 공부 ][OS/공룡책] Part 2. Process Management2024-04-23 03:20:00One of the most important aspects of an operating system is how it schedules threads onto available processing cores.프로세스A process is a program in execution.프로세스는 실행 중인 프로그램을 의미한다. 프로세스의 활동 상태는 프로그램 카운터와 레지스터의 내용으로 알 수 있다...
- [ 학습기록/CS 공부 ][OS/공룡책] Part 1. Overview2024-04-21 15:50:49운영체제An operating system acts as an intermediary between the user of a computer and the computer hardware.운영체제는 컴퓨터 시스템을 운영하는 소프트웨어로, 컴퓨터 하드웨어를 관리하고 어플리케이션의 실행 환경을 제공한다. 컴퓨터 시스템은 다음 네 가지 요소로 구성되어 있다. 운영체제의 핵심 역할은 프로그램에 필요한 자원을 할당하는 것이다...