전체 글
-
로드 밸런싱?CS 2020. 12. 22. 21:41
둘 이상의 CPU or 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 말한다. 웹의 발전으로 인해 웹사이트에 접속하는 인원이 급격하게 늘어나고 결국 이는 트래픽량의 급증을 보여준다. 모든 트래픽을 감당하기에는 1대의 서버로는 부족하게 되는 상황이 되었다. 이에 대한 대응 방안으로 하드웨어의 성능을 올리는 Scale Up 방법과 여러대의 서버가 나눠 일하는 Scale Out 방식이 존재한다. Scale up 의 경우 하드웨어 향상 비용이 비싸다는 문제가 존재한다. Scale out을 통해 서버를 여러대 둔다면 무중단 서비스를 제공하는 환경 구성에 용이하고 효과적이다. 이때 여러 서버에 균등하게 트래픽을 분산 시켜주는 방식을 로드밸런싱이라 한다. 로드 밸런싱은 분산식 웹 서비스로, 여러 서버에 부하(..
-
해싱(Hashing)?CS 2020. 12. 22. 02:47
해시함수란? 데이터의 효율적 관리를 목표로 임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 함수를 말한다. 이때 매핑전 원레 데이터의 값을 키(key), 매핑 후 데이터 값을 해시값(Hash Value), 매핑하는 과정을 해싱(Hashing)이라한다. 해시테이블의 크기가 m이라면 좋은 해시함수는 임의의 키값을 임의의 해시값에 매핑할 확률이 1/m이다. 특정한 값에 치우지지 않고 해시값을 고르게 만들어내는 해시함수가 좋은 해시함수라 할 수 있다. division method 간단하면서 빠른 연산이 가능한 해시함수, 숫자로 된 키를 해시테이블 크기 m으로 나눈 나머지 값을 해시값으로 반환한다. m은 대게 소수를 쓰며 특히 2의 제곱수와 거리가 먼값을 사용하는 것이 좋다. 해시함수의 특성 때문에 해시테이..
-
세마포어? 데드락?CS 2020. 12. 14. 20:46
데드락? 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태를 말한다. 교착 상태라고도 한다. 프로세스 1,2가 각 자원 1,2를 모두 얻어야 한다고 가정한 상황이다. t1 : 프로세스1이 자원 1을 얻음, 프로세스2가 자원 2를 얻음. t2 : 프로세스1은 자원 2를 기다림, 프로세스2는 자원 1을 기다림. 두 프로세스 모두 원하는 자원이 상대방에 할당되어 있어 무한정 wait에 걸린다. 이러한 상황을 데드락이라 한다. 주로 멀티 프로그래밍 환경에서 한정된 자원을 얻기 위해 경쟁하는 상황에서 발생한다. 프로세스가 자원을 요청했을 때 자원을 사용할 수 없어 대기상태에 들어가는데 대기 상태에서 실행 상태로 변경될 수 없을 때도 데드락이라 한다. 데드락 발생조건 1. 상호 배제 (Mutual Excl..
-
자바의 메모리관리, 가비지 컬렉션개발 2020. 12. 13. 23:12
자바의 메모리 공간은 크게 Static , Stack, Heap 영역으로 구성된다. Static 필드 부분에서 선언된 변수(전역변수)와 정적 멤버변수(static이 붙은 자료형)은 Static 영역에 저장한다. Static 영역에 저장된 데이터는 프로그램의 시작부터 종료가 될 때 까지 메모리에 남아있게 된다. 즉 프로그램 종료 전까지 어느 영역에서든 Static영역에 저장된 값을 사용할 수 있다는 뜻이다. 하지만 남용할 경우 메모리 공간이 부족해진다. Stack Stack 메모리 영역에는 우리가 평상시에 작성하던 메소드 내에서 정의하는 기본 자료형(원시 타입)에 해당되는 지역변수의 데이터의 값이 저장되는 공간이 Stack영역이다. 해당 메소드가 호출될 때 메모리에 할당되고 종료되면 메모리가 해제된다. H..
-
프로세스 vs 쓰레드CS 2020. 12. 13. 02:39
프로그램 어떤 작업을 위해 실행할 수 있는 명령어의 집합 저장 장치에 저장되어있지만 메모리에 올라가지 않은 정적인 상태 프로세스 운영체제로 부터 자원을 할당 받은 작업의 단위 실행되고 있는 동적인 상태의 프로그램 특징 각각 독립된 메모리 영역 (Code, Data, Stack, Heap)을 할당 받는다. 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있는다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 자원에 접근할 수 없다. 다른 프로세스의 자원에 접근하고 싶다면 프로세스간의 통신(IPC)를 사용해야 한다. 스레드 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 프로세스의 특정한 수행 경로 특징 스레드는 프로세스 내에서 stack만 따로 할당 받고 Code,..
-
CPU 스케줄링 알고리즘CS 2020. 12. 12. 22:44
CPU가 하나의 프로세스 작업이 끝나면 그 다음 프로세스 작업을 수행해야 한다. 이때 작업을 선택하는 알고리즘을 CPU 스케줄링 알고리즘이라 한다. 1. Preemptive VS Non-preemptive (선점 vs 비선점) Preemptive의 경우 프로세스가 CPU를 점유하고 있는 동안 I/O 요청이나 인터럽트가 발생한 것도 아니고 모든 작업을 끝내지도 않았는데, 다른 프로세스가 해당 CPU를 강제로 점유할 수 있는 경우를 말한다. 즉 프로세스가 정상적으로 수행중인데 다른 프로세스가 CPU를 강제로 점유해서 실행할 수 있는 것을 말한다. Non-Preemptive의 경우 한 프로세스가 CPU를 점유 했다면, I/O요청이나 인터럽트가 발생 또는 프로세스가 종료 될 때 까지 다른 프로세스가 CPU를 점..
-
트랜잭션 격리 수준?CS 2020. 12. 11. 18:56
트랜잭션 격리 수준 이란 트랜잭션에서 일관성 없는 데이터를 허용하도록 하는 수준을 말한다. 데이터베이스의 경우 ACID 특징과 같이 트랜잭션이 독립적인 수행을 하도록 한다. 따라서 locking을 통해, 트랜잭션이 데이터베이스를 다루는 동안 다른 트랜잭션이 관여하지 못하도록 막는 것이 필요하다. 트랜잭션 격리 레벨의 종류 ? 1. Read Uncommitted (레벨 0) - select 수행되는 동안 해당 데이터에 shared lock이 걸리지 않는 계층 트랜잭션이 처리 중이거나, 아직 Commit 되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용하는 수준의 격리. 사용자 1이 A라는 데이터를 B로 변경하는 동안 사용자 2가 아직 완료 되지않은 트랜잭션이지만 데이터 B를 읽을 수 있다. 즉 데이터베이..
-
객체지향 프로그래밍 (OOP)CS 2020. 12. 9. 17:50
객체의 개념 소프트웨어 객체는현실 세계의 객체를 필드와 메서드로 모델링 한것 상태를 필드, 동작을 메서드로 정의 한다. 필드는 객체 내부에 선언된 변수를, 메서드는 객체 내부에 정의된 동작을 의미한다. 객체지향의 주요 개념 캡슐화 (정보 은닉) 관련된 필드와 메서드를 하나의 캡슐처럼 포장해 세부 내용을 외부에서 알 수 없도록 감추는 것. 함께 코드를 재수정 없이 재활용하는 것. 관련된 기능과 특성을 한 곳에 모으고 분류하기 때문에 재활용이 원활해졌다. 상속 자녀가 부모 재산을 상속 받아 사용하듯이 상위 객체를 상속받은 하위 객체가 상위 객체의 메서드와 필드를 사용하는 것 부모클래스의 속성과 기능을 그대로 이어 받아 사용할 수 있게하고 기능의 일부분을 재정의 하여 사용할 수 있게 하는 것. 다중 상속은 불..