[컴퓨터 구조] 명령어 파이프라이닝
·
CS/컴퓨터 구조
오늘은 CPU의 프로그램 처리 속도를 향상시키는 명령어 파이프 라이닝에 대해서 알아보겠습니다.1. 명령어 파이프라이닝1) 명령어 파이프라이닝 개요CPU의 성능은 컴퓨터시스템의 프로그램 처리 시간에 직접 영향을 주기 때문에, 그 속도를 향상시키기 위한 여러가지 방법들이 사용됩니다.그중 가장 간단하고 효과적인 방법이 명령어 파이프라이닝 입니다. 명령어를 실행하는데 사용되는 하드웨어를 여러 개의 독립적인 단계(stage)들로 분할하고, 동시에 서로 다른 명령어들을 처리하도록 함으로써 CPU의 성능을 높여주는 기술 입니다. 명령어 파이프라인은 분할되는 단계의 수가 많아질 수록 그 속도가 높아지는 특징이 있습니다.명령어 파이프라이닝(instruction pipelining): 명령어 실행에 사용되는 하드웨어를 여..
[컴퓨터 구조] CPU의 구조와 명령어 실행
·
CS/컴퓨터 구조
오늘은 CPU의 구조와 명령어 실행 사이클에 대해서 알아보겠습니다.1. CPU의 구조1) 프로그램 수행 동작CPU는 기억장치에 저장되어 있는 프로그램 코드인 명령어를 실행함으로써 프로그램 수행이라는 기본적인 기능을 수행합니다.프로그램을 수행할때의 세부적인 동작을 순서대로 나열해보겠습니다.명령어 인출: 기억장치로부터 명령어를 읽어옴명령어 해독: 수행해야 할 동작을 결정하기 위해 명령어를 해독데이터 인출: 명령어 실행을 위해 데이터가 필요한 경우, 데이터를 기억장치나 I/O 장치로부터 데이터를 가져옴데이터 처리: 데이터에 대한 산술적 혹은 논리적 연산 수행데이터 저장: 수행한 결과를 저장명령어 인출과 해독은 모든 명령어들에 공통된 동작입니다. 나머지 3가지 동작은 명령어에 따라 수행됩니다.2) CPU의 기본..
[컴퓨터 구조] 컴퓨터의 발전 과정
·
CS/컴퓨터 구조
오늘은 컴퓨터의 발전과정과 동향에 대해 알아보겠습니다.1. 초기의 컴퓨터처리속도가 빨라지고 저장용량이 크게 증가하는 등 컴퓨터는 빠르게 발전하고 있습니다.중요한점은 근본적인 설계 개념은 크게 바뀌지 않았다는 점 입니다. 모체가 되는 초기의 컴퓨터를 알아보겠습니다.1) IAS 컴퓨터와 폰노이만 구조Stored-program은 폰노이만에 의해 제안된 개념입니다. 이는 프로그램과 데이터를 기억장치에 저장하고 변경함으로써 훨씬 편리하게 컴퓨터를 사용할 수 있게 하였습니다.설계 개념은 다음과 같습니다.2진수 체계 사용프로그램과 데이터를 내부에 저장이러한 설계개념을 적용한 컴퓨터는 IAS컴퓨터로 그 이후에 출현한 모든 일반목적용 컴퓨터들의 기본형이 되었습니다.IAS 컴퓨터 : 폰노이만 설계개념을 적용하여 프로그램 ..
[컴퓨터 구조] 컴퓨터의 기본 구조, 정보의 표현과 저장, 시스템의 구성
·
CS/컴퓨터 구조
얼마전에 깨달은 바가 있어서 CS 공부를 깊게 시작해보려고 합니다.먼저 컴퓨터 구조를 공부해 볼 생각이고 해당 교재를 사용했습니다.오늘은 컴퓨터의 기본구조, 정보의 표현과 저장, 시스템의 구성에 대해 공부해 보았습니다.1. 컴퓨터의 기본구조1) 하드웨어와 소프트웨어컴퓨터 시스템은 하드웨어와 시스템 소프트웨어로 구성됩니다. 시스템에 각종 응용 소프트웨어들이 탑재되어 사용자와 상호작용하면서 프로그램을 처리합니다.프로그램 형태로 주어지는 작업(Job)을 수행하기 위해서 전기적 신호들을 가지고 새로운 정보를 생성해야 합니다.이때 각종 정보의 전송통로를 제공하고, 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체들을 하드웨어라고 합니다.하드웨어: 컴퓨터에서 정보를 처리하는 물리적 실체 하드웨어의 구성요소를 ..
[Infra] Grafana, Loki로 Docker 컨테이너 모니터링 하기, 로그 모니터링 시스템 구축하기
·
Infra
블로그에 새로운 스킨을 적용해봤습니다.적응 안되긴하는데 조금씩 커스텀해가면서 사용해보려고합니다.1. 배경 및 목표여러가지 문제가 있었습니다.기존에는 docker logs와 grep을 활용하여 컨테이너 로그를 확인하곤 하였습니다.CLI 환경에서 로그를 확인하는것이 불편하고 원하는 내용만 필터링하기 어려웠습니다. 로그백을 활용하여 error 로그만을 저장하고 확인하였지만 의미있는 내용을 탐색하기 쉽지 않았습니다.또한 Blue, Green 방식의 무중단 배포를 적용하였고 번갈아 올라오는 두 컨테이너의 로그를 한번에 확인하고 저장하여야 하였습니다. 이러한 애로사항을 해결하기 위해 설정한 목표는 다음과 같습니다.Docker 컨테이너의 로그를 사용로그를 저장하여 관리Blue, Green 두 컨테이너의 로그를 하나로..
[Infra] Docker Certbot 인증서 발급 에러, Connection refused status: 400 에러, docker compose certbot 에러
·
Infra
요즘 회사 서비스에 blue, green 무중단 배포를 적용하고 있습니다.오늘 터진 문제는 개발 환경을 만드는 상황에서 터진 문제입니다. 문제docker compose를 이용해 Let's encrypt 인증을 받고, nginx를 띄우려는데 400에러가 발생하였습니다.docker-compose 파일에는 spring project, nginx, certbot, redis 컨테이너에 대한 내용이 있었습니다.docker-compose.yml, nginx.conf 파일을 도메인 부분을 변경하는 등 테스트 환경에 맞게 수정 후 실행했습니다.docker ps 명령어로 제대로 작동하는지 확인했지만 nginx에서 문제가 발생하는듯 했습니다. 자꾸 nginx가 재시작 하고있었습니다.nginx 로그를 확인했습니다.로그를 확..
[Spring] Failed to load driver class org.mariadb.jdbc.Driver 에러
·
WEB/Spring
오늘도 일하면서 터진 문제입니다.언제나 처럼 제 포스팅은 적용 방법만 보시고, 어떤 상황에 적용할지는 고민을 좀 더 하셨으면 좋겠습니다.사용중인 기술은 다음과 같습니다.Java 21Spring Boot 3.2.1JPAGradleMariaDB문제 잘 작동하던 로컬 프로젝트가 갑자기 작동하지 않았습니다.설정이 바뀐것도 없었고 거의 동일한 설정의 운영서버도 제대로 돌아가고 있었습니다.콘솔에 뜨는 오류는 다음과 같았습니다. Failed to load driver class org.mariadb.jdbc.Driver이 문제의 핵심인 것 같았습니다.빌드나 실행 과정에서 MariaDB JDBC 드라이버를 찾지 못했다는 뜻이였습니다. 설정이 바뀐게 없어서 DB에 문제가 있나 확인했습니다.먼저 Docker 컨테이너를 확..
[Spring, JPA] @OrderBy로 정렬하기, OneToMany 특정 칼럼 기준 정렬
·
WEB/Spring
일하면서 터진 문제 중, 올려도 될만한 문제들을 포스팅하려고 합니다.제 포스팅은 적용 방법만 보시고, 어떤 상황에 적용할지는 고민을 좀 더 하셨으면 좋겠습니다.취준생일때나 개인 프로젝트 할때 보시면 크게 문제는 안될것같습니다배경 @OneToMany 관계로 매핑된 엔티티를 조회할 때, 정렬 순서가 중요한 요구사항이 생겼습니다.HappyStair Entity는 여러개의 HappyStairTarget을 가지고 있습니다. 즉 OneToMany 관계입니다.HappyStairTarget은 orders라는 칼럼을 가지고 있고 이는 순서를 나타냅니다.항상 이 orders를 기준으로 정렬된 상태로 가지고 와야하는 상황입니다. 처음에는 List을 가져온 뒤 Collections.sort()를 사용하였지만 매번 사용하는것..