Scatch note
Category – tech
29 posts tagged with "tech" (See all categories)

OS 독자/저자문제와 생산자/소비자 문제 및 해결

2023-04-162 Min Read — In tech

이번 글에서는 앞서 공부한 세마포어를 바탕으로, 대표적으로 알려진 동시성 문제를 다룹니다. 세마포어에 대해서는 이전 글을 참고해주세요. Producer-Consumer Problem Reader-Writer Problem //Dinning Philosopher’s Problem Producer-Consumer 문제 배경지식: Ring Buffer 생산자 소비자 구조에서 자주 사용되는 Ring Buffer구조는 Circular Queue…

운영체제 데드락과 예방,회피,복구

2023-04-162 Min Read — In tech

데드락이란? 할당받을 수 없는 자원을 요청해 더이상 실행할 수 없는 상태 프로세스 A,B는 리스소 X,Y를 가지고있어야 진행이 가능합니다. 하지만 A,B가 각각 Y,X를 점유하고 X,Y를 요청한다면, 영원히 X,Y를 동시에 획득하지 못하는 상황이 발생합니다. DeadLock drawio 운영체제에는 다양한 자원을 복잡한 방법으로 할당받아 사용하기에, 위와 같은 경우라고 해서 무조건 데드락이 발생하지는 않고, E.G 코프만 교수가 아래…

운영체제 세마포어 원리

2023-04-022 Min Read — In tech

앞서 TAS를 통한 Atomic한 락 설정 방법을 공부했습니다. Atomic한 락 설정을 통해 Preemption으로 인한 이상현상 없이 임계구역을 보호하기 위해 운영체제는 몇가지 방법들을 사용합니다. 세마포어 세마포어란, 다익스트라가 제안한 알고리즘으로, Busy Waiting으로 인한 성능저하 문제를 해결합니다. 기본적인 동작방법 세마포어는 세마포어변수 S와 P,V연산으로 이뤄집니다. 세마포어 변수인 S…

운영체제 멀티스레드와 동시성 문제

2023-03-224 Min Read — In tech

Thread와 동작원리 <이미지 출처 https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/korean > Thread는 Process 내에서 분기하는 또 다른 실행 흐름입니다. 주소공간 멀티스레드 환경에서 프로세스의 주소공간은, 스레드의 개수만큼 스택 공간이 필요합니다. 이를 Thread-local, 또는 Thread-stack…

페이지 교체와 정책 (Swap)

2023-03-092 Min Read — In tech

물리메모리를 필요로 하는 프로세스가 N개 있다고 가정합시다. N개의 프로세스는 각각 꽤 큰 크기의 물리메모리를 필요로 해서 프로세스들이 필요한 가상공간의 크기 총 합이 물리메모리의 크기보다 커지면 우리는 N개의 프로그램을 동시에 실행하지 못할 것입니다. Swap Space 이러한 물리메모리의 크기 한계를 극복하기 위해 HDD,SSD 등 보조기억장치를 임시 저장공간인 Swap Space로 사용합니다. 이런 Swap Space…

다양한 페이징 기법 [ Hybrid, Multi Level Paging]

2023-03-082 Min Read — In tech

페이징 기법의 문제점 앞선 글에서 소개한 페이징 기법에서는 페이지의 크기를 4KB로 가정했습니다. 그러나 현대에는 메모리의 크기가 4GB를 넘어 64GB까지도 사용됩니다. 이런 컴퓨터에서 4KB의 페이지를 사용한다면 페이지 개수가 10^6 ~ 10^…

세그멘테이션과 페이징 (+ 비교 )

2023-02-273 Min Read — In tech

불연속 메모리 할당기법 세그멘테이션, 페이징은 대표적인 불연속 메모리 할당기법입니다. 각각 세그먼트, 페이지라는 단위로 프로그램을 나누고 페이지/세그먼트 테이블을 통해 가상/물리 메모리를 매핑, 연속적인 가상 주소공간을 사용할 수 있도록 합니다. 특징 및 연속 할당기법과의 차이 1 여전히 명령어는 가상주소를 기반으로 실행됩니다. Segmentation 프로그램을 의미있는 단위인 Heap, Stack, Code, Data…

연속메모리 할당과 주소 공간

2023-02-202 Min Read — In tech

프로세스에게 메모리를 할당해주는 방식의 발전과정과, CPU가 안전하게 메모리에 접근하기 위해 주소공간을 가상화하는 방법을 설명합니다. 주소공간 1 컴퓨터공학 수업들을 들으며 수없이 봐왔던 주소공간입니다. 이는 프로세스 하나가 실행될때 만들어지는 가상의 주소공간이고, 프로그램 코드 영역에서는…

기본 CPU 스케쥴링 [ FCFS, SJF, SRTF, RR]

2023-02-143 Min Read — In tech

개요 스케쥴링이란, CPU 자원을 계획에 따라 여러 프로세스에게 나누어주는 방법입니다. 여러가지 스케쥴링 항목에 대해 공부하기 전에, 왜 스케쥴러를 사용하는지에 대해 생각하면 더 편하게 이해할 수 있습니다. 앞서 공부한 프로세스의 상태 중, CPU를 할당받기 위해 Ready → Running 상태의 전이를 담당하는것이 스케쥴링입니다. 그래서 기본적으로 Ready Queue…

인터럽트와 제한된 직접 실행

2023-02-143 Min Read — In tech

OSTEP에서 본문에 해당하는 챕터 제목이 “Limited Directed Execution: 제한된 직접 실행 원리” 입니다. 책에서는 인터럽트의 한 종류인 trap에 대해서만 다루지만, 인터럽트에 대해 포괄적으로 알기 위해 관련내용도 정리했습니다. 제한된 직접실행 개요 먼저 Limited가 없는 직접 실행이라는 부분에 대해 알아보자면 , 운영체제가 프로그램의 실행에 관여하지 않고 CPU…

프로세스의 개념과 상태 변화

2023-02-063 Min Read — In tech

프로세스의 개념 프로세스는 프로그램이 실행중인 상태 라고 정의합니다. 프로그램 자체는 디스크에 적재되어있는 상태로, 아무런 동작을 하지 않습니다. 프로그램이 메모리에 적재되고, CPU를 점유해 사용하는 주체를 “프로세스”라고 합니다. 조금 더 구체적으로는 아래와 같이 정의할 수 있습니다. 커널에 등록되고 커널의 관리 하에 있는 작업 → 프로세스 관리 블록(PCB)을 할당받은 프로그램 각종 자원을 요청하고 할당받을 수 있는 개체 CPU…

Protocol Buffer 3 Spec정리

2023-02-012 Min Read — In tech

프로토콜 버퍼(Protocol Buffer)는 gRPC에서 데이터의 스키마를 정의하고 직렬화할때 사용하는 메커니즘입니다. google에서 개발했으며, *.proto형식의 메시지 뿐만 아니라, JSON등의 데이터를 직렬화할때도 사용되는 방식이고, gRPC에서 직렬화 방식으로 사용되고 있습니다. 프로토콜 버퍼가 gRPC에서 어떻게 동작하는지는 링크:이전 글을 참조해주세요 이 글에서는 Protocol Buffer3(Proto…

gRPC의 동작원리와 기본 개념

2023-01-232 Min Read — In tech

gRPC 개요 gRPC 소개, Pros & Cons MSA와 같은 분산 서비스 시스템에서 느슨한 결합과 효율적인통신을 위해 고안된 방법입니다. [+]gRPC는 Protocol Buffer 기반 바이너리 프로토콜을 사용해 기존 REST등에서 사용된 JSON,XML포맷의 text기반 통신 비효율을 해결합니다. [+] 아래의 HTTP/2 특징 위에서 구현되어 통신속도가 빠릅니다. Binary framing layer…

JPA 다대일, 일대다 매핑

2023-01-183 Min Read — In tech

이글에서는 다대일, 일대다 매핑과 연관관계의 주인에 대해 알아보겠습니다. 일대다, 다대일 관계 JPA의 일대다, 다대일에서는 항상 연관관계의 주인이 “다” 쪽이고, 외래키 역시 “다”쪽에서 관리합니다. 예를들어 Member와 Team이 있다면, 항상 Member가 Team을 참조할 수 있는 외래키를 가지고있는 것이죠. RDBMS…

JPA 연관관계 매핑 기초

2023-01-172 Min Read — In tech

테이블과 객체 사이에는 많은 패러다임 불일치가 있다고 앞선 챕터에서 설명했습니다. 그 중 가장 간극이 크다고 여겨지는 불일치중 하나는 연관관계의 참조에 대한 불일치 문제입니다. JPA가 이런 연관관계 참조 불일치 문제를 어떤 방식으로 해결하는지 살펴보겠습니다. 이번 챕터에서는 객체 연관관계 매핑의 기초적이고 개념적인 부분을 체크합니다. 실제 프로덕트에 개발을 고려하고있다면, [다음 글 링크] 를 확인하세요! JPA…

JPA에서 기본 키 매핑 방법 종류

2023-01-134 Min Read — In tech

JPA에서 엔티티와 데이터베이스의 기본 키(Primary Key) 매핑을 알아보겠습니다. 데이터베이스에는 유일성 최소성을 만족하는지 여부에 따라 몇가지 키 종류가 존재합니다.…

JPA에서 엔티티를 작성하는 방법

2023-01-084 Min Read — In tech

JPA에서 엔티티를 작성하는 방법 JPA에서 **엔티티(Entity)**는 관계형 데이터베이스의 테이블과 대응하며, JPA가 관리하는 클래스를 말합니다. 이는 Java 클래스로 선언하며, 보통 domain 패키지에 포함되고, 아래와 같이 구성됩니다 기본 엔티티 매핑 방법 @Entity JPA에서 테이블과 매핑할 클래스는 @Entity 애너테이션을 필수로 붙여야 합니다. @Entity…

패러다임 불일치 문제와 JPA를 사용하는 이유

2022-12-195 Min Read — In tech

JPA를 사용하는 이유와 패러다임 불일치 문제 기존 시스템들에서 어떤 방식을 통해 데이터를 접근했는지, 어떤 문제점들이 있었는지 살펴보고, JPA가 이를 어떻게 해결했는지 살펴봅시다. 목차 주제 1. JPA 등장 배경 SQL을 기반으로 구현했을 때의 문제점 패러다임 불일치 문제 상속,연관관계 참조, 객체그래프 탐색, 비교 불일치 JPA란? JPA의 장점 JPA의 탄생 배경: SQL을 직접 다룰 때 생기는 문제점 JPA…

Spring Framework의 IoC와 Bean이란

2022-11-174 Min Read — In tech

본 글은 Link: Spring 공식문서에서 1절을 읽고 궁금한점을 찾아보며 정리한 글입니다. 1.1 Introduction to the Spring IoC Container and Beans 1.2 Container Overview 1.3 Bean Overview ...and so on Spring IoC Container와 ApplicationContext IoC, Inversion of Control…

데이터베이스 인덱스

2022-10-171 Min Read — In tech

데이터베이스 인덱스 데이터베이스에서 인덱스란, 자료에 빠르게 접근하기 위해서 존재하는 데이터베이스 자료구조입니다. Index는 한국말로 색인,목차라는 의미를 가지는데, 두거운 책에서 원하는 내용을 찾기 위해 목차를 찾는것과 비슷하게 동작합니다. Index는 원하는 자료를 빠르게 찾기 위해서 여러 방법으로 구현할 수 있지만, 가장 많이 사용되는 MySQL의 InnoDB 기준으로 설명해보도록 하겠습니다. Clustered Index…

JVM의 Garbage Collector 동작방법

2022-09-232 Min Read — In tech

운영체제 Heap 메모리 영역에 접근해 사용하지 않는 Object를 정리해주는 JVM의 구성요소입니다. 개발자가 직접적으로 메모리 해제를 C/C++과 달리, JVM에서는 GC를 제공해 개발에만 집중하고, Memory Leak을 신경쓰지 않아도 됩니다. JVM은 다음과 같은 구성요소가 존재합니다. 실행엔진 : 자바 인터프리터(interpreter) ,JIT 컴파일러(Just-In Time compiler) 클래스 로더(class loader…

[Javascript Function] call, apply, bind 메서드

2020-08-142 Min Read — In tech

Intro 여기 링크에서도 자세한 설명을 확인할 수 있습니다. 함수의 메소드와 arguments: 제로초님 블로그 자바스크립트 this 바인딩 우선순위 : 김정환님 블로그 Function.prototype의 call, apply, bind 메서드, 공부를 해도 사용시에 헷갈릴때가 많아서 정리합니다..! call, apply Call과 Assign은 함수에 객체를 바인딩 후 호출하는 방법입니다. Javascript…

타입스크립트 핵심 Concepts! (번역)

2020-08-012 Min Read — In tech

본문은 Typescript 핵심 개념 을 번역(+ 개인적인 의견 추가)한 글입니다. OOP에 대한 기본 지식이 있으신 분은 Learn Typescript in Y minutes또는 MS 공식 DOCS에서 문법만 훑어보시면 좋습니다. 타입스크립트를 접했을때 드는 느낌은 OOP + Compile + javascript => typescript로 요약할 수 있겠습니다. typechecking, OOP개념이 분명하지 않은 Javscript(이하 JS…

[Continue,OS] 메모리파트 정리

2020-05-242 Min Read — In tech

주제 : 운영체제 메모리 관리: 물리메모리 할당 방식! 목차 연속 메모리 할당 고정 분할 방식 Fixed Allocation 가변 분할 방식 Variable Allocation 비연속 메모리 할당 세그멘테이션 Segmentation 페이징 Paging ---continue--- 페이징/세그멘테이션 혼합 페이지 요구 Demand Paging…

웹훅 (webhook)이 뭐야?, HTTP/2.0 Webpush 스펙 요약

2020-05-102 Min Read — In tech

Intro 오늘 소개할 주제는 webhook 입니다. 서비스를 배포하거나 관련 공부를 해보셨다면, github과 Jenkins같은 CI도구를 연동하며 github에서 푸쉬를 비롯한 특정 이벤트를 jenkins로 전달해주기 위해 연동해본 경험이 있습니다. 이때 github서버는 Jenkins가 별다른 요청을 하지 않아도 서버 내에서 특정 이벤트가 일어났을 때 Jenkins…

React.js 기초 튜터리얼, 개념 편 [1]

2019-09-123 Min Read — In tech

React.js 기초 튜터리얼을 학습하며 작성하는 글입니다. 오류가 있을 수 있으며, 이메일을 통한 오류 수정 환영합니다. JSX 위와 같은 문법으로 JSX를 작성한다. JSX는 Javascript의 String도 아니고, HTML역시 아닌데, JSX는 React Element를 생성하고, DOM에 렌더링한다. React.js의 컴포넌트 JSX의 중괄호 안에는 모든 Javascript 표현식이 들어갈 수 있다. 부연설명 - 이는 React…