본문 바로가기

전체 글51

[OS] 동기화 메커니즘(Synchronization Mechanisms)과 스핀락(Spinlock), 뮤텍스(Mutex), 세마포어(Semaphore) 0. 경쟁 상태와 임계 구역0-1. 경쟁 상태 (Race Condition)경쟁 상태는 여러 개의 프로세스가 병행하여 공유 자원을 읽고 쓸 때 발생하는 상황공유 자원 접근 순서에 따라 실행 결과가 매번 달라지는 문제 (non-deterministic)이러한 경쟁 상태를 해결하기 위해 동기화 매커니즘이 필요하다.0-2. 임계 구역 (Critical Section)둘 이상의 프로세스/스레드가 동시에 실행될 경우 생길 수 있는 경쟁 조건을 발생시킬 수 있는 코드 영역임계 구역 해결 조건Mutual Exclusion (상호 배제) : 이미 한 프로세스가 임계 구역에서 실행중이라면 다른 프로세스의 접근을 금지하는 것Progress (진행) : 임계 구역에 프로세스가 없을 때, 임계 구역에 접근하고자 하는 프로세스.. 2024. 6. 28.
동적 계획법 (DP) 1. 중복이 많은 완전 탐색피보나치 수열 : 첫재 및 둘쨰 항이 1이며 그 뒤의 모든 항은 바로 앞 두항의 합인 수열점화식 : f(0) = 1, f(1) = 1, f(n) = f(n-1) + f(n-2)만약 완전 탐색(백트레킹)으로 해결한다면?f(5)가 필요하다면 ? → f(4) + f(3) 이 필요해f(4)가 필요하면 → f(3)과 f(2)가 필요해f(3)이 필요하면 → f(2)와 f(1)이 필요해탑 다운 방식으로 해결하려고 한다면 너무 비효율적이고 중복으로 구해야 하는 부분이 많다.→ 시간 복잡도 : 약 O(2^n)…. 너무 오래 걸리고 비효율적이다.그렇다면 먼저 계산한 값들을 저장해놓고 필요할 때 사용하면 편하겠는데??? → 메모이제이션 2. 메모이제이션메모이제이션 : 작은 문제의 결과값을 저장해놓.. 2024. 6. 27.
MST (Minimun Spanning Tree, 최소 신장 트리) 그래프와 트리비선형 자료구조 : 객체간의 관계를 관리하며 하나의 자료 뒤에 여러 개의 자료가 존재그래프 : 노드(정점, 위치), 간선(위치간 관계), 가중치(간선에 할당된 비용)로 이루어진 자료구조유향 그래프, 무향 그래프 : 단방향이면 유향, 양방향이면 무향트리 : 사이클 없이 모든 노드가 하나의 연결 요소인 그래프사이클 - 단순 경로(노드가 중복되지 않은 경로)의 시작점과 종점이 동일한 그래프→ 노드의 개수가 n개일 때, 간선의 개수는 n-1개 이다.기본 트리는 루트를 고려하지 않음, 루트를 고려하면 루티드 트리가 된다.신장 트리(Spanning Tree) : 그래프 내의 모든 정점을 포함하는 트리→ 최소 연결(간선의 수가 가장 적은 부분 그래프)→ n개의 노드에 n-1개의 간선으로 모두 연결된 그래.. 2024. 6. 26.
[Network] TCP 연결 및 해제 과정 (3 way-handshake & 4 way-handshake) 0. TCPTCP는 전송 계층(Transport Layer)에서 사용되는 프로토콜이다.장치들 사이에 논리적인 접속을 성립(Establish)하기 위하여 연결을 설정높은 신뢰성을 제공하고 연결 지향성 서비스를 제공한다.정보 전달에 있어 안정적으로, 순서대로, 에러 없이 데이터를 교환을 목적으로 한 프로토콜위의 안정적이고 논리적인 특징을 만족하기 위해 TCP의 경우 handshake를 사용한다. 1. TCP의 3 way-handshake 1-1. TCP의 3 way-handshake 역할3 way-handshake는 TCP 통신을 이용해 데이터 전송 전 정확한 전송을 보장하기 위해 사전에 세션을 수립하는 과정클라이언트와 서버 모두 데이터를 전송하고 받을 준비가 되었다는 것을 보장한다.실제로 데이터 전달이 시.. 2024. 6. 24.
[OS] DeadLock(교착상태) 발생과 해결 방안 1. DeadLock (교착상태) 란?교착상태란 여러 프로세스나 스레드가 서로 자원을 기다리며 실행이 멈추는 상태를 말한다.예를 들어, 프로세스 A가 프로세스 B의 자원을 요청할 때 프로세스 B도 프로세스 A가 점유하고 있는 자원을 요청하는 것이다. 2. DeadLock 원인DeadLock(교착상태)은 아래의 네가지 조건을 모두 만족할 때 발생한다.상호배제(Mutual exclusion) : 자원은 한번에 하나의 프로세스만 사용할 수 있어야 한다.점유대기(Hold and wait) : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.비선점(No preemption) : 다른 프로세스에 할당된 자원은 사용이 끝날 때.. 2024. 6. 24.
[OS] Blocking / Non-Blocking, Sync / Async 1. Blocking / Non-BlockingBlocking와 Non-Blocking는 제어권의 위치(작업을 진행할 수 있는지 or 기다려야 하는지)로 구분 할 수 있다.1-1. BlockingBlocking 은 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것이다.즉, 호출된 함수가 자신의 로직을 모두 끝낼 때까지 제어권을 계속 가지고서 호출한 함수에게 바로 돌려주지 않는 상황을 의미한다.예시A :  B님 xxx 작업을 처리해줘요B : ㅇㅋ 금방 끝나는 일이니깐 어디가지 말고 옆에서 기다리고 있어욤A : 넵(B가 작업을 완료할때 까지 기다려야 한다.)1-2. Non-BlockingNon-Blocking은 다른 주체의 작업에 관련 없이 .. 2024. 6. 17.
[회고] AWS Certified Developer 후기,,, 0. 응시 계기올해 목표인 백엔드 개발자로 필요한 역량을 기를 수 있는 자격증 세개 따기,,,  두번째 자격증으로 AWS Developer 자격증을 땄다.해당 자격증은 2월부터 계획했던 자격증으로 사실 4월 중순에 시험을 보고 따려고 했지만 너무너무 바쁘고 할게 많아서 계속 밀렸었다.마지막의 마지막까지 미룬 뒤 더이상 미루면 안된다고 생각해서 인턴을 같이하는 팀원 중 한명이 정처기 시험본다고 해서 같은날에 같이 보자!!! 라고 하면서 일단 시험을 예약해버렸다.원래 클라우드 서비스에 대해서 처음 배울 때부터 굉장히 흥미가 있었던 것은 사실이지만 시험을 준비하면서 진짜 신기한 기술들이 많은 것을 느꼈다.물론 시험을 준비하고 자격증을 땄지만 그 모든 기능들을 사용할 수 있는 것은 아니다. 애초에 돈이 나갈까봐.. 2024. 5. 26.
[Spring] Spring Facade Pattern 1. Facade 패턴이란?포스팅에 앞서, Spring Boot에서는 Bean이 Controller, Service, Repository를 어노테이션만으로 알아서 의존성을 주입해주는 좋은 기능을 가지고 있다.그렇다면 우리가 개발을 진행하면서 하나의 Controller가 하나의 Service를 참조하고, 하나의 Service는 하나의 Repository만 참조해가면서 간단하게 데이터만 반환하는 상황만 있을까?? 간단한 기능을 만들면서도 확인한 결과 절대 아니다. 왜냐하면 하나의 데이터(DTO로 변환해서)를 반환할 때도 여러 엔티티를 참조해서 상황에 맞는 데이터를 잘 조립해서 반환해야 했기 때문이었다. Service 레이어에서 Repository를 너무 많이 의존하고 여러 엔티티를 통해 데이터를 가져온다는 .. 2024. 5. 18.
[DBMS] Index를 통한 SELECT 쿼리 성능 개선 1. INDEX1-1. INDEX란?데이터베이스 인덱스(index)는 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블에 저장된 데이터의 검색 속도를 향상시키기 위한 자료구조이다. 인덱스는 데이터베이스 내의 특정 컬럼(열)이나 컬럼들의 조합에 대한 값과 해당 값이 저장된 레코드(행)의 위치를 매핑하여 데이터베이스 쿼리의 성능을 최적화하는 데 중요한 역할을 한다. 예를 들어, 책에서 원하는 내용을 찾는다고 가정하면, 책의 모든 페이지를 넘기면서 원하는 내용이 나올 때까지 찾는 것보다 목차 또는 저자가 남긴 색인(index)을 통해 찾는 것이 더욱 빠를 것이다. 데이터베이스의 인덱스가 책의 목차와 색인과 같은 역할을 한다. 간단하게 정리하면 인덱스의 개념은 아래와 같다.테이블에 대한 검색의 속도.. 2024. 5. 16.