[컴퓨터 구조] 명령어 세트
·
CS/컴퓨터 구조
오늘은 명령어 세트에 대해서 알아보겠습니다.1. 명령어 세트1) 명령어 세트 개요CPU의 기능은 명령어들에 의하여 결정됩니다. 명령어들의 종류와 수는 CPU마다 약간씩 다른데, 어떤 한 CPU를 위해 정의되어 있는 명령어들의 집합을 명령어 세트라고 합니다. 명령어 세트를 설계하기 위해서는 다음과 같은 사항들을 먼저 결정해야 합니다.연산 종류: CPU가 수행할 연산들의 수와 종류 및 복잡도데이터 유형: 연산이 수행될 데이터들의 유형, 데이터의 길이(비트 수)와 수의 표현 방식(정수, 부동소수점 수) 등명령어 형식: 명령어의 길이, 오퍼랜드 필드들의 개수와 길이 등주소지정 방식: 오퍼랜드의 주소를 지정하는 방식명령어 세트(instruction set): 한 CPU를 위해 정의되어 있는 명령어들의 집합오퍼랜드..
[Jenkins] Built-In Node 오프라인 에러, Disk space is below threshold of 1.00GiB
·
Infra
1. 문제1) 문제 상황Jenkins의 Built-In Node가 Disk space is below threshold 경고와 함께 오프라인 상태로 바뀌었습니다.빌드는 대기상태로 바뀌었고 Jenkins 화면에는 디스크 부족 경고가 떠 있었습니다. Jenkins의 내부 모니터링 로직이 /var/jenkins_home에 충분한 공간이 없다고 판단하고 오프라인 상태로 바꿔버린것 이었습니다.Jenkins로 빌드할때 주로 Docker를 사용하기에 Docker 사용상태를 확인해보았습니다.# docker 사용상태 확인docker system df  확인 결과 Build Cache가 엄청나게 쌓여있는것을 확인하였습니다. 2) 문제 발생 원인먼저 Docker로 이미지를 빌드할때는 레이어라는게 계층적으로 쌓여서 최종 이미..
[컴퓨터 구조] 명령어 파이프라이닝
·
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 로그를 확인했습니다.로그를 확..