💻Computer Science

InnoDB 엔진 기준으로 작성된 글 입니다. 클러스터링 인덱스 MySQL 은 물리적으로 데이터를 저장함에 있어 두 가지 특징이 있다.비슷한 PK 를 가진 데이터는 같은 페이지에 저장된다. 즉, PK 가 데이터 저장 위치를 결정한다. 예를 들면, 그림에서 emp_no 가 PK 일 때, PK 4번 5번은 페이지 번호 9에 같이 저장되어 있고, PK 11 12번은 페이지 번호 10에 저장되어 있다.페이지 안의 데이터는 정렬되어 저장되어 있다. 예를 들면, 그림에서 페이지 번호 안의 데이터는 PK 를 기준으로 오름차순 정렬되어 있다.이 때, PK 가 비슷한 데이터끼리 물리적으로 저장된다는 이유 때문에 PK 를 `클러스터링 인덱스` 라고 부른다.  인덱스에 대한 오해?여기서 짚고 넘어가야할 점이 있다. 흔히 C..
MySQL 서버MySQL 서버는 크게 `MySQL 엔진` 과 `스토리지 엔진` 으로 나뉜다. MySQL 엔진이 사람의 머리 역할을 하고 스트로지 엔진은 손발 역할을 하는데 구성 요소는 다음과 같다. MySQL 엔진클라이언트 접속 및 쿼리 요청을 처리하는 `커넥션 핸들러`, `SQL 파서 및 전처리기`, `옵티마이저` 가 해당된다.스토리지 엔진실제 데이터를 디스크 스토리지에 저장하거나 디스크 스토리지로부터 데이터를 읽어오는 부분이다. MySQL 엔진은 하나지만 스트리지 엔진은 여러 개 동시 사용 가능하다. MySQL 엔진은 `핸들러 API` 를 통해 스토리지 엔진에 읽기 쓰기 요청을 하는데, 그렇게 되면 스토리지 엔진의 `핸들러` 가 실제 액션을 실행한다.MySQL 스레딩 구조MySQL 서버는 프로세스 기..
Websocket 이 필요한 이유 Historically, creating web applications that need bidirectional communication between a client and a server (e.g., instant messaging and gaming applications) has required an abuse of HTTP to poll the server for updates while sending upstream notifications as distinct HTTP calls [RFC6202]. This results in a variety of problems: o The server is forced to use a number of differen..
참고 https://gyoogle.dev/blog/computer-science/data-structure/B%20Tree%20&%20B+%20Tree.html https://8iggy.tistory.com/191 https://algopoolja.tistory.com/122 https://code-lab1.tistory.com/217 B-Tree 와 B+Tree 의 차이점 B-Tree 와 B+Tree 는 더 효율적이게 원하는 데이터를 탐색할 수 있는 자료구조의 일종 으로 주로 데이터베이스의 인덱스를 사용할 때 쓰이는 알고리즘입니다. 이번 포스팅에서는 B-Tree 와 그것의 변 algopoolja.tistory.com B- tree B-tree는 Binary 가 아니라 Balanced 다. 이전의 Bin..
Page Fault 처리 루틴 CPU 가 논리적 주소를 물리적 주소로 변환시키기 위해 페이지 테이블을 참조했지만 invalid bit 가 설정되어 있다면 다음과 같이 행동하게 된다. CPU 가 페이지 테이블을 참조한다. 하지만 invalid bit 이 설정되어 있다. trap 를 발생시켜 디스크 IO 를 실행시킨다. 이때 OS 는 해당 프로세스를 block 상태로 바꾼다. 디스크 IO 가 끝나기 전까지는 다른 프로세스가 CPU 를 차지한다. OS의 권한으로 디스크 IO를 실행시킨다. 메모리에 적재를 한다. valid bit 으로 바꿔준다. block 한 프로세스를 ready 큐에 넣어주고 다시 실행시킨다.페이지 교체 알고리즘 어떠한 페이지를 교체 아웃시킬 것인가에 대한 알고리즘 최적 페이지 교체 선입선출..
반효경 교수님 운영체제 강의와 도서를 정리한 내용입니다. 주소 바인딩 CPU 는 소스 코드를 읽어낼 때 physical address 가 아닌 virtual address 를 읽고 있다. 이러한 상황에서 메모리를 접근해야 한다면 physical address 가 필요해진다. 이렇게 논리적 메모리 주소를 물리적 메모리 주소로 바꿔주는 것을 Address Binding 이라고 부른다. 주소 바인딩은 물리적 메모리 주소가 결정되는 시기에 따라 세가지로 분류된다. 컴파일 타임 바인딩 코드를 컴파일할 때 물리적 메모리 주소가 정해진다. 만약에 다른 물리적 메모리 주소를 사용하고 싶다면 다시 컴파일해야 하므로 잘 사용하지 않는 기법이다. 로드 타임 바인딩 프로그램의 실행이 시작될 때에 물리적 메모리 주소가 결정된다..
반효경 교수님 운영체제 강의와 도서를 정리한 내용입니다. 데드락이란 일련의 프로세스들이 서로가 가진 자원을 기다리며 block 된 상태 이때의 자원은 IO 디바이스, CPU, 메모리, 세마포어 등이 될 수 있다. 데드락의 4가지 조건 데드락은 4가지 조건을 만족해야 성립된다. mutual exclusion (상호 배제) : 매 순간 하나의 프로세스만이 자원을 사용할 수 있다. no preemption (비선점) : 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않는다. 생각해보면 선점이 가능하다면 그대로 빼앗아 쓰면 되기 때문에 데드락이 생기지 않는다. hold and wait (보유 대기) : 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있는다. circul..
OS 동기화 Race condition (자원 경쟁) 두 개의 프로세스가 하나의 자원에 대해 동시에 접근하는 상태 예시1. kernel 수행 중 인터럽트 발생 kernel 모드가 실행중인데 인터럽트가 들어왔다. (예를 들면, 타이머 인터럽트) 인터럽트 또한 OS가 주도권을 갖고 있는 상황이기 때문에 kernel mode이며 이전에 실행되던 프로세스와 같은 주소공간을 공유하고 있다. 이에 따라 공유된 data 를 가지고 경쟁하게 되는 상황이 된다. 예시2. process가 system call를 하여 kernel mode로 수행 중인데 인터럽트 당하여 context switch 가 일어나고 다시 kernel mode로 들어가는 경우 모든 프로세스는 kernel mode에서 다같은 공유 데이터 공간을 쓰기 ..
_ KOCW 반효경 교수님 운영체제 강의와 도서를 정리한 내용입니다._ CPU 스케줄링이 필요한 이유? CPU 버스트 시간은 사용자 프로그램이 CPU를 직접 이용하여 명령을 수행하는 시간을 의미한다. x축이 CPU 버스트 시간이고 y축이 빈도인 그래프를 살펴보면, 왼쪽은 CPU 버스트 시간이 짧은 작업 (입출력 요청 후 바로 다른 CPU로 전환)인 IO 바운드 프로세스이며, 오른쪽은 CPU 점유 시간이 긴 CPU 바운드 프로세스이다. 만약 모든 프로세스가 동일하다면 수행하는 작업에 따라 응답 시간의 차이는 없을 것이다. 하지만 위 그래프처럼 CPU 점유 시간이 긴 프로세스와 짧은 프로세스가 존재하기에, CPU 버스트 시간이 짧은 프로세스에게 우선적으로 CPU를 할당할 수 있는 스케줄링이 필요하다. (이렇..
KOCW 반효경 교수님 운영체제 강의와 도서를 정리한 내용입니다. 프로그램 구조 메모리 주소 영역은 크게 code, data, stack 세 가지로 구분된다. 코드 영역은 기계어 instruction이 보관되는 공간이다. 데이터 영역에는 프로그램이 사용하는 데이터, 예를 들면 전역 변수 등이 저장되어 있다. 스택 영역은 함수 호출 시 해당 함수가 실행을 완료하고 돌아갈 주소와 데이터를 임시로 보관하는 곳이다. (참고로, 스택에는 스레드 정보도 저장될 수 있다.) 스택(Stack) vs 프로세스 제어 블록(PCB) ? 스택도 프로세스 제어 블록(PCB)과 비슷한 역할을 수행한다. 두 개념의 차이점은 어떤 상황에서 호출되느냐에 있다. 프로그램 내에서 발생하는 일반 함수 호출의 경우, 복귀 주소가 스택에저장된..
kkyu0718
'💻Computer Science' 카테고리의 글 목록