레이스 컨디션 (Race Condition)두 개 이상의 프로세스(Process) 또는 스레드(Thread)가 동시에 공유 자원에 접근하려고 할 때 발생하는 문제로, 접근 순서를 예측할 수 없는 상황에서 발생하기 때문에, 결과 역시 예측할 수 없어 불안정한 프로그램 동작을 초래할 수 있다. 주로 다중 스레딩 환경에서 빈번히 발생하는데, 예를 들어 계좌 잔액을 동시에 업데이트하는 두 스레드가 있는 경우, 레이스 컨디션이 발생하면 잔액이 정확히 반영되지 않는 문제가 생길 수 있다. 이를 방지하기 위해 동기화 기법을 사용하며, 대표적으로 세마포어와 뮤텍스가 있다. 세마포어 (Semaphore)여러 스레드가 공유 자원에 접근하는 것을 제어하는 동기화 도구로, 주로 특정 리소스를 사용할 수 있는 티켓의 개수를 제..
컨텍스트 스위칭 (Context Switching)운영체제(OS)에서 하나의 프로세스나 스레드가 실행을 멈추고 다른 프로세스나 스레드를 실행하도록 전환하는 작업. 이 과정에서 시스템은 현재 실행 중인 작업의 상태를 저장하고, 새롭게 전환할 작업의 상태를 복원하여 실행을 계속하게 된다. 컨텍스트 스위칭은 멀티태스킹을 지원하기 위해 필수적이다. 컨텍스트 스위칭 개념 프로세스/스레드: 여러 작업이 동시에 실행될 수 있도록 CPU가 각 작업을 교대로 실행한다.컨텍스트(Context): 프로세스나 스레드의 실행 상태를 의미하며, CPU 레지스터 값, 프로그램 카운터, 스택 포인터, 메모리 맵 등을 포함한다.컨텍스트 스위칭: 특정 작업의 컨텍스트를 저장하고, 새로운 작업의 컨텍스트를 복원하는 과정을 통해 CPU 제..
개요사실 이번 시간은 트러블 슈팅이라기 보다는 내 개인적인 의문으로 공부를 한 시간이라고 할 수 있다.한창 TCP 멀티 서버를 구축하고 테스트해보던 중... 문득 이런 생각이 들었다. 현재 내가 만든 서버에 접속 가능한 클라이언트가 몇 명 정도 될까? 나의 궁금증이 해소되는 데에는 그리 오랜 시간이 필요하지 않았다. 왜냐...?이미 미래시를 가지고 있는 튜터님께서 테스트를 해주셨거든... 대충 200명에서 250명 사이에서 서버가 터지는 걸 확인했다. 하지만 여기서 끝내면 그저 궁금증에 지나지 않는다. 만약 서버에 더 많은 유저가 접속을 시도했을 때, 어떻게 하면 부하를 줄이고 유저를 더 수용할 수 있는지 알아보자!!! 로드 밸런싱물론 나는 이론적으로 이미 공부를 했었던 내용이다. 바로 로드 밸런싱!!!..
문제더보기...이때, 트럭 하나로 모든 배달과 수거를 마치고 물류창고까지 돌아올 수 있는 최소 이동 거리를 return 하도록 solution 함수를 완성해 주세요. https://school.programmers.co.kr/learn/courses/30/lessons/150369?language=cpp 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이해당 문제는 2023 KAKAO BLIND RECRUITMENT에 출제되었고, 문제에 도전한 후 봤던 참고 풀이가 내가 접근한 방식과 다르게 간단하고 명확해서 다시 다뤄볼 필요가 있을 것 같아 들고와봤다. 먼저 내가 풀어본 풀이를 살펴보자. C++)#i..
개요내가 진행하는 프로젝트의 대부분은 Prisma라는 ORM을 사용하여 DB를 생성, 관리한다. 물론 프리즈마가 ORM이고, 이를 사용하기 위해 어떤 세팅을 해야하며, 무슨 메서드나 문법을 사용하는 지도 잘 안다. 왜냐면 계속 사용해왔으니까!!! 그럼 도대체 Prisma를 왜 사용할까? 아니, 분명 현업에서는 대개 Low-Level Query를 사용한다고 알고 있는데, 나는 지금 왜 Low-Level Query를 사용하지 않고 ORM을 사용하고 있을까? 솔직하게 말하자면... 그냥 편하고 익숙해서... 내가 좋은 개발자가 되기 위해 노력하고, 공부하는데... 사용하는 이유가 고작 '편하고 익숙해서?' 라는 생각이 들자 깊이 반성을 시작했다... 내가 ORM을 쓴다면, 적어도 무슨 차이가 있고, 왜 사..