CS

CS/CS 정리

[CS] GC (Garbage Collection)에 대해

GC (Garbage Collection) 1. GC의 정의 쓰레기 수집(garbage collection 가비지 컬렉션, GC)은 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다. (중략) 1959년 무렵 리스프의 문제를 해결하기 위해 존 매카시가 개발하였다. 더 이상 사용할 수 없게 된 영역이란, 어떤 변수도 가리키지 않게 된 영역을 의미한다. = 참조하지 않게된 영역 - 출처 : 위키백과 2. 장단점 장점 프로그래머가 동적으로 할당한 메모리 영역의 전체를 완벽하게 관리할 필요가 없어진다. 이미 메모리에서 해제된 유효하지 않은 포인터에 대한 접근을 막을수 있다. 이미 해제된 메모리를 또다시 해제하는 일을 막을 수 있다. (이중 해제..

CS/CS 정리

[CS] 디자인 패턴 간단 정리

디자인패턴 (Design Pattern) 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계를 이용하여 해결할 수 있도록 하나의 "규약" 형태로 만들어 놓은 것을 의미 쉽게 말해 지금까지 프로그래밍을 하던 사람들이 이런 상황에서는 ~~ 한 패턴을 쓰는 게 좋더라 식으로 먼저 깨닫고 정립하여 후대들에게 추천하는 일종의 방법론이기도 하다. 1. 싱글톤 패턴 (Singleton Pattern) 하나의 클래스에 오직 하나의 인스턴스만을 가지는(보장하는) 패턴 보통 데이터 베이스 연결 모듈에 많이 사용한다. 단점으로는 하나의 인스턴스만 보기 때문에 의존성이 높아진다. 이 단점의 해결방법중 하나는 의존성 주입(DI, Dependency Injection)이다. 이는 메인 모듈 (싱글톤 클래스)에서 직접 ..

CS/CS 정리

[CS] OOP의 4가지 특징 간당 정리

객체지향 프로그래밍 (Object Oriented Programming) 객체 지향 프로그래밍(OOP)은 소프트웨어 개발 패러다임 중 하나. 코드를 객체라는 단위로 구조화하여 개발하는 방식. OOP의 네 가지 주요 특징은 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism), 추상화(Abstraction). 1. 캡슐화(Encapsulation) 캡슐화는 데이터와 해당 데이터를 처리하는 메서드를 하나의 단위로 묶는 것. 객체 내부의 상세한 동작을 감추고 외부에서는 해당 객체의 함수 또는 인터페이스로만 접근할 수 있도록 하는 것을 의미한다. 객체간의 결합도를 감소시키고 응집도를 강화하는데 기여할수 있다 = 유지보수가 편리해진다. 예시 public class Ca..

CS/CS 정리

[CS] DB의 종류

관계형 데이터 베이스(RDBMS) 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스 SQL 언어를 사용하여 조작 MYSQL PostgreSQL 오라클 SQL Server MSSQL 표준 SQL을 지키기는 하지만 각각 제품에 특화시킨 SQL을 사용한다. 예 : 오라클 : PL/SQL SQL Server : T-SQL MySQL : SQL MySQL 대부분의 운영체제와 호환, 가장 많이 쓰인다. C,C++로 제작됨 MyISAM 인덱스 압축기술 B-트리 기반의 인덱스 스레드 기반의 메모리 할당 시스템 매우빠른 조인 최대 64개의 인덱스 제공 대용량 DB를 위해 설계 롤백, 커밋, 이중암호 지원 스토리지 엔진 아키텍쳐 *(5.0 기반) 여기서 스토리지 엔진이란? - 데이터베이스의 심장과도 같은 역..

CS/CS 정리

[CS] 데이터베이스

데이터 베이스(DB, DataBase) 일정한 규칙 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음 해당 데이터 베이스를 관리하는 통합시스템을 DBMS (DataBase Management System) 이라고 한다. 데이터 베이스 안에 있는 데이터들은 특정 DBMS 마다 정의된 쿼리 언어 (query language) 를 통해 삽입, 삭제, 수정 , 조회 등을 할수 있다. 실시간 접근 동시공유가 가능하다. 예 : 데이터베이스 -> DBMS(MySQL) -> 응용 프로그램(Node.js) 엔터티(Entity) 사람,장소,물건 ,사건,개념 등의 속성을 지닌 명사를 의미한다. 서비스의 요구사항에 맞춰 속성이 정해진다. 약한 엔터티와 강한 엔터티로 나뉜다. 예 : A(약한 엔터티)는 B(강한 엔터티)의 존..

CS/CS 정리

[CS] 멀티 프로세싱 & 멀티 스레딩 간단 정리 . 2

스레드 여러 프로세스이 실행 가능한 가장 작은 단위 하나의 프로세스는 여러개의 스레드를 가질수 있다 코드, 데이터, 스택,힙 영역을 공유하며 그외의영역은 각각 생성된다. 멀티스레딩 프로세스 내 작업을 여러개의 스레드, 멀티스레드로 처리하는 기법 스레드 끼리 자원을 공유하기 때문에 효율성이 높다. 하나의 스레드가 중단(blocked)되어도 다른 스레드는 실행(Running) 상태일수 있기 중단이 되지 않고 실행가능 동시성에서는 장점이 있지만 하나의 스레드에 문제가 생길시 다른 스레드에도 영향을 미칠수 있음 예시로는 웹브라우저의 랜더러 프로세스를 예로 들수 있다. *예시의 안에는 메인, 워커, 컴포지터, 레스터 스레드가 존재한다. *여기서 동시성이란? - 서로 독립적인 작업들을 작은 단위로 나누고 동시에 실..

CS/CS 정리

[CS] 멀티 프로세싱 간단 정리 . 1

=== 멀티프로세싱 === 멀여러개의 프로세스를 통해 동시에 두가지 이상의 일을 수행할수 있는 것을 말한다. 특정 프로세스에 문제가 발생하더라도 다른 프로세스를 이용해 처리할수 있는 신뢰성이 높다. === 웹 브라우저 === 멀티프로세스 구조를 가지고 있다 브라우저 프로세스 : 주소 표시줄 , 북마크 막대, 뒤로가기 버튼, 등 을 담당, 네트워크 요청이나 파일 접근 같은 권한또한 담당 렌더러 프로세스 : 웹 사이트에서 시각적인 부분의 모든 것을 제어 플러그인 프로세스 : 웹사이트에서 사용하는 플러그인 제어 GPU 프로세스 : GPU를 이용하여 화면을 그리는 부분으 제어 === IPC === IPC ( Inter Process Communication) 는 프로세스 끼리 데이터를 주고 받고 공유 데이터를 ..

CS/CS 정리

[CS] PCB 간단 정리

=== PCB === PCB (Process Control Block)은 운영 체제에서 프로세스에 대한 메타데이터를 저장한 '데이터' 를 말한다. 프로세스 제어 블록이라고도 한다. 프로세스가 생성될지 운영체제에 의해 생성된다. 프로그램이 실행될때의 프로세스 주소값들이 스택 힙 등의 구조를 기반으로 메모리가 할당된다. 그리고 이 프로세스의 '메타데이터' 들이 PCB에 저장되어 관리된다. 프로세스의 중요한 정보를 포함하기 때문에 일반사용자들이 접근할수 없도록 커널 스택의 가장 앞부분에서 관리된다. === 여기서 메타데이터란? === 데이터에 관한 구조화된 데이터이자 데이터를 설명하는 작은 데이터 이다. 대량의 정보 가운데 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해 규칙에따라 콘텐츠에 부여된다. ==..

CS/CS 정리

[CS] 프로세스 메모리 구조 간단 정리

프로세스의 메모리 구조 동적 영역과 정적영역으로 나뉜다. 동적영역 : 힙 (heap) & 스택 메모리 (stack) 정적 영역 : 데이터영역 (BSS segment, Data segment) & 코드 영역 ( code segment ) 스택 & 힙 메모리 동적할당된다 ( 런타임 단계에서 메모리를 할당 받는걸 뜻한다.) 스택(stack) 지역변수 매개변수 실행되는 함수에의해 늘어들거나 줄어드는 메모리영역 함수가 호출될때마다 호출될때의 환경 등 특정 정보가 스택에 계속해서 저장된다. 재귀함수가 호출된다고 했을 때 새로운 스택 프레임이 매번 사용되기 때문에 함수 내의 변수 집합이 해당 함수의 다른 인스턴스 변수를 방해하지 않는다. 힙(heap) 동적으로 할당되는 변수들을 담는다. malloc() , free(..

CS/CS 정리

[CS] 프로세스와 스레드 with 소스코드 파일 처리 과정 (간단 정리)

=== 프로세스와 스레드의 정의 === 프로세스란(process)? 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링의 대상이 되는 작업(task)라는 용어와 같은 의미로 쓰인다. 프로세스는 프로그램이 메모리에 올라가 인스턴스화 된것이다. 프로세스 들은 각각의 별도 메모리 공간을 할당 받는다. - 독립된 실행 환경을 가진다. 프로세스간의 메모리 공유는 할수 없다. 로세스 간 통신(IPC, Inter-Process Communication)을 통해 데이터를 공유. 스레드란(thread)? 프로세스 내에서 실행되는 흐름 (작업)의 단위를 말한다 스레드는 프로세스의 메모리 공간을 공유한다. 스레드는 프로세스 내에서 독립적인 실행 흐름을 가진다. 같은 프로세스 내의 다른 스레드와 데이터 공유 가능 경량..

Bueong_E
'CS' 카테고리의 글 목록