일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Alembic
- 쿠베네티스
- 멀티스레드
- K8S
- 글또
- AWS
- uvicorn
- 쿠버네티스
- 분산처리
- SQLAlchemy
- 로드밸런서
- 가비지컬렉션
- 스레드풀
- Django
- nodejs
- 캐시서버
- 회고
- nestjs
- 스케줄링
- golang
- 2022년
- alb
- EKS
- Python
- 백엔드 개발자
- FastAPI
- CPU스케쥴링
- 싱글톤 디자인 패턴
- gunicorn
- 메모리구조
- Today
- Total
목록운영체제 (3)
서버에서 살아남기
메모리 구조 컴퓨터의 메모리 구조는 크게 코드, 데이터, 스택, 힙 영역으로 나뉘며 각 영역의 특성은 다음과 같습니다. 코드 영역 실행할 프로그램 코드가 저장되는 영역으로 CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리합니다. 함수, 제어문, 선언문 등의 코드가 저장됩니다. 컴파일 언어의 경우, 개발자가 작성한 원시 코드(프로그래밍 언어로 작성한 코드)를 기계어로 번역한 결과가 저장되는 영역입니다. python과 같은 인터프리터 언어의 경우는 개발자가 작성한 원시 코드가 먼저 바이트 코드로 컴파일 되고, 이 바이트 코드가 저장되는 영역입니다. 바이트 코드는 python 인터프리터가 이해하고 실행할 수 있는 중간 단계의 코드로 원시 코드를 CPU가 직접 해석하고 실행하는 기계어 코드로 변환하는 ..
개념 멀티 스레딩 환경에서 스레드들을 효율적으로 관리하는 기술입니다. 나의 경우 Django에서 pool을 별도로 관리하지 않고, threading 모듈로 멀티 스레딩만 구현한 상황 이 상황에서 생길 수 있는 문제 1) 대규모에 부적합 - 스레드 풀을 관리하고 있지 않기 때문에 효율적인 관리가 안됨 2) 데드락 가능성 - 스레드 간에 서로 의존성을 가지고 있다면 데드락이 발생 할 수 있습니다. - 데드락 : 멀티스레드나 멀티 프로세스 환경에서 두 개 이상의 작업이 서로 상대방의 작업이 끝나기를 기다리면서 무한 대기하는 상태 그렇다면 어떻게? 스레드풀을 이용하여 스레드들을 효율적으로 관리해야합니다. 미리 정해진 개수의 스레드들을 생성하고 관리하며, 작업이 들어오면 생성된 스레드들을 이용하여 작업을 처리하는..

1. 기본 개념 1-1. CPU 스케쥴러 메모리에 있는 프로세스들 중 실행할 준비가 되어 있는 ready 상태의 프로세스를 선택하고 그 프로세스에 CPU 를 할당하는 것입니다. 전형적인 프로세스는 하나의 프로세스가 입출력 완료되기를 기다리고 그 이후에 실행되는 메커니즘입니다. 그럼 입출력을 기다리는 대기시간 내내 아무것도 하지 못한 채 놀고 있게 되어 이런걸 생산적으로 하기위해 나온 것이 CPU 스케줄링입니다. 1-2. CPU 스케쥴링의 결정 한 프로세스가 실행 상태에서 대기 상태로 전환 될 때 (ex. 입출력 요청할 때) 프로세스가 실행 상태에서 준비완료 상태로 전환 될 때 (ex. 인터럽트 발생 할 때) 프로세스가 대기 상태에서 준비완료 상태로 전환 될 때 (ex. 입출력 종료됐을 때) 프로세스가 종..