728x90 개발공부 개발새발129 OS ) 동기화 도구 -> 락 (Mutex, 세마포) 프로세스가 병렬, 병행 실행될 때의 문제 상황프로세스는 “메모리”에서 “레지스터”로 데이터를 가져오고, “레지스터”에서 “메모리”로 다시 적재된다.예시병행 실행되는 프로세스 p1 과 p2 가 있다.두 프로세스 모두 공유 변수 count = 5 를 레지스터로 가져와 사용해야 한다.같은 메모리 주소에 있는 공유 변수를 프로세스가 점유하고 있는 각 코어의 레지스터로 가져온다.p1 은 count++ , p2 는 count— 를 실행한다.p1 은 count = 6 , p2 는 count = 4 로 연산하여 메모리에 적재 하려고 한다.이 경우 p1 이 먼저 작업을 끝내고 6으로 메모리를 업로드해도, 그 뒤에 실행된 p2 가 count=4 를 적재하면 p1이 계산한 기대값과 다른 상황이 발생한다.→ 이 상황을 경쟁 .. 2025. 1. 21. OS ) 스레드 Thread 스레드 Thread 구성스레드 IDPC레지스터 집합스택→ 스레드는 고유의 레지스터, 스택, 프로그램카운터를 가지고 있다.멀티스레드 웹 서버 구조웹 서버가 다중 스레드화 되면, 서버는 클라이언트의 요청을 listen 하는 별도의 스레드를 생성한다.요청이 들어오면 다른 프로세스를 생성하는 게 아니라, 요청을 서비스 할 새로운 스레드를 생성 → 또는 스레드 풀에서 스레드 할당하여 요청 위임.listen 하는 스레드는 요청을 listen 하는 작업을 재개한다.노드랑은 다름노드는 메인 스레드가 요청을 수신하긴 하지만 I/O 를 Non-Blocking 한다.스레드 모델은 스레드를 사용해서 Blocking 처리 해도 상관 없음.(어차피 요청 받는 애랑 실행하는 애랑 따로니까)→ 설계 철학 자체가 다름.그럼 스프링도 .. 2025. 1. 15. OS ) 가상화와 컨테이너 차이 컨테이너?실행에 필요한 모든 파일을 포함한 실행 환경(runtime)에서 애플리케이션을 패키징하고 격리할 수 있는 기술.호스트 운영체제와 커널을 공유하여 “경량화” → VM 없음.서로 다른 컨테이너는 독립적으로 실행되고, OS 운영체제와 “격리”하여 실행.컨테이너 이미지에 애플리케이션 환경을 포함 → 어떤 시스템에서든 동일하게 실행 가능.전체 기능은 유지하면서 컨테이너화 된 애플리케이션을 환경(개발, 테스트, 프로덕션 등)에 따라 쉽게 이동할 수 있음.프로세스 기반이라 빠르다.Docker 같은 컨테이너 플랫폼을 이용해 컨테이너를 쉽게 빌드, 배포, 실행 가능.동작 원리Namespace네임스페이스를 통해 프로세스, 파일시스템, 네트워크 등을 격리.Namespace 를 통해 각 컨테이너는 독립된 환경처럼 격.. 2025. 1. 14. HTTP 1.1 과 HTTP 2 의 차이 !? 프로토콜HTTP1.1텍스트 기반 프로토콜사람이 읽을 수 있는 방식HTTP2이진 프로토콜(Binary Format)데이터 전송이나 처리가 더 효율적.요청 처리 방식HTTP1.1하나의 TCP 연결에서 순차적으로 처리 함.HOL Blocking 문제 발생HTTP2멀티플렉싱단일 TCP 연결에서 여러 요청과 응답을 병렬로 처리.우선 순위 설정 가능각 스트림에 우선순위를 설정하여 중요한 데이터 먼저 전송 가능.서버 푸쉬서버가 클라이언트 요청 없이도 추가 데이터 푸시 가능.예) 클라이언트가 HTML 을 요청하면 연관된 JS, CSS 파일을 푸시.헤더 처리HTTP1.1요청마다 반복적으로 전체 헤더를 전송(불필요한 대역폭 사용)HTTP2HPACK 헤더 압축으로 중복 제거 및 전송 크기 감소.예시HTTP1.1클라이언트가 .. 2025. 1. 12. OS ) 시스템 콜 시스템 콜운영체제에 의해 사용 가능하게 된 서비스에 대한 인터페이스 제공일반적으로 하드웨어를 직접 접근하는 시스템 콜은, C 와 C++ 언어를 이용한 함수 형태로 제공된다.예제 ) 파일 데이터 읽어서 다른 파일로 복사하기프로그램이 필요한 첫 번째 입력은 두 개의 파일, 즉 “입력 파일”과 “출력 파일”의 이름일 것.명령의 일부로 두 파일 이름을 전달하는 것일 텐데..# 이 명령은 입력 파일 in.txt 를 출력 파일 out.txt 에 복사한다.cp in.txt out.txt두 번째 입력은 프로그램이 사용자에게 이름을 요청하는 것.대화형 시스템에서는 시스템 콜이 필요할 것이다.예) 화면에 프롬프트 메시지를 작성하고 키보드에서 두 파일 이름을 지정하는 문자를 읽고, 마우스나 아이콘 기반 시스템에서 파일 이름.. 2024. 12. 30. DB ) 트랜잭션과 스레드의 관계성, Isolation Level 트랜잭션이 종료될 때까지 “한 커넥션”을 계속 사용한다.그리고 일반적으로 “한 커넥션”은 “하나의 스레드”가 점유하여 처리한다.트랜잭션과 스레드의 관계동작트랜잭션은 일관성과 원자성을 보장하기 위해 시작(BEGIN) 부터 종료(COMMIT or ROLLBACK)를 하나의 작업 단위로 묶음.트랜잭션이 종료되기 전까지는 다른 작업이 해당 커넥션을 사용할 수 없음.커넥션은 트랜잭션 동안 고정트랜잭션이 시작되면, 애플리케이션은 “한 커넥션”을 고정하여 쿼리를 시작함.트랜잭션이 끝날 때까지 해당 커넥션은 다른 스레드나 작업에 할당되지 않음.하나의 스레드는 하나의 커넥션을..하나의 스레드는 하나의 커넥션을 점유한다.커넥션 풀을 사용한다면?트랜잭션이 종료된 후, 해당 커넥션은 풀로 반환 → 다른 스레드가 다시 커넥션을.. 2024. 12. 26. 이전 1 2 3 4 5 ··· 22 다음 728x90