분류 전체보기
-
JIT(Just-In-Time)공부 2016. 7. 6. 15:06
JIT란?C나 C++에서 하는 것처럼 프로그램을 실행하기 전에 처음 한 번 컴파일하는 대신, 프로그램을 실행하는 시점에서 필요한 부분을 즉석에서 컴파일하는 방식을 말한다.JIT 사용보통 인터프리터 방식의 언어 구현들이 성능 향상을 목적으로 도입하는 경우가 많은데, 같은 코드를 매번 해석하는 대신 실행하기 전에 그 부분만 컴파일을 해 두고 다음부터는 컴파일된 코드를 쓰기 때문에 인터프리터의 느린 실행 성능을 개선할 수 있다. JIT 이전부터 실행 성능 문제 때문에 바이트코드 컴파일을 도입했던 Java와 같은 언어들도 바이트코드를 해석하는 대신 컴파일된 기계어 코드를 직접 실행하는 쪽이 어쨌든 빠르기 때문에 역시 JIT를 도입하고 있다.JIT 단점단점이라면 초기 구동 후 얼마 간은 소스코드(혹은 바이트코드)..
-
웹서버와 WAS웹 2016. 6. 28. 19:46
웹 서버와 WAS(Web Application Server)의 정의 웹서버와 WAS는 비슷한 개념이기 때문에 같이 또는 다르게 사용되는 단어 가운데 하나이다. 인터넷 확산 초기에는 웹서버라는 개념으로 통칭해서 사용했지만, 시간이 지남에 따라 WAS를 더 많이 사용하고 있다. 인터넷 사용자가 증가함에 따라, 각 웹 사이트는 보다 많은 사용자에게 원활한 서비스를 제공하기 위해 기능적인 layer를 나누게 되었고 여기서 웹서버와 WAS의 구분점이 생기게 된 것이다.기능적으로만 본다면, 거의 대부분의 웹 서버가 웹 애플리케이션을 동작시킬 수 있겠지만 모두 웹 서버 혹은 WAS라고 부르는 것보다는 어떤 기능을 수행하는지에 따라, 즉 기능상의 분류를 통해 구분지어 사용해야 할 것이다. 구분웹서버WAS설명웹브라우저(..
-
MVC패턴공부 2016. 6. 26. 23:36
MVC패턴이란?MVC이란 Model View Controller의 약자로 에플리케이션을 세가지의 역할로 구분한 개발 방법론이다. 아래의 그림처럼 사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.Model, View, ControllerController사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다. Model일반적으로 CI의 모델은 데이터베이스 테이블에 대응된다. 이를테면 Topic이라는 테이블은 topic_model이라는 Model을 만든다. 그런데 ..
-
싱글톤패턴(singleton pattern)공부 2016. 6. 26. 23:02
싱글톤패턴이란?먼저 Singleton 패턴의 용도는 하나의 프로그램 내에서 하나의 인스턴스만을 생성해야만 하는 상황에서 쓰인다. 예를 들어 환경설정을 관리하는 클래스나 Connection Pool, Thread Pool과 같이 풀(Pool) 형태로 관리되는 클래스의 경우 프로그램 내에서 단 하나의 인스턴스로 관리되는 것이 일반적이며, 이 때 Singleton 패턴을 적용하는 것이 일반적인 경우라고 볼 수 있다. public class Singleton { private static Singleton singleton = new Singleton(); protected Singleton() { System.out.println("Maked Singleton"); } public static Singleto..
-
[DB] NoSQL이란?DB 2016. 6. 26. 13:39
NoSQL 이란 NoSQL은 "Not Only SQL" 이라고도 불린다. 우리가 익숙하게 사용하고있는 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미한다. 일반적인 DBMS로 처리하기에 비용이 많이 들거나 효과적이지 못한 부분을 해결할 목적으로 개발되었고 대용량의 로그 처리나 Write가 많은 경우에 사용되지만, 제품에 따라 각기 그 특성이 매우 달라서 NoSQL을 하나의 제품군으로 정의할 수는 없다.NoSQL 등장 배경빅 데이터 시대를 맞이하여 서비스를 제공하는 시스템에서 많은 양의 데이터를 효율적으로 처리가 필요하게 되었다. 이로인해 데이터의 분산처리( 샤딩 ), 빠른 쓰기 및 데이터의 안정성 ( 복제 ) 즉, 분산형 구조를 통해 데이터를 여러 대의 서버에 분산해 저..
-
Page Replace Algorithm공부/OS 2016. 6. 26. 13:07
Page Replace Algorithm이란?Virtual memory system에서 페이지 부재(page fault)가 발생했을때 주기억장치(메모리)의 모든 페이지 프레임이 사용중이라면 어느 페이지 프레임을 교체할 지 결정하는 알고리즘FIFO(First In First Out)페이지 교체 시, 메모리에 올라온지 가장 오래된 페이지를 내쫓는다.장 점: 가장 간단한 페이지 교체 알고리즘 단 점:가장 오래된 페이지가 초기화 모듈이라면 성능이 저하될 수 있음Belady의 모순(Belady's anomaly)프로세스에게 프레임을 더 주었는데 오히려 페이지 부재율이 더 증가하는 현상OPT(Optimal)앞으로 가장 오랜 동안 사용되지 않을 페이지를 찾아 교체한다 장 점: 모든 알고리즘보다 낮은 페이지 부재율 B..
-
가상 메모리 (virtual memory)공부/OS 2016. 6. 26. 13:00
프로세스와 가상 메모리모든 프로세스는 자신만의 가상 주소 공간을 가지고 있다. 32비트/64비트 프로세스는 각 비트수에 맞게 최대 4GB/16GB의 주소 공간을 가진다.모든 프로세스들은 자신만의 주소 공간을 가지기 때문에, 특정 프로세스 내에서 쓰레드가 수행될 때 해당 쓰레드는 프로세스가 소유하고 있는 메모리에 대해서만 접근이 가능하다. 다른 프로세스에 의해 소유된 메모리는 숨겨져 있으며, 접근이 불가능하다.따라서, A 프로세스가 0x12345678 주소에 무엇인가를 저장하였지만, B 프로세스 역시 0x12345678 주소에 무엇인가를 저장할 수 있으며, 이 주소들은 완전히 독립되어 있는 것이다.즉, 가상 메모리는 프로세스의 logical memory와 physical memory를 분리하기 위해 생겨난..
-
데드락(Deadlock)공부/OS 2016. 6. 25. 22:34
데드락이란?프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태예를 들어 P1과 P2가 리소스 A,B 둘 다를 얻어야 한다고 가정한다. t1(첫 번째 시간)에 P1이 리소스 A를 얻고 P2가 리소스 B를 얻었다면 t2(다음 시간)때 P1은 리소스 B를, P2는 리소스 A를 기다리게 된다. 하지만 서로 원하는 리소스가 상대방에게 할당되어 있기 때문에 이 두 프로세스는 무한정 기다리게 되는데 이러한 상태을 DeadLock상태라고 한다.데드락 발생 조건데드락은 아래 네 가지 조건이 동시에 성립 할 때 발생한다. 즉, 아래의 네 가지 조건 중 하나라도 성립하지 않도록 만든다면 데드락을 해결할 수 있다.상호 배제 (Mutual exclusion)자원은 한 번에 한 프로세스만이 사용할 수 있어야 한다점유 대기..
-
스핀 락(Spin lock), 크리티컬 섹션(Critical section), 세마포어(Semaphore), 뮤텍스(Mutex)공부/OS 2016. 6. 25. 22:33
스핀 락Spin Lock 은 이름이 뜻하는대로, 만약 다른 스레드가 lock을 소유하고 있다면 그 lock이 반환될 때까지 계속 확인하며 기다리는 것이다. "조금만 기다리면 바로 쓸 수 있는데 굳이 컨텍스트 스위칭으로 부하를 줄 필요가 있나?" 라는 컨셉으로 개발된 것으로 크리티컬 섹션에 진입이 불가능할때 컨텍스트 스위칭을 하지 않고 잠시 루프를 돌면서 재시도 하는 것을 말합니다. Lock-Unlcok 과정이 아주 짧아서 락하는 경우가 드문 경우(즉; 적절하게 크리티컬 섹션을 사용한 경우) 유용하다. Spin Lock 은 다음과 같은 특성을 갖는다.Lock을 얻을 수 없다면, 계속해서 Lock을 확인하며 얻을 때까지 기다린다. 이른바 바쁘게 기다리는 busy wating이다.바쁘게 기다린다는 것은 무한 ..
-
OS공부/OS 2016. 6. 25. 22:32
OS란?컴퓨터의 하드웨어와 소프트웨어를 제어하며, 사용자가 컴퓨터를 쓸 수 있게 만들어주는 프로그램OS의 목표어플리케이션을 위한 기본 실행 환경을 제공해 사용자의 프로그램을 정확하게 실행컴퓨터 시스템을 편리하고 효율적이고 안전하게 사용할 수 있게 만듬OS의 관점resouce allocator - 컴퓨터 시스템의 자원(소프트웨어, 하드웨어)를 할당해주고 이것들을 효율적으로 관리control program - 사용자 프로그램 실행과 I/o 장치 실행을 통제한다.kernel - 컴퓨터 운영체계의 가장 중요한 핵심으로서 운영체계의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공한다.멀티 프로세스/ 멀티 테스킹 : 여러 작업은 동 시간에 메인메모리 안에서 유지되고 이러한 프로세스들은 cpu time, I/o ..