3. 운영체제 (2)
·
Study/CS
CPU 스케줄링운영체제는 다양한 프로세스와 스레드에 CPU의 사용을 배분함으로써 CPU의 자원을 관리→ CPU 스케줄링프로세스와 스레드 모두 CPU의 스케줄링의 대상.실행의 문맥을 가지고 있으면 모두 스케줄링이 가능하기 때문 우선순위운영체제는 프로세스별 우선순위를 판단하여 PCB(Process Control Block)에 명시우선순위가 높은 프로세스에 CPU를 더 빨리, 더 많이 할당 기준CPU 활용률: 전체 CPU의 가동 시간 중 작업을 처리하는 시간의 비율운영체제는 높은 CPU 활용률 유지를 위해 입출력이 많은 프로세스의 우선순위를 높게 유지프로세스들은 CPU와 입출력장치를 모두 사용해 실행과 대기를 반복CPU 버스트: CPU를 사용하는 작업I/O 버스트: 입출력 장치를 기다리는 작업해당 프로세스가 ..
3. 운영체제 (1)
·
Study/CS
운영체제운영체제란?운영체제란, 사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어이다.운영체제는 윈도우와 맥OS, 리눅스 안드로이드와 IOS 처럼 조율를 막론하고 제공하는 핵심적인 기능은 비슷하다.이러한 운영체제의 핵심 기능을 담당하는 부분은 바로 커널운영체제에는 크게 두가지 핵심 기능이 있다.자원 할당 및 관리프로세스 및 스레드 관리운영체제의 역할자원 할당 및 관리가 무엇인지 알아보기 전에 자원이 무엇인지에 대해 알아 볼 필요가 있다.자원이란, 프로그램 실행에 마땅히 필요한 요소실행에 필요한 ‘데이터’를 자원이라고 하기도 하고 ‘부품’을 자원이라고도 한다. 운영체제는 사용자가 실행하는 응용 프로그램을 대신해 CPU, 메모리와 같은 하드웨어에 접근하고,..
[Spring Boot] '멀티 모듈이.. 뭐지..?' - 멀티 모듈 적용기(1)
·
Tech/Develop
서론지난 프로젝트에서 도메인 설계와 아키텍처 설계 모두 실패를 겪어 리팩토링을 진행하고 있습니다. 흐름을 제대로 알지 못한 채 헥사고날과 같은 디자인 패턴에만 현혹되어 의미를 알 수 없는 프로젝트가 되어버려 이를 처음부터 리팩토링하고자 시작된 프로젝트입니다. 그런데 왜 갑자기 멀티 모듈이 되었냐? 이번에도 디자인 패턴에 현혹된 것이 아닙니다. CQRS 패턴을 적용하고자 시작부터 MSA로 잘게 쪼개어 복잡성만 증가하고 의미가 퇴색되었던 프로젝트를 모놀리식 멀티 모듈로 재구성하여 점진적으로 확장하는 이야기를 적고자 포스팅을 시작했습니다. 아직 해보지 않아 멀티 모듈이 정답인지 아닌지는 알 수 없습니다. 또한, 모듈을 분리하고 제약하는 데 있어 부족한 점이 많을 수 있습니다. 지나가다가 읽어보신다면 부족한 점..
2. 컴퓨터 구조 (2)
·
Study/CS
메모리RAM(Random Access Memory) 임의 접근 메모리실행 중인 데이터와 명령어가 담겨져있는 휘발성 저장장치RAM의 용량이 작으면 ?보조기억장치로부터 실행할 프로그램을 가지고 오는 일이 잦아져 실행 시간이 길어짐RAM의 용량이 크다고 해서 성능이 향상되는 것은 아님메모리는 1~100까지 순회할 필요 없이 곧장 100번지로 접근이 가능한 ‘직접 접근’을 할 수 있음RAM의 종류DRAMDynamic RAM의 약자, 저장된 데이터가 동적으로 변하는 특성시간이 지나면 저장된 데이터가 점차 사라짐일정 주기로 데이터를 재활성화(재저장) 해야함전력효율이 높고, 저렴, 집적도(작아도 효율이 좋음) 높음SRAMStatic RAM의 약자, 저장된 데이터가 변하지 않는 RAM시간이 지나도 데이터 보존전원이 꺼..
2. 컴퓨터 구조 (1)
·
Study/CS
컴퓨터가 이해하는 정보컴퓨터가 이해하는 정보는데이터숫자, 문자 등 정적인 정보명령어에 종속적인 정보명령어수행할 동작수행할 대상컴퓨터의 핵심 부품CPU(Central Processing Unit)CPU는 정보를 읽어들이고, 해석하고, 실행하는 부품구성ALU (산술논리연산장치)Control Unit (제어장치)레지스터이 중, CPU가 처리하는 명령어는 반드시 레지스터에 저장된다.메모리 & 캐시 메모리메인 메모리메모리는 현재 ‘실행 중’인 프로그램을 구성하는 데이터와 명령어를 저장하는 부품즉, 프로그램이 실행되려면 프로그램을 이루는 데이터와 명령어가 메모리에 저장되어 있어야 한다.메모리는 ‘주소’를 통해 저장되어 CPU가 원하는 정보로 접근을 빠르게 할 수 있다.메모리는 전원이 공급되지 않을 때 저장하고 있는..
MSA 환경 CQRS 패턴 적용기 - (2) 프로젝트에 적용해보기
·
Tech/Develop
프로젝트 간단 소개평소 개발자들이 코드 리뷰를 위해 사용하던 깃허브나 슬랙보다 조금 더 새내기 개발자들이나 코드 리뷰에 있어서 좋은 경험을 해보고 싶은 개발자들을 위해 지원하는 코드리뷰 원페이지 플랫폼으로 하이라이트, 댓글 등등 다양한 방법으로 코드 리뷰를 진행할 수 있는 플랫폼!우리 프로젝트에 맞는 기술일까?실무에서 진행하는 프로젝트가 아닌 어떻게 보면 성장을 하기 위한 프로젝트이기 때문에 하면 당연히 좋겠지라고 생각 할 수 있지만, 이 기술이 우리 프로젝트에 맞는 기술인지 따져보고 과도한 오버 엔지니어링이 아닌지 검증해 볼 필요도 있다고 생각했다.기획 단계에서 부터 요구사항 부분으로 많은 조회 요청을 사용자들이 불편함을 느끼지 않도록 빠르게 처리할 수 있는 시스템이 필요로 했었는데, 설계 단계에서 이..
MSA 환경 CQRS 패턴 적용기 - (1) CQRS
·
Tech/Develop
적용하게 된 계기2023 Smilegate Dev Camp를 참여하면서 진행하게 된 프로젝트에서 아키텍처를 설계하는 과정에서 Create, Update, Delete 요청에 비해 많은 Read 요청을 감당하기 위해 어떻게 해결할지 고민하다가 CQRS 패턴을 적용해 보기로 했다.CQRSCQRS는 CRUD에서 조회를 하는 부분인 Read를 다른 CUD에서 독립시켜 읽기 성능을 높이자는 취지에서 나온 패턴으로Command Query Responsibility Segregation의 약자로 명령(Command)과 질의(Query)의 분리를 의미한다.Command 모델과 Query 모델의 책임을 분리함에 따라 성능상의 이점을 가져갈 수 있다. ex) 필요에 따른 Query 모델 Scale-outCQRS의 단계CQ..