CS 12

[업무에 바로 쓰는 SQL 튜닝] 1장. MySQL과 MariaDB 개요

버전 확인 방법-1 show variables like 'version'; 결과값 버전 확인 방법-2 SELECT @@version; 결과값 1.1.1 부각 배경 MySQL은 상용 버전, 무료 버전이 있다 MariaDB는 완전한 오픈소스 소프트웨어 1.1.2 DB 엔진 영향력 U2L(Unix to Linux), U2C(Unix to Cloud) 흐름을 타고 오픈소스 데이터베이스로 마이그레이션이 주류를 이룬다. 1.2 상용 RDBMS와의 차이점 1.2.1 구조적 차이(MySQL, MariaDB 와 Oracle 간의 차이 중심) 기본적으로 데이터가 저장되는 스토리지 구조 측면에서 큰 차이 오라클DB는 통합된 스토리지 하나를 공유하여 사용하는 방식 (Shared everything) → 사용자가 어느 DB 서..

CS/DB 2023.12.02

메모리가 고갈된다면

프로세스들의 Swap이 활발해지면서(Page Fault 자주 일어남) CPU 사용률이 하락하게 되고, CPU가 놀고있는 것을 발견한 운영체제는 프로세스를 추가하게 되는 쓰레싱 현상이 발생한다. 쓰레싱이 해소되지 않을 경우, Out of Memory 상태로 판단되어 중요도가 낮은 프로세스를 찾아 강제로 종료하게 된다. 쓰래싱 해결 방법 Page Fault Frequency 알고리즘은 Page Fault 퍼센트의 상한과 하한을 두고 너무 자주 일어나면 메모리를 더 주고, 너무 덜 일어나면 메모리르 뻇는다.

CS/운영체제 2023.09.17

프로세스 상태 전이

Dispatch (ready -> running) 여러 프로세스들 중 한 프로세스를 선정하여 CPU에 할당하는 과정입니다. Interrupt (running -> ready) 할당된 CPU 시간이 지나면 Timeout Interrupt 가 발생하여 CPU를 다른 프로세스에게 양도하고 자신은 ready 상태로 전이되는 과정입니다. Block (running -> waiting) I/O 등의 자원 요청 후 즉시 할당받을 수 없어, 할당받을 때까지 기다리기 위해 running에서 waiting 상태로 전이되는 과정입니다. I/O 처리는 CPU가 아닌 I/O 프로세스가 담당하기 때문에 block이 발생합니다. Wakeup (waiting -> ready) 필요한 자원이 할당되면 프로세스는 waiting에서 re..

CS/운영체제 2023.09.16

프로세스 스케줄러

프로세스 스케줄링하기 위한 큐는 3가지이다. Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합, 메모리 할당을 대기중이다. Ready Queue : 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합, CPU 할당을 대기중이다. Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합, 입출력 장치 할당을 대기중이다. 프로세스가 시스템에 들어가면 이들은 잡 큐에 넣어진다. 잡큐는 시스템에서 모든 프로세스들이 존재하는 곳이다. 메인메모리에 거주하는 프로세스들은 레디 큐라고 불리우는 리스트에서 실행되기를 기다리고 대기를 한다. 스케줄러의 종류도 3가지이다. 장기 스케줄러 - 어떤 프로세스를 ready queue에 보낼지 메모리는 한정되어..

CS/운영체제 2023.09.15

멀티 쓰레드 vs 멀티 프로세스

장점 프로세스보다 메모리 공간과 시스템 자원 소모가 줄어든다. Heap 영역을 통해서 통신을 할 수 있다.(프로세스는 IPC) context switch는 프로세스 context switch 와 달리 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다. 쓰레드는 공유하는 영역이 많기 때문에 컨텍스트 스위칭이 빠르다. 캐쉬는 CPU와 메인메모리 사이에 위치하며 CPU에서 한번 이상 읽어들인 메모리의 데이터를 저장하고 있다가, CPU가 다시 그 메모리에 저장된 데이터를 요구할 때, 메인메모리를 통하지 않고 데이터를 전달해 주는 용도이다. 프로세스 컨텍스트 스위칭이 일어났을 경우, 공유하는 데이터가 없으므로 캐쉬가 지금껏 쌓아놓은 데이터들이 무너지고 새로 캐쉬정보를 쌓아야 한다. 이것이 프로세스 컨텍스트 스위칭..

CS/운영체제 2023.09.14

Context Switching

Context Switching 프로세스의 상태 정보를 저장하고 복원하는 일련의 과정 프로세스는 CPU를 할당받아 작업을 하다가 프로세스 전환(context switching)이 발생하면 진행하던 작업을 저장하고 CPU를 반환한다. 이 때 작업의 진행상황을 모두 PCB에 저장한다. 다시 할당받으면 PCB에 있는 것을 불러와서 다시 작업을 진행한다. 보통 인터럽트가 발생하거나, 실행 중인 CPU 사용 허가시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우에 Context Switching이 발생 저장되는 정보 프로세스 식별자(Process ID, PID) : 프로세스 식별번호 프로세스 상태 : new, ready, running, waiting, terminated 등의 상태를 저장 프로그램 카운터..

CS/운영체제 2023.09.13

프로세스와 쓰레드의 차이

프로세스 정의 : 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다. code data stack heap을 모두 따로 할당받는다. data - 전역 변수 stack - 함수의 매개변수, 복귀주소와 같은 임시자료 heap - 동적할당 메모리 프로세스 제어 블록(Process Control Block, PCB) 정의 : PCB는 특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조이다. 생성 : 프로세스의 생성과 동시에 고유한 PCB를 생성한다. 존재 이유 : context swtich를 위해 관리 : 링크드 리스트로 관리. 프로세스 생성 과정 PCB가 생성되며 OS가 실행한 프로그램의 코드를 읽어들여 프로세스에 할당된 메모리의 T..

CS/운영체제 2023.09.12

운영체제란?

💡 운영체제 운영체제란? 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 운영 체제의 목적 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 컴퓨터 시스템의 자원을 효율적으로 관리한다. CPU, 메모리, I/O 장치 등의 효율적 관리 💡 커널이란? 커널은 운영 체제와 하드웨어 간의 인터페이스 역할을하며, 다음 4가지 기능을 수행한다. 메모리 관리 : 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적한다. 프로세스 관리 : 어느 프로세스가 CPU를 얼마나 오랫동안 사용할지를 결정한다. 장치 드라이버 : 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할을 수행한다. 시스템 호출 및 보안 : 프로세스의 서비스 요청을 수신한다. 커널은..

CS/운영체제 2023.09.11

시간 기준 변경 (LocalTimeZone → UTC)

현재 우리 서비스는 LocalTimeZone을 사용하고 있는데 UTC 표준을 사용하기로 하고 해당 구현을 변경하고자 한다. 이유를 다음 3가지다. 물론 우리 서비스가 글로벌 서비스는 아니지만 시간 표준을 맞출 필요가 있었다. AWS 서비스를 사용할 때 UTC 표준 시간을 사용하지 않으면 서비스를 사용할 때 귀찮음이 있을 수 있다는 피드백을 받았다. UNIX Time을 이용하면 프론트엔드에서 day.js 라이브러리를 이용해서 ‘몇 분 전’, ‘몇 일 전’을 쉽게 표현할 수 있다. 먼저 mysql db 기본 시간 설정 값을 확인해준다. SELECT @@global.time_zone, @@session.time_zone; time_zone 값이 UTC로 설정되어 있는 모습. 이제 스크랩을 추가할 때 시간을 L..

CS/DB 2023.08.28

Http 와 Https의 차이

Http란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다. Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성된다. HTTPs (HTTP Secure) HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜이다. 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 암호화를 지원하고 있다. HTTPSsms 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있다. - 대칭키 암호화 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함 키가 노출되면 매우 위험하지만 연산 속도가 빠름 - 비대칭키 암호화 1개의 쌍으로 구성된 공개키와 개인키를 ..

CS/네트워크 2023.02.15