OS - 멀티 프로세서
·
CS
컴퓨터 시스템은 사용중인 프로세서의 수에 다라 분류 가능한 다양한 방식이 존재한다. 본 포스팅에서는 Multi-Processor에 대해 공부한다. 읽기 앞서 Process 와 Processor 그리고 CPU 등의 용어 정리를 간단하게 정리한다. CPU : 명령을 처리하는 하드웨어 Processor : 하나 이상의 CPU를 포함하는 물리적인 칩 Process : 메인 메모리위에 load 되어 실행중인 프로그램 인스턴스를 의미 multi-core : 동일한 CPU에 여러개의 컴퓨팅 코어 multi-processor : 여러 프로세서를 포함하는 시스템 즉, CPU는 하나 혹은 그 이상의 코어를 포함하고 있는 하드웨어이고 프로세서는 그러한 CPU를 의미하며 멀티 프로세서는 여러 프로세스 즉, 하나의 시스템이 여..
OS - 메인 메모리와 입출력 장치
·
CS
저장장치의 구조 - 메인 메모리 CPU는 프로그램을 실행하기 위해선 먼저 해당 프로그램을 “메모리” 위에 올려놔야 한다. 이럴 때 흔히 얘기하는 “메모리”는 메인 메모리(RAM)을 뜻한다. 메모리는 바이트 형태의 배열을 띄고 있으며, 각 바이트는 그 자신의 주소를 갖고 있다. 이러한 메모리에 대한 명시적인 상호 작용은 크게 load 와 store로 나누어져 있다. 먼저 load는 메모리 위의 바이트들을 한 바이트씩 혹은 1 word 씩 CPU내부 레지스터로 옮기는 작업을 의미한다. store는 위의 반대로 레지스터에서 메모리로 옮기는 작업을 의미한다. 이렇게 메모리에 대한 명시적인 상호작용 외에 프로그램 카운터에 저장된 다음 명령에 대한 시작주소를 자동으로 load한다. 여기서 프로그램 카운터란 CPU ..
OS - OS가 할일, 컴퓨터 시스템구성
·
CS
운영체제가 할 일 전체 컴퓨터 시스템은 크게 4가지로 나뉜다. 하드웨어 운영체제 응용프로그램 사용자 여기서 하드웨어는 주로 CPU, 입출력 장치(모니터, 키보드 등) 계산용 자원을 제공하는 매개체 응용프로그램은 사용자의 문제를 해결하기 위해 위의 자원을 사용한다. 그럼 운영체제는? 운영체제는 다양한 응용프로그램간의 하드웨어 사용을 제어하는 역할을 수행한다. 시스템 관점에서의 운영체제 컴퓨터의 입장에서 운영체제는 가장 하드웨어와 밀접한 관계를 가진 프로그램이다. 이러한 운영체제는 다양한 하드웨어 자원에 대한 관리를 수행한다. 그런데 다양한 응용프로그램들을 사용하게 되면서, 이들 하드웨어 자원에 대한 요청이 아주 많아 질 때가 있다. 운영체제는 자원 관리자로서 효율적으로 어느요청에 어떤 자원을 할당할지를 선..
Nginx - 웹 서버와 WAS
·
Infra
Nginx는 흔히 WEB Server라고 알고 있다. 실제로 아래의 Nginx Docs 사이트에 정의된 바에 의하면 https://nginx.org/en/ nginx nginx nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev. For a long time, it has been running on many heavily loaded Russian sites including Yandex, Mail.Ru, VK, nginx.org " 엔진엑스는 HTTP 와 리버스 프록시 서버, 메일 프록시 서버 그..
Redis 설치부터 사용까지
·
DB
Redis 란? https://redis.io/ Redis Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker redis.io 위의 본문에 나온데로, 인 메모리 데이터 저장소로서 캐싱, 벡터 데이터, 문서 데이터, 스트리밍 엔진, 그리고 메시지 브로커로서 사용되는 오픈소스 추가적으로 key-value 쌍의 데이터베이스이다. 여기서 말하는 인 메모리 데이터 저장소란? 데이터 저장에 내부 메모리를 주로 사용하는 목적별 데이터베이스 즉, 우리 컴퓨터를 구성하는 개체 중 메인 메모리(RAM)에 해당된다. 따라서 보통의 데이터베이스는 하드디스크에 접근하여 ..
Jenkins 는 뭘까요
·
Infra
Jenkins는 널리 알려진 대로 CI / CD 툴이다. 그전에 CI(Continuous Intergration) / CD(Continuous Delivery)에 대해서 뭔지 대충이라도 알아봐야 한다. https://artist-developer.tistory.com/24 요약하자면 다음과 같다. CI : 지속적인 통합으로, 어플리케이션 개발 단계에서 자동으로 빌드하고 테스트하고 병합하는 과정을 뜻한다. CI를 사용하지 않는다고 가정한다면 단순히 GIT을 통해 커밋하고, 각자의 브랜치에서 작업된 상태를 수동으로 테스트하고, 수동으로 병합해야 한다. 이러한 CI의 주요 목적은 수동으로 하는 과정을 자동화 하여 결국 버그를 CI가 없는 환경보다 빨리 찾아서 빠르게 품질을 높이는 방법이 된다. CD: 지속적인..
JUnit
·
Web-Spring
JUnit 5 의 간단한 개념 아래의 링크를 참고 하였다. https://junit.org/junit5/ JUnit 5 The JUnit team uses GitHub for version control, project management, and CI. junit.org JUnit 5는 JVM을 테스팅 하기위한 개발자에게 제공하는 테스팅 프레임워크 이다. JUnit의이전 버전들과는 달리 Junit5는 세 가지 다른 특징으로 구성되어있다. JUnit 5 = JUnit Platform + JUnit jupiter + JUnit Vintage JUnit Platform JUnit Platform (이하 플렛폼) 은 JVM에 대한 테스팅 프레임워크를 실행하기 위한 기반을 제공한다. 또한 플렛폼 위에서 동작하는..
mybatis & hikari 설정
·
Web-Spring
본 포스팅은 Spring boot 3.2.0, Java 17, MySQL을 기준으로 설명한다. 프로젝트 구조 pom.xml 4.0.0 org.springframework.boot spring-boot-starter-parent 3.2.0 com.khc demo 0.0.1-SNAPSHOT demo Demo project for Spring Boot 17 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-devtools runtime true org.springframework.boot spring-boot-starter-test test com.mysql mysql-connector-j 8.0.33 or..