분류 전체보기

    [TIL] Lock

    MySQL 엔진의 잠금MySQL에서 사용되는 잠금은 크게 스토리지 엔진 레벨과 MySQL 엔진 레벨로 나뉨MySQL 엔진 레벨의 잠금은 모든 스토리지 엔진에 영향을 미침스토리지 엔진 레벨의 잠금은 스토리지 엔진 간 상호 영향을 미치진 않는다. 글로벌 락글로벌 락은 FLUSH TABLES WITH READ LOCK 명령으로 획득 가능MySQL에서 제공하는 잠금 중 가장 범위가 크다.한 세션에서 글로벌 락을 획득하면 다른 세션에서 SELECT를 제외한 대부분의 DDL 문장이나 DML 문장을 실행하는 경우 해제될 때까지 해당 문장이 대기 상태로 남는다.글로벌 락이 영향을 미치는 범위는 MySQL 서버 전체InnoDB 스토리지 엔진은 트랜잭션을 지원하기 때문에 모든 데이터 변경 작업을 멈출 필요가 없음→ 백업 ..

    [TIL] AOP

    AOP는 Aspect Oriented Programming 이라는 뜻으로, 여러 서비스 로직에 대해 공통적으로 수행되는 횡단 관심사를 처리하기 위해 고안된 기술이다. AOP는 크게, Spring AOP와 AspectJ를 사용하는 방법이 있다.Spring AOP 는 AspectJ의 핵심 feature를 토대로 개발된 것으로, Spring Bean으로 등록된 빈에 대해서만 AOP 적용이 가능하다.Spring AOP는 동적 프록시를 통해 AOP를 구현한다.동적 프록시 기술은 CGLIB과 Jdk Dynamic Proxy가 있는데, Spring Boot에서는 기본적으로 CGLIB을 사용한다.CGLIB은 상속을 통해 프록시 객체를 생성한다. 동적 프록시JDK Dynamic Proxy (Interface)동적 프록시..

    [TIL] Process Scheduling

    [TIL] Process Scheduling

    Program / ProcessProgram하드 디스크 등에 저장 되어 있는 정적인 상태명령어 리스트를 내용으로 가진 실행 파일Process실행을 위해 메모리에 올라온 동적인 상태동일한 프로그램으로부터 별도의 실행을 가질 수 있다.즉, 하나의 프로그램에서 여러개의 프로세스를 가질 수 있다.  Process의 논리 메모리CPU는 프로그램을 하나 또는 여러개의 Process라는 단위로 생성하여 이를 실행한다.CPU는 Process 실행을 위해 각각 별도의 논리 메모리를 할당하게 된다.code : 실행 코드를 저장하는 영역data : 전역 변수를 저장하는 영역heap : 동적으로 할당되는 메모리stack : 함수 호출시 임시 데이터 저장 장소  CPU Schedulerready 상태이지만 현재 running ..

    [TIL] Thread 종류

    컴퓨터 시스템 구성도User ModeProcess 가 동작하는 영역OS KernelOS가 H/W 자원을 제어하기위해 사용되는 공간H/WPC에 연결된 하드웨어들의 집합 (SSD, CPU, LAN card 등) Hardware ThreadCore 의 사용률을 극대화시키기 위해 개발된 물리적인 Thread이다.CPU 관점에서 Core에서 수행하는 연산 작업 시간보다 메모리에 데이터를 반영하는 시간이 길다는 문제가 있었음메모리를 기다리는동안 다른 작업을 수행할 수 있도록 하자Intel → Hyper-Threading물리적인 코어마다 하드웨어 스레드를 2개씩 두는 모델OS 관점에서 Hardware Thread는 가상의 코어이다.만약, Single Core CPU에서 H/W Thread가 2개라면 OS는 이 CPU..

    [TIL] DeadLock

    Deadlock이란?둘 이상의 Thread가 각기 다른 Thread가 점유하고 있는 자원을 서로 기다릴 때, 무한 대기에 빠지는 상황을 말한다.deadlock이 발생하는 조건은 상호배제(Mutual Exclusion), 점유대기(hold-and-wait), 비선점(no preemption), 순환대기 (circular wait)를 모두 만족했을 때 이다.deadlock 문제를 해결하는 방법에는 무시, 예방, 회피, 탐지-회복 의 4가지 방법이 있다. Deadlock 발생 조건deadlock은 다음 4가지 조건이 동시에 성립할 때 발생할 수 있다. 1. 상호 배제동시에 하나의 Thread만 자원을 점유할 수 있는 상황이다.다른 Thread가 자원을 사용하려면 자원이 방출될 때까지 기다려야한다. 2. 점유 ..

    [TIL] Blocking, Non-Blocking I/O

    Blocking I/OI/O 작업을 요청한 프로세스/스레드는 요청이 완료될때까지 차단(Block) 됨하나의 Thread에서 Blocking으로 동작하는 read system call을 호출한다.OS Kernel로 전환하기위해 Context-switching이 발생한다Kernel에서는 read I/O를 실행하여 외부 소켓과 connection을 맺는다. (TCP 기준)외부 소켓으로부터 데이터를 읽어, Kernel space에서 User space(Application)로 데이터를 전달한다.OS Kernel로부터 데이터를 전달받은 Thread는 그제서야 다른 작업을 처리한다. +) Socket에게 Block I/O란?socket A는 네트워크상에서 Data를 읽는 주체, socket S는 Data를 쓰는 주..

    [TIL] 파일 시스템 (File System)

    파일 시스템 (File System)파일과 디렉터리를 관리하는 운영체제 내의 프로그램한 PC 내에 여러개의 File System 을 사용할수도 있다. 파일보조기억장치에 저장된 관련 정보의 집합이다.의미 있고 관련 있는 정보를 모은 논리적 단위이다.파일을 이루는 정보파일을 실행하기위한 정보부가 정보 (속성, 메타데이터)  파일의 속성유형운영체제가 인지하는 파일의 확장자exe, com, bin, class, java 등.. 파일 작업을 위한 System call파일 관련 작업은 전부 OS Kernel에서 System call을 호출하여 이루어진다.System call 에는 다음과 같은 종류가 있다.파일 생성파일 삭제파일 열기파일 닫기파일 읽기파일 쓰기 디렉터리 (Directory)리눅스에서는 디렉터리라고 부..