반응형 cs9 [OS] 프로세스 프로세스는 실행 중인 프로그램을 의미합니다. 프로그램을 실행하면 운영체제로부터 시스템 자원을 할당받아 고유한 메모리 영역을 가지게 됩니다. 시분할 시스템 환경에서는 프로세스가 번갈아가며 수행되는데, CPU를 확보했을 때 이전 작업을 복구하기 위해 프로세스의 문맥 정보를 활용합니다. 프로세스의 문맥은 다음과 같은 정보를 가집니다. 주소 공간(코드, 데이터, 스택) 레지스터 값 시스템 콜 등을 통해 커널에서 수행한 일의 상태 커널이 관리하고 있는 각종 정보 프로세스의 상태 프로세스의 상태는 다음과 같으며, 하나의 프로세스는 하나의 상태에 머물러 있게 됩니다. 구분 설명 실행(running) 프로세스가 CPU를 확보하여 기계어 명령을 실행하고 있는 상태 준비(ready) CPU를 확보하지 못한 상태. CPU를.. 2022. 8. 29. [Network] Proxy & Gateway HTTP는 프록시(Proxy) 또는 게이트웨이(Gateway)를 통해 통신을 중계하거나 서버를 연계할 수 있습니다. 이를 통해 요청을 받은 서버가 다른 서버에 요청을 중계할 수 있고, 해당 서버로부터 받은 응답을 클라이언트로 전달할 수 있습니다. 프록시(Proxy) 프록시는 클라이언트와 서버 사이에 대리로 통신을 수행하는 것을 말하며, 이러한 프록시를 수행하는 서버를 프록시 서버라고 합니다. 프록시 사용을 통해 얻을 수 있는 이점은 다음과 같습니다. 캐시를 통한 리소스에 대한 빠른 접근 특정 리소스에 대한 접근 차단 클라이언트 또는 서버 정보 숨김 처리 모니터링 보안성 향상 프록시는 용도에 따라 다음과 같이 구분할 수 있습니다. 용도 설명 캐싱 프록시 이전 요청에 대한 응답 데이터를 보관합니다. 동일한 .. 2022. 8. 20. [Network] HTTP 메시지 HTTP 메시지는 클라이언트 서버 간 데이터를 교환하는 방식입니다. HTTP 메시지는 요청 메시지와 응답 메시지로 나뉩니다. 각 메시지의 역할은 다음과 같습니다. 구분 역할 요청 메시지 클라이언트가 서버에게 특정 동작을 취하도록 요청하는 것 응답 메시지 요청에 대한 서버의 답변 HTTP 메시지는 개행 문자를 기준으로 헤더와 바디로 나뉘는데, 바디는 생략될 수 있습니다. 메시지 헤더 ────────────────────── 개행 문자 (CR + LF) ────────────────────── 메시지 바디 (생략 가능) 헤더, 개행 문자, 바디의 역할은 다음과 같습니다. 구분 역할 헤더 요청 또는 응답에 대한 정보와 바디에 대한 정보를 가집니다. 개행 문자 더 이상 헤더 정보가 없음을 의미합니다. 바디 요청.. 2022. 8. 13. [OS] 프로세스 vs 스레드 프로세스 프로세스는 실행 중인 프로그램을 의미하며 작업의 단위입니다. 프로그램 : 저장 장치에 저장되어 있는 파일 프로그램을 실행하면 운영체제로부터 시스템 자원을 할당받아 고유한 메모리 영역을 가지게 됩니다. 시스템 자원은 다음과 같습니다. CPU 시간 프로그램 실행을 위한 메모리 주소 공간 Code, Data, Stack, Heap의 구조로 된 메모리 영역 프로세스 특징 최소 1개의 스레드를 가지고 있다. 각 프로세스는 독립된 주소 공간에서 실행된다. 한 프로세스는 다른 프로세스의 변수, 데이터 구조에 접근할 수 없다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC)을 사용해야 한다. 멀티 프로세스 멀티 프로세스는 하나의 프로그램을 여러 개의 프로세스로 나누고 각 프로세스가.. 2022. 7. 21. [Database] NoSQL NoSQL 등장 배경 과거에는 비즈니스 모델이 다양하지 않았습니다. 대부분의 비즈니스 모델은 기업이 상품을 생산하고 고객에게 판매하는 것이었습니다. 이러한 비즈니스 모델에서 생성되는 데이터는 다음과 같은 특징을 가지고 있습니다. 데이터가 단순하지 않다. 데이터의 양이 많지 않다. 이러한 특징을 갖는 데이터를 관계형 데이터베이스를 관리해왔는데 그로 인해 얻을 수 있는 이점은 다음과 같습니다. 데이터는 항상 일관성을 유지한다. 데이터를 갱신할 경우 해당 데이터가 존재하는 테이블에서만 갱신하면 된다. 다양한 데이터(상품, 고객, 주문 등)의 관계를 정의하고 정규화를 통해 중복을 최소화할 수 있다. 대부분의 비즈니스 모델에서 관계형 데이터베이스는 좋은 선택지가 되어왔습니다. 그런데 2000년대에 들어 새로운 종.. 2022. 6. 22. [Database] 트랜잭션 격리 수준 트랜잭션 격리 수준은 여러 트랜잭션이 동시에 수행될 때 한 트랜잭션에서 갱신된 데이터를 다른 트랜잭션에서 조회 시 어떻게 보일지를 결정하는 기준입니다. 데이터베이스의 격리 수준은 Read Uncommitted, Read Committed, Repeatable Read, Serializable 4가지로 나뉩니다. 뒤로 갈수록 트랜잭션 간의 격리 수준은 높아지고 동시 처리 성능은 낮아집니다. 하지만 Serializable 격리 수준이 아니라면 성능의 저하는 크지 않습니다. 일반적으로 Read Committed, Repeatable Read 격리 수준을 사용합니다. MySQL의 경우 디폴트 격리 수준이 Repeatable Read 입니다. 격리 수준에 따른 데이터 부정합 문제 각 격리 수준에 따라 3가지의 데.. 2022. 6. 7. [WEB] 3 Tier Architecture 3 Tier Architecture 장점 각 계층은 독립된 OS, Server에서 실행될 수 있습니다. 특정 계층을 독립적으로 확장할 수 있습니다. 특정 계층의 장애가 다른 계층에 크게 영향을 끼치지 않습니다. Presentation 계층과 Data 계층은 직접 통신할 수 없으므로 중간의 Application 계층이 방화벽의 역할을 수행하여 악의적인 행위를 방지할 수 있습니다. 단점 1 Tier, 2 Tier Architecture에 비해 관리 비용이 증가됩니다. 장애가 발생할 수 있는 포인트가 증가됩니다. 애플리케이션 규모에 따라 계층 구조를 고려해야 합니다. Presentation 계층 (Web Server) Presentation 계층은 사용자가 애플리케이션과 상호작용하는 사용자 인터페이스 및 통신.. 2022. 5. 24. [Database] 트랜잭션 트랜잭션 트랜잭션은 데이터베이스에서 처리되는 작업의 논리적 단위입니다. 삽입, 수정, 삭제 등 데이터 갱신을 위해 복수의 연산를 수행할 때 이러한 연산들을 한 단위로 묶은 것이라고 할 수 있습니다. 트랜잭션은 작업을 마치고 Commit 되거나 Rollback 되어야 합니다. ACID 특성 트랜잭션은 네 가지 특성으로 정의되며 이를 ACID 특성이라고 합니다. 원자성(Atomicity) 데이터를 갱신하는 복수의 연산이 모두 반영되거나 반영되지 않아야 합니다. 모든 연산은 완벽히 수행되어야 하고 하나라도 오류가 발생하면 모든 연산이 취소되어야 합니다. eg. 기차표 예매를 예시로 들어보겠습니다. 기차 좌석을 예약하고 결제를 시도합니다. 이 때 결제 승인에 실패하게 되면 결제가 취소되고 기차 좌석 예약도 취소.. 2022. 5. 10. [WEB] JWT Session의 문제점 클라이언트의 인증 방식으로 Session을 사용하는 경우 여러 문제점이 발생할 수 있다. 메모리 용량 부족 Session은 일반적으로 server의 메모리에 저장되는데 동시 접속자가 많을 경우 메모리가 부족해질 수 있다. 중복된 Session 정보 서버가 여러 대로 증설되는 경우 클라이언트의 요청을 처리하는 서버가 매번 달라질 수 있다. 첫 번째 요청을 서버 A가 수행하면 서버 A의 메모리에 Session 정보가 저장된다. 두 번째 요청을 하였을 때 서버 A의 부하가 높아 서버 B가 요청을 처리할 수 있는데, 이때 서버 B에는 클라이언트의 Session 정보가 없으므로 새롭게 Session을 생성한다. 즉, 중복된 Session 정보가 생기는 것이다. 새롭게 Session을 생성하.. 2022. 4. 26. 이전 1 다음 반응형