CS 11

Sync & Async과 Blocking I/O & Non Blocking I/O

I/O 종류네트워크 (socket)filepipe (프로세스 간)device (키보드와 같은 장치 등등)SyncSynchronous : 동기모든 요청과 응답이 일련의 순서를 따른다.작업의 완료 여부를 호출한 측에서 직접 확인하고, 작업이 끝난 후에 다음 작업을 수행함.AsyncAsynchronous : 비동기작업을 요청한 후 즉시 다음 작업을 수행할 수 있으며, 작업이 완료되면 별도의 콜백 함수나 이벤트를 통해 결과를 확인함.비동기 코드 예제import asyncioasync def async_order1(): print("task1 주문을 처리 중... ") await asyncio.sleep(2) # 2초 대기 (하지만 CPU는 다른 작업 수행 가능) return "아메리카노"asy..

CS/Operating System 2025.03.05

Database Replication

Database Replication이란?레플리케이션(Replication)은 실시간 복제본 데이터베이스 서버를 운영하는 것을 의미한다. 기준이 되는 서버를 마스터(master) 서버라고 하고, 마스터 서버와 동일한 내용을 갖는 또 다른 서버를 ‘레플리카(Replica)`라고 한다.Master - Slave 관계다양한 용어원본 서버 : Master, Main, Primary, Publisher, Active레플리카 서버 : Slave, Standby, Secondary, Subscriber왜 나왔을까?기본적으로는 데이터 안정성 때문이다.(크게 3가지 부하분산(Load Balancing), 고가용성(High Availabilty), 백업 등)생각해보자.1. 만약 어떠한 원인으로 인해 데이터가 손상 되었다면..

CS/Database 2025.02.24

[MySQL] 스토리지 엔진 수준의 잠금(LOCK)의 종류

https://jinsang-2.tistory.com/120 [MySQL] 트랜잭션 격리 수준(Isolation Level)https://jinsang-2.tistory.com/119트랜잭션의 특징 4가지, ACID중에 Isolation Level에 대해 이야기 해보려 한다.  트랜잭션(Transaction)트랜잭션(Transaction)이란??트랜잭션은 데이터베이스에서 수행되는 "작업의jinsang-2.tistory.com트랜잭션 격리 수준을 공부하기 위해 필요한 배경지식들이 있어서 정리해 놓습니다.MySQL 락 MySQL에서 사용되는 락은 크게 스토리지 엔진 레벨과 MySQL 엔진 레벨로 나뉘어 진다.스토리지 엔진 레벨의 잠금은 테이블의 데이터를 다루기 위한 락이다.MySQL 엔진 레벨의 잠금은 테이..

CS/Database 2025.02.18

[MySQL] 트랜잭션 격리 수준(Isolation Level)

https://jinsang-2.tistory.com/119트랜잭션의 특징 4가지, ACID중에 Isolation Level에 대해 이야기 해보려 한다.  트랜잭션(Transaction)트랜잭션(Transaction)이란??트랜잭션은 데이터베이스에서 수행되는 "작업의 논리적 단위"를 말한다.“더 이상 분할이 불가능한 업무처리의 단위”라고도 말한다. 하나의 작업을 위해 더 이상 분할jinsang-2.tistory.comACID - I = 독립성(Isolation)둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다. 하나의 트랜잭션이 다른 트랜잭션에게 영향을 주지 않도록 격리되어 수행되어야 한다. 예시 : 다른 트랜잭션이 계좌 A의 잔액을 읽는..

CS/Database 2025.02.18

트랜잭션(Transaction)

트랜잭션(Transaction)이란??트랜잭션은 데이터베이스에서 수행되는 "작업의 논리적 단위"를 말한다.“더 이상 분할이 불가능한 업무처리의 단위”라고도 말한다. 하나의 작업을 위해 더 이상 분할될 수 없는 명령들의 모음이며 즉 한꺼번에 수행되어야 할 일련의 연산모음을 의미한다.이 모든 작업이 완료되거나(Commit), 실패하여 취소(Abort)되어야 한다.참고예를 들어 SELECT문, INSERT문 이렇게 명령문마다 하나씩 트랜잭션의 작업의 단위가 아니라는 것작업 단위는 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미트랜잭션의 작업의 단위는 SQL 한 문장이 아님!!예시 : 은행 계좌 이체(A계좌→B계좌)계좌 A에서 100만원 출금계좌 B로 100만원 입금이 두 작업은 하나의 트랜..

CS/Database 2025.02.18

멀티 프로그래밍, 멀티 태스킹, 멀티 프로세싱, 멀티 스레딩

단일 프로세스 (Single Process)단일 프로세스초창기 컴퓨터는 단일 프로세스 시스템이었음한 번에 하나의 프로그램만 실행할 수 있었고 만약 다른 프로그램을 실행하고 싶다면 현재 프로그램을 종료 후 실행시켜야 했다.단점한 번에 하나의 프로그램만 실행 가능CPU 사용률도 좋지 않음프로그램 실행 도중 I/O 작업이 발생하면 CPU 프로세스는 I/O 작업을 기다리느라 아무것도 못하는 상태가 된다. 멀티 프로그래밍(Multi Programming)멀티 프로그래밍이란?단일 프로세스(Single Process)의 문제를 해결하기 위해 여러 개의 프로그램을 메모리에 올려놓고 하나의 CPU에서 번갈아 가면서 동시에 실행시키는 방법을 고안즉! 단일 프로세서(CPU 코어가 한 개) 환경에서 여러 프로그램을 동시에 실..

CS/Operating System 2025.01.23

교착 상태(Deadlock) 및 은행원 알고리즘(Banker’s Algorithm)

데드락(Deadlock)은 두 개 이상의 프로세스나 스레드가 서로가 점유한 자원을 기다리며 영원히 진행되지 못하는 상태를 의미데드락 발생 조건 (Coffman Conditions)데드락은 다음 4가지 조건이 모두 동시에 성립할 때 발생상호 배제 (Mutual Exclusion): 한 번에 하나의 프로세스만 자원을 사용할 수 있다.자원이 공유가 불가능하다면, 다른 프로세스는 그 자원이 해제될 때까지 기다려야 한다.점유 및 대기 (Hold and Wait): 자원을 점유한 상태에서 다른 자원을 요청하며 대기한다.예를 들어 Process1이 Resource 1을 점유하면서 Resource 2를 요청해서 기다리는 경우비선점 (No Preemption): 이미 할당된 자원을 강제로 빼앗을 수 없다.자원을 점유한 ..

CS/Operating System 2025.01.15

Critical Section / 세마포어(Semaphore) / 뮤텍스(Mutex)

임계 영역(Critical Section)임계 구역(Critical Section)은 공유 자원(Shared Resource)에 여러 스레드나 프로세스가 동시에 접근할 경우 문제가 발생할 수 있는 프로그램의 코드 영역을 의미한다.❗문제 발생 공유 자원은 여러 프로세스/스레드가 동시에 접근할 경우 임계 구역 안에서 데이터 불일치 또는 경쟁 상태(Race Condition)를 초래할 수 있다.임계 구역 문제를 해결하려면 한 번에 하나의 스레드만 해당 코드 영역에 진입하도록 제한해야 한다.🛠️ 해결 방법뮤텍스(Mutex), 세마포어(Semaphore) 등의 동기화 메커니즘을 사용하여 한 번에 하나의 스레드만 임계 구역에 접근하도록 보장한다.💡 이해하기 쉬운 예시은행 계좌에서 두 개의 ATM 스레드가 동시에..

CS/Operating System 2025.01.15

쿠키, 세션, 웹 스토리지(로컬,세션 스토리지)에 관하여..jwt는 어디에 저장하나?

쿠키키와 값으로 저장되어 있음브라우저에 데이터 저장쿠키는 유효 기간이 있음쿠키가 없다면 페이지를 이동할 때 로그인 정보를 저장할 곳이 없다. 일시적으로 가벼운 데이터를 저장하기 위httpOnly, secure 옵션 등을 부여하면 코드(JS)로 접근 불가저장 용량은 로컬 스토리지에 비하면 현저히 작음세션서버에서 데이터 관리브라우저에서는 session Id로 서버에 접근session Id는 쿠키에 저장세션 사용 예시 = 넷플릭스Session Id로 접근해서 서버와 통신다른 클라이언트에서 같은 Session Id로 접근하면 서버와의 통신을 끊는다. 최대 몇 개의 클라이언트의 Session Id로 접근할 수 있는지 제한할 수도 있다. (예를 들어 넷플릭스 패밀리 4명)웹 스토리지쿠키만으로는 저장용량이 작음로컬 ..

CS/Network 2024.12.17

추상화가 도대체 뭔데? (추상화, 추상자료형)

추상화란?복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것즉, 복잡한 문제를 단순하게 만드는 것추상화의 반대말은 구체추상의 반대말은 구현이다.추상화의 예완벽하게 구체적인 상태추상화를 거친 상태추상화란!핵심적인 요소만 추출해서 단순하게 만드는 것복잡한 문제를 단순히 만드는문제를 쉽게 해결하기 위해 핵심적인 요소만 뽑아내는 것중요하거나 꼭 필요한 특징만을 추출하는 것추상자료형(ADT-Abstract Data Type)[추상화(abstraction)] 를 통해 정의한 자료형구체적인 기능의 완성 과정은 서술하지 않고 오로지 순수하게 기능이 무엇인지만 나열하는 것어떤 자료를 다루고, 어떤 연산이 필요한지 정의해 보는 것이다.기능으로만 정의한 개흐름을 생각할 때와 같이 구현에 집중할..

CS 2024.08.27