Category: CS

0

[JAVA] - JVM (자바 가상 머신)

목차 [JAVA] - 가비지 컬렉션 튜닝 [JAVA] - Garbage Collection(가비지 컬렉션) [JAVA] - JVM (자바 가상 머신) JVM (자바 가상 머신) 자바 컴파일러에 의해 생성된 자바 바이트 코드(.class) 를 OS에 맞는 기계어로 변환해 실행할 수 있게 해준다.클래스 파일로 떨어질 수 있으면 어떤 언어라도 실행이 가능하다. (ex. kotlin) 자바 컴파일러에 의해 생성된 바이트 코드를 실행하는 표준이자 구현체다. JVM은 각 OS(운영체제) 에 맞게 설계가 돼 있다. 자바 바이트 코드만 있으면 JVM을 이용해 어느 운영체제에서나 실행이 가능하다. Stack 기반 가상 머신 JVM 구조 Class Loader, Memory, 실행 엔진(Execution Engine) 이 세가지로 구성 돼 있다.

0

컴파일 언어, 인터프리터 언어, 하이브리드 언어

컴파일 언어, 인터프리터 언어, 하이브리드 언어 객체 지향 3요소 객체 지향 설계 5원칙 SOLID 컴파일 언어, 인터프리터 언어, 하이브리드 언어컴파일 언어 고급 언어로 작성된 코드를 Compiler(컴파일러) 를 이용해 목적 코드 로 번역하는 과정을 거치는 언어좁은 의미에서는 소스 코드를 기계어 로 번역해주는 과정을 컴파일이라 한다. 프로그램을 한번에 번연한 후 실행한다. 한번에 모든 소스를 번역하기 때문에 메모리 사용량이 크다. 번역 속도가 느림 실행 속도는 빠름 번역과 실행이 따로 이뤄지기 때문에 실행 파일 (ex. .exe) 이 생성된다. C, C++ 언어가 대표적인 컴파일 언어다. 인터프리터 언어 컴파일 언어와는 다르게 소스코드를 원시코드(기계어)로 번역하는 과정을 거치지 않는 언어Interpreter(인터프리터) 를 이용해 한줄씩 읽어가면서 명령을 처리한다. 번역 속도가 빠름 실행 속도는 느림 번역과 실행이 한번에 이뤄지기 때문에 별도의 실행파일이 만들어지지 않는다. Python, Javascript 가 대표적인 인터프리터 언어다. 하이브리드 언어 컴파일 기법과 인터프리터 기법을 모두 사용하는 언어

0

객체 지향 설계 5원칙 SOLID

컴파일 언어, 인터프리터 언어, 하이브리드 언어 객체 지향 3요소 객체 지향 설계 5원칙 SOLID 객체 지향 설계 5원칙 SOLID1. SRP(Single Responsibility Principle) - 단일 책임 원칙한 클래스는 하나의 책임(역할)만 가져야 한다. 역할의 분리라고 생각하면 편하다!변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따르는 것 2. OCP(Open Close Principle) - 개방 폐쇄 원칙 확장 에는 열려 있으나 변경 에는 닫혀 있어야 한다. 기존 코드에 대한 수정은 직접적으로 하지 않고 기능을 확장, 추가 할 수 있도록 해야 한다. 인터페이스와 추상 클래스를 이용해 공통적인 작업에 대해 추상화 를 진행 상속과 구현을 이용해 기존 코드(상위 클래스)에 대한 수정 없이 기능을 확장시킬 수 있다. 이는 곧 다형성 을 이용한 기능 확장이다. OCP 문제점

0

트랜잭션 격리수준 (Isolation Level)

목차 트랜잭션과 ACID 트랜잭션 격리수준 (Isolation Level) 📌 트랜잭션 격리수준이란 트랜잭션 격리 수준이란 동시에 여러개의 트랜잭션 처리를 할 때 각 트랜잭션끼리 얼마나 고립 되어 있는지를 나타낸다. 데이터 베이스에서 여러개의 트랜잭션이 공유 자원 에 접근해 작업(CRUD) 을 할때 자원의 일관성 을 지키기 위해 트랜잭션 작업을 얼마나 고립시킬지를 나타냅니다. 격리 수준이 높을 수록 무결성은 강해지지만, 성능이 저하됩니다. 그렇다고 격리수준을 낮추면 성능과 관련된 동시성은 높아지지만 데이터 무결성이 깨질 수 있어 데이터 성격에 따라 적절한 설정이 필요합니다. 📋 트랜잭션 격리 수준1. Read Uncommited - 커밋되지 않은 데이터만 읽기 현재 트랜잭션에서 일어난 변경 사항이 Commit 이나 Rollback 되지 않아도 다른 트랜잭션에서 변경된 값을 읽을 수 있다.

0

데이터 베이스 Lock

목차 트랜잭션과 ACID 트랜잭션 격리수준 (Isolation Level) Post not found: database/transaction/isolation-lock 데이터 베이스 Lock Optimitic Lock

0

운영체제 - Inter Process Communication(프로세스간의 통신)

상호 배제(Mutual Exclusion) Busy Waiting Sleep and WakeUp Semaphore(세마포어) Mutex(뮤텍스) Monitor Message Passing Barriers Busy Waiting Busy Waiting 은 loop문 을 이용해 공유 자원을 사용할 수 있는지 계속 확인하는 방법이다. cpu자원을 계속해서 낭비하기 때문에 무조건 적으로 피해야 한다. 기다리는 시간이 매우 작을 때만 사용하는 것이 좋다. Semaphore(세마포어) 공유된 자원의 데이터에 한번에 여러 프로세스가 접근하지 못하게 하는 알고리즘 공유자원에 따라 몇개의 프로세스를 접근시킬지에 따라서 이진 세마포어 와 계수형 세마포어 로 나뉘게 된다

0

Inter Process Communication(프로세스간의 통신)

목차 Thread Safe 쓰레드와 메모리구조 쓰레드 프로세스 동기화 프로세스 스케줄링 알고리즘 프로세스 상태와 스케줄러 Inter Process Communication(프로세스간의 통신) 프로세스 메모리 영역 Process (프로세스) IPC(프로세스간의 통신) 란? 프로세스간의 데이터 및 정보를 주고 받기 위한 메커니즘kernel 에서 IPC를 위한 도구를 제공하며, System call 형태로 프로세스에게 제공이 된다. 왜 IPC가 필요한가? 각각의 프로세스는 독립된 실행 객체이기 때문에 서로간의 통신이 어렵다. 그래서 kenerl에서 프로세스간의 통신을 위한 IPC을 제공하는 것이다. 공유 메모리 (Shared Memory)

0

프로세스 동기화

목차 Thread Safe 쓰레드와 메모리구조 쓰레드 프로세스 동기화 프로세스 스케줄링 알고리즘 프로세스 상태와 스케줄러 Inter Process Communication(프로세스간의 통신) 프로세스 메모리 영역 Process (프로세스) 프로세스 동기화의 목적 공유자원에 접근하는 여러 프로세스들이 치리순서에 상관없이 같은 결과를 얻을 수 있음을 보장하기 위해 도입된 개념, 이를 통해 공유되는 데이터의 일관성을 보장한다.쉽게 말해, 하나의 프로세스가 공유자원을 사용하고 있을 때, 다른 프로세스가 공유자원을 사용허지 못하도록 하는 것이다. Race Condition(경쟁상태) 공유자원에 여러개의 프로세스가 접근할 때 방생한다. 여러 프로세스가 공유데이터에 동시에 접근할 때 실행순서 에 따라서 실행 결과가 달라지는 현상이다. Critical Regions(임계 영역) 프로세스의 코드 부분에서 공유 자원에 들어가기 위한 코드부분을 임계영역(Criticla Regions) 이라고 부른다.프로세스 동기화 를 위해 임계 영역 내 코드는 공유 자원의 독점이 보장 돼야 한다.

0

쓰레드

목차 Thread Safe 쓰레드와 메모리구조 쓰레드 프로세스 동기화 프로세스 스케줄링 알고리즘 프로세스 상태와 스케줄러 Inter Process Communication(프로세스간의 통신) 프로세스 메모리 영역 Process (프로세스) Thread 란? CPU에서 실행되는 실행 단위 한 프로세스 내에 여러개의 쓰레드가 존재할 수 있다. 같은 프로세스 환경에서 여러개의 쓰래드가 동일하게 발생할 수 있다.(멀티 쓰레드) a) 하나의 프로세스에 하나의 쓰레드가 존재하는 경우 각각의 프로세스는 독립적으로 움직인다. b) 하나의 프로세스내에 여러가지 쓰레드가 존재하는 경우(multi thread) 쓰레드는 결국 프로세스내의 수행 단위이기 때문에 프로세스단의 Address Space들을 공유한다. 대신, 각각의 쓰레드마다 PC(Program Counter), register, stack을 갖는다. 각각의 쓰레드는 하나의 프로세스를 수행하기 위해 상호 협력적인 관계를 갖는다. 쓰레드와 관련된 Procedures

0

프로세스 스케줄링 알고리즘

목차 Thread Safe 쓰레드와 메모리구조 쓰레드 프로세스 동기화 프로세스 스케줄링 알고리즘 프로세스 상태와 스케줄러 Inter Process Communication(프로세스간의 통신) 프로세스 메모리 영역 Process (프로세스) 프로세스 스케줄링 알고리즘 프로세스 스케줄링이란? 이름에서 알 수 있듯이 프로세스 실행 순서 를 정해주는 것을 의미한다. 프로세스 실행 순서는 자원(CPU, Memory) 를 할당 받는 순서에 따라 실행된다. 프로세스 스케줄링의 목적은 Cpu나 Memory 같은 한정된 자원을 효율적으로 사용해 동일한 시간에 더 높은 처리 능력 을 갖기 위함이다. 스케줄링 알고리즘은 크게 비 선점 스케줄링 과 선점 스케줄링 으로 나뉜다. 비 선점 스케줄링 실행 중인 프로세스로 부터 CPU 자원 을 뺏어 올 수 없다. 한 프로세스에 CPU가 할당 되면 해당 작업이 끝나거나 대기상태로 전활될 때까지 CPU자원을 계속해서 차지한다. 비 신점 스케줄링으로는 FCFS, SJF, HRN 방식이 있다. FCFS(First Come, First Served) - 들어온 순서

0

프로세스 상태와 스케줄러

목차 Thread Safe 쓰레드와 메모리구조 쓰레드 프로세스 동기화 프로세스 스케줄링 알고리즘 프로세스 상태와 스케줄러 Inter Process Communication(프로세스간의 통신) 프로세스 메모리 영역 Process (프로세스) 운영체제 - 프로세스 상태와 스케줄러 시스템이 실행하고자 하는 프로세스에 CPU를 할당하는 과정 프로세스의 상태 프로세스는 Run, Ready, Wait라는 3가지 상태를 갖는다. Run CPU가 해당 프로세스를 수행하고 있는 상태 Ready 다른 프로세스를 실행하기위해 잠시 멈춘상태(실행가능한 상태) Wait 실행 불가능한 상태, 디스크를 읽거나 문자를 입력하는 등의 외부 이벤트가 발생할 때까지 멈춰있는 상태이다. Running Process가 어떤 값을 입력 받기 전까지는 Wait 상태가 된다. 스케줄러가 다른 프로세스를 선택한 경우 Running 프로세스는 Ready 상태가 된다. 스케줄러에의해 Ready 상태의 프로세스를 선택한 경우 다시 Running 상태가 된다. 값을 입력받을 경우 Wait 된 프로세스는 Ready 상태가 된다. 스케줄링이란

0

프로세스 메모리 영역

목차 Thread Safe 쓰레드와 메모리구조 쓰레드 프로세스 동기화 프로세스 스케줄링 알고리즘 프로세스 상태와 스케줄러 Inter Process Communication(프로세스간의 통신) 프로세스 메모리 영역 Process (프로세스) 프로세스의 Address Space(주소공간) 프로그램이 실행되면 Process Address Space가 할당된다. Process Address Space는 Text(Code), Data, Stack, Head 4가지 영역으로 구분된다. 프로세스가 생행되면 각 프로세스는 운영체제로부터 독립된 메모리영역을 할당 받습니다. 때문에 한 프로세스 메모리 영역에 다른 프로세스가 접근할 수 없습니다. 프로세스 메모리 영역은 Code, Data, Heap, Stack 4가지 영역으로 구분됩니다. Text(Code) 프로그램 코드가 저장되는 메모리 영역 프로그램이 실행될 때 할당 됐다가 프로그램이 종료하면 해제된다. (고정된 영역) Read Only Data

0

Process (프로세스)

목차 Thread Safe 쓰레드와 메모리구조 쓰레드 프로세스 동기화 프로세스 스케줄링 알고리즘 프로세스 상태와 스케줄러 Inter Process Communication(프로세스간의 통신) 프로세스 메모리 영역 Process (프로세스) 프로세스의 정의 Process(프로세스) 는 현재 실행중인 프로그램을 의미한다. Process Control Block (프로세스 제어 블록) 운영체제(OS) 가 프로세스를 제어 하기 위해 정보를 저장해 놓은 곳, 프로세스의 상태 정보 를 저장하는 자료구조다. 프로세스 상태 관리 와 Context Switch(문맥 교환) 을 위해 필요하다. 프로세스 ID (PID) 프로세스의 고유 번호 프로세스 현재 상태 생성, 준비, 실행, 대기, 소멸등 프로세스의 상태를 저장한다. 프로세스 Counter(PC) 다음 실행될 명령어의 주소를 저장하는 Counter CPU에서는 PC를 통해 프로세스 명령어를 실행한다. Process 생성 새로운 프로세스는 현재 실행하고 있는 프로세스가 프로세스 생성 System Call을 실행할 때만 만들 수 있다. 프로세스를 생성하는 주요 event들

0

객체 지향 3요소

컴파일 언어, 인터프리터 언어, 하이브리드 언어 객체 지향 3요소 객체 지향 설계 5원칙 SOLID 객체 지향 3요소1. 캡슐화 정보의 은닉 관련이 있는 변수와 함수를 묶는 작업 객체는 접근제어자를 이용해 외부에서 접근할 수 있는 정보 와 외부에서 접근할 수 없는 정보 를 분리해 관리할 수 있다. private : 클래스 내부에서만 접근 가능 public : 클래스 외부에서 접근 가능 protected : 자기 클래스 혹은 상속 받은 클래스에서만 접근이 가능 2. 상속 자원의 상속 자식 클래스가 부모 클래스의 모든 자원 (Field, Method) 를 물려 받는 것을 의미한다. 하나의 부모클래스는 여러개의 자식 클래스를 가질 수 있지만 그 반대는 안된다. 개발자는 상속을 통해 불필요한 코드를 줄일 수 있고 공통 자원 관리를 집중시킬 수 있다. (유지 보수가 편리하다.) 3. 다형성 여러가지 형태를 가질 수 있게 하는 특성대표적으로 오버라이딩 과 오버로딩 이 있다.