Process 의 생성 부모 프로세스가 자식 프로세스를 생성한다. 프로세스들은 트리 구조 형성하게 된다. 프로세스는 자원을 필요로 한다. 자원은 운영체제로부터 받으며, 부모 프로세스와 자식 프로세스가 일반적으로 공유하지 않는다. 프로세스들끼리는 별개의 프로세스이므로 자원을 위해 경쟁을 하게 되는 것이 일반적이기 때문이다. 수행 - 부모와 자식이 공존하며 수행하는 모델 - 자식이 종료될 때가지 부모가 기다리는 모델 주소 공간 - 자식은 부모의 공간을 복사한다. : process의 문맥 (주소공간인 코드 데이터 스택, PC)을 그대로 복사한다. - 마치 과제할 때 기존에 레포트 템플릿이 있으면 복사하고 일부 수정해서 쓰는 것처럼, 효율적일 것이다. - 자식은 그 공간에 새로운 프로그램을 올린다. UNIX 예..
전체 글
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 만능 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험했던 내용과 공부했던 내용을 기록합니다. 🐻❄️☁️국내에 Databricks 관련 블로그 글이나 문서가 많지 않아서 직접 공부하거나 테스트 해본 내용들을 블로그에 조금씩 정리해보려고 한다..! Databricks DLT Table 이란 ? 데이터브릭스에서 안정적으로 배치 및 스트리밍 데이터를 위한 파이프라인을 구축하고 관리할 수 있도록 만들어 놓은 기능이다. 스트리밍 데이터에 강하다보니, CDC가 필요한 경우에도 주기적으로 스트리밍 데이터를 당겨오면 Delta Live Table에 변경 사항을 반영할 수 있다. 문제점은 .. 편리한 대신에 가격이 비싸다고 한다 https://www.databricks.com/kr/product/delta-live-tables Delta Live 테이블 | Databricks DataBricks Delta Live Tab..
https://school.programmers.co.kr/learn/courses/30/lessons/87694 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 1. 사각형 테두리를 그린다. 2. 테두리 따라서 , characterX, characterY 좌표부터 itemX, itemY 까지의 경로중 최단거리를 BFS를 이용해서 탐색한다 여기서 주의해야 할 점은, 테두리와 테두리가 겹치는 경우 경로를 잘못 인식할 수 있다는 점이다. 따라서, 아예 2배로 칸 크기를 늘려서, 겹치는 문제를 해결해야 한다. 대신 answer 를 구할 때 다시 2로 나..
프로젝트에서 온프레미스 환경에 있는 MongoDB 데이터베이스를 AWS DMS 를 사용하여 S3로 마이그레이션을 하게 되었다..!! DMS CDC 기능을 사용해보기 위해서 mongoDB 레플리카 셋을 구축해보게 되었다. MongoDB ReplicaSet 이란 ? Replica Set은 쿠버네티스에서도 등장하는데, Mongo DB에서는 관점이 조금 다르다. 데이터베이스의 데이터를 여러 서버에 동일한 데이터 셋을 저장하고 운영하기 위한 클러스터이다. Replica Set을 구성해서, 하나의 서버에 장애가 일어나더라도 다른 서버가 동일한 데이터 셋을 운영할 것이므로 가용성을 보장할 수 있다. Replica Set 의 패턴 MongoDB에서 레플리카셋을 구성하는 패턴은 크게 두가지이다. 1. PSS (Prima..
Thread 의 장점 1. 응답성, 빠른 처리 : 하나의 스레드가 waiting 인 상태 동안에 동일한 task 내의 다른 스레드는 실행될 수 있어서 응답 속도를 높인다. 2. 자원 절약 : 같은 작업을 수행하는 하나의 프로세스 안의 thread들은 자원을 공유하는 부분이 있다. ex) Code, Data 영역 3. 경제성 : process 를 생성하거나 문맥 교환하는 것에 비해 thread는 경제적이다. (Solaris OS 의 경우 생성의 경우 30배, 문맥 교환의 경우 5배 더 절약된다.) 4. Process는 하나지만, thread는 여러개 인 경우 -> 병렬적으로 일할 수 있다. Thread 구현 방법 Kernel Thread : 운영체제 kernel의 지원을 받는다. ex) 하나의 thread..
동기식 입출력 & 비동기식 입출력 입출력 처리를 운영체제를 통해서 해야 한다. 입출력을 요청한 프로세스가 기다려야 한다면 → 동기식 입출력이다. 입출력이 진행되는 동안에 그 프로세스가 곧바로 CPU를 점유하여 실행한다면 → 비동기식 입출력이다. 동기식 입출력 I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감 방법 1 : I/O 가 끝날 때 까지 CPU를 낭비시킨다. → 매 시점에 하나의 I/O 만 일어날 수 있음 방법 2 : I/O가 완료될 때까지 해당 프로그램에게서 CPU 를 빼앗음 → 다른 프로그램에게 CPU 를 준다. 대부분 방법2로 구현된다. 비동기식 입출력 I/O 가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감. 동기식 & 비동..
https://www.acmicpc.net/problem/6593 6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net BFS 로 풀었다 상하 이동 처리만 신경써주면 된다 하지만 나는 삽질을 몋시간동안 했는지 모르겠다 근데 그 이유가 queue에서 뺄 때 popleft 가 아니라 pop() 을 써서 그렇다 .. 어이없다 ; from collections import deque # 방향 이동 - 동서남북 + 상하 dx = [-1, 1, 0, 0, 0, 0] dy = [0, 0, -1, 1, 0, 0] dz = [0, 0,..
! [remote rejected] main -> main (pre-receive hook declined) 구글링 해보니까 branch protect 정책을 설정하지 않아서 생긴 문제라고 한다 Git에 새로 생긴 기능이려나..? 따라서 레포지토리 -> Settings -> Branch 에 들어가서 새로운 Branch Protection rule을 만들어 주었다. 나의 경우 사이드 프로젝트 였으므로 push force 를 허용하고 delete 도 허용하는 두가지 rule을 추가하였고, 별도로 다른 정책은 건드리지 않았다. 대용량 파일 올리는 방법은 git lfs로 쪼개서 올리는 방법이 있다. git에서는 50MB 를 넘어가면 대용량 파일로 간주하여 올리는데 문제가 발생한다.. brew install lf..