본문 바로가기
3. 운영체제 3장 프로세스 간 통신 부모 프로세스와 자식 프로세스pid가 1인 프로세스(systemd)가 루트 부모 프로세스 역할을 하고, 새로 생성되는 프로세스들을 자식 프로세스라 한다.이 자식 프로세스들은 또다시 부모가 될 수 있으며 그 결과 트리를 형성한다. 부모 프로세스가 자식 프로세스를 생성할 때,1. 부모의 메모리 공간을 복사해 줄 수 있다. 전역변수, 힙, 스택 영역이 자식에게 그대로 전달된다. 하지만 복사된 후에는 부모와 자식이 독립적인 메모리 공간을 가진다.(변경해도 서로 영향 x)2. 자식 프로세스는 부모가 갖고 있던 환경변수를 그대로 상속받는다.3. file descriptor를 공유할 수 있다. 부모가 열린 파일을 자식도 동일하게 사용할 수 있다.4. IPC(파이프, 메세지 큐, 공유 메모리, 소켓)를 사용하면 부모가.. 2025. 1. 30.
2. 운영체제 3장 프로세스 기초, 컨텍스트 스위칭 프로세스 메모리 배치운영체제에서 프로세스가 실행될 때 메모리는 여러 영역으로 나뉘어 있다.코드와 전역 변수는 고정된 크기의 영역에 저장되고, 실행 중 생성되는 데이터는 동적으로 할당되는 힙과 스택에 저장된다.스택은 함수 호출과 관련된 정보가 저장되는 곳으로, 호출될 때 데이터를 push하고 끝나면 pop하면서 제거된다.이 때의 데이터를 "activation record"라고 하며, 함수 매개변수, 지역변수, 복귀 주소가 포함된다.마찬가지로 메모리가 동적 할당됨에 따라 힙이 커지고, 메모리가 시스템에 반환되면 축소된다. 정말 유명한 사이트 stack overflow이름의 유래가 이곳이다. 스택 메모리가 과도하게 커지는 것을 스택 오버플로우라고 하는데, 스택 오버플로우의 대표 예시로 순환 참조를 들 수 있다.. 2025. 1. 29.
DeepSeek 우와 나스닥이 난리가 났다. 몇천억 들인 chatGPT, gemini등이 치열하게 경쟁하는 와중에고작 80억으로 gpt 유료모델(심지어 하루 50회 엑세스 가능한 모델..)의 성능을 뛰어넘다니취업하면 주식공부 해볼까 하는 생각을 했는데 역시 나같은 문외한은 안하는게 좋겠다 짧게 사용해보고 느낀 deepseek의 장점은 추론모델과 검색모델을 함께 사용할 수 있다는 거다. 놀랍게도 deepseek에서 최초로 제공한 기능이다. 이게 무슨 말이냐면, 검색을 하며 인간처럼 생각을 할 수 있다는 뜻이다.추론능력은 iq 120정도라고 한다. ai가 폰 노이만 정도의 두뇌를 가지면 세상이 어떻게될까 무서워진다.단점은 성능에 비해 한글을 그렇게 잘 하진 못하고, 이미지파일을 제공하면 해당 이미지 자체를 분석하는 능력은 없고 .. 2025. 1. 28.
Spring WebFlux를 활용한 HTTP메서드 처리 확장과 성능 테스트 로드밸런서 공부를 할 때 사용했던 코드를 가져와서 사이드 프로젝트를 만들고 있는데,현재 로드밸런서는 요청값을 처리하는 데에 한계가 있다.컨트롤러는 @GetMapping을 통해 오직 GET요청만 처리하도록 설계되어 있고,RequestProcessor는 내부적으로 HTTP요청을 처리하며 POST방식만을 사용하여, POST요청만 전송 가능하다. 다양한 HTTP메서드를 처리하려면 요청에 따라 다른 로직을 처리하는 추가 설계가 필요하다.  설계 방향성 잡기: 사용자 편의성을 고려하자!직관적으로 생각해봤을때, 클라이언트는 로드밸런서의 존재를 알지 못한다.사용자가 api를 호출할 때 마다 request에다 method도 입력해서 보내는 것 보다, api자체를 여러 개로 나누어 관리하는 것이 유저 입장에서 편리할 것이.. 2025. 1. 26.
apache jmeter로 부하테스트 해보기 2025.01.23 - [개인 공부용 프로젝트/loadbalancer.project] - 로드밸런서의 동시성 문제 해결을 위한 각종 플랜ㄴ이 글에서 이어집니다 이전 부하테스트가 왜 실패했는가를 생각해보았는데 그건 부하테스트가 아니었다초당 100건으로 부하테스트라니 내가 생각해도 웃기긴 하다그래서 오늘 상당한 과부하를 일으킬거기 때문에 내 노트북에서 테스트할 순 없고 이놈이 희생해야겠다도커에다 로드밸런서를 올리고,도커내부의 같은 네트워크 안에서 실행되기에 서버 주소도 로컬호스트에서 도커내부의 주소로 바꿔주었다인식이 잘 된다 바로 부하테스트를 진행해보자 오늘은 모두 같은 플랜으로 하기보다는, 부하를 점점 늘려서 한계치를 테스트 해볼 계획이다.우선 우리 도커가 튼튼하리라 믿고 초당 10만의 사용자를 보내보자1.. 2025. 1. 25.
Blocked(프로세스의 생명주기) %%%주제에서 벗어난 내용이 많습니다. OS랑 스프링 부트 짬뽕됨발표 영상https://youtu.be/fACYx1TA7vE?si=oKvum3Za_MbUUJp- 발표 자료https://www.slideshare.net/secret/zdkpA32BjM0f8y Private Presentation프로세스의 생명주기 blocked와 백엔드 대용량트래픽 개발의 이해 발표 - Download as a PDF or view online for freewww.slideshare.net 2025. 1. 24.
로드밸런서의 동시성 문제 해결을 위한 각종 플랜 2025.01.17 - [개인 공부용 프로젝트/loadbalancer.project] - 직접 만든 로드밸런서로 다중인스턴스 관리하기지난 로드밸런서 글에서, synchronized와 atomic변수의 차이를 개념적으로 알아보았다면이번에는 concurrentHashMap과 threadLocal을 이용한 전략도 추가하고, 부하테스트를 진행해서 4가지 방법의 차이를 몸소 느껴보자  synchronizedpublic class RoundRobinSynchronized implements LoadBalancerStrategy { private int currentIndex = 0; @Override public synchronized String getNextServer(List healthySe.. 2025. 1. 23.
내 애기 로드밸런서가 드디어 숨을 쉬어요 https://github.com/roqkfchqh/loadbalancer GitHub - roqkfchqh/loadbalancerContribute to roqkfchqh/loadbalancer development by creating an account on GitHub.github.com10시간 걸렸다대충 깡통 스프링부트 프로젝트를 생성하고 헬스체킹용 컨트롤러 클래스 메서드를 추가한다근데 깡통으로 하는데 왜 10시간 걸렸냐면 아웃소싱 프로젝트로 실험하겠다고 욕심부렸다가 8시간날렸다리눅스놋북으로 환경이 바뀌어서 db쪽에서 계속 에러나서(알고보니까 이것도 ㅋ sql ddl auto설정 안 했었음 멍청이)깔끔히 포기하고 로드밸런서만 확인하는쪽으로 틀었다services: app1: containe.. 2025. 1. 21.
직접 만든 로드밸런서로 다중인스턴스 관리하기 로드밸런싱은 서버에 가해지는 부하(로드)를 분산(밸런싱) 해주는 기술이다. 클라이언트와 서버 풀 사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해서 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 해준다. ELB로 그냥 사용하면 되지만 어떻게 모르고 사용할 수 있겠는가 싶어서(사실 튜터님한테 과제받음 ㅋ) 직접 구현해보고, 어떤 식으로 흘러가는지 알아보도록 하자. 내가 구현할 로드밸런서는 모듈화된 단 하나의 로드밸런서고, 어떤 프로젝트에든 적용해볼수있는걸로 만들어보자.@Slf4j@Componentpublic class LoadBalancer { private final HealthCheckService healthCheckService; private int curren.. 2025. 1. 20.