전체 글 (40) 썸네일형 리스트형 데이터베이스 인덱스(Index) 인덱스(index)란?추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조책에서 원하는 내용을 찾기 위한 책의 색인(목차)와 데이터베이스의 index는 같다. 인덱스의 특징테이블을 조회하는 속도와 그에 따른 성능을 향상된다.전반적인 시스템의 부하를 줄어든다.인덱스를 관리하기 위해 DB의 약 10%에 해당하는 저장공간이 따로 필요하다.인덱스를 관리하기 위해 추가 작업이 필요하다.인덱스를 잘못 사용할 경우 오히려 성능이 저하되는 역효과가 발생할 수 있다.CREATE,DELETE,UPDATE 등이 빈번한 속성에 인덱스를 걸면 오히려 성능이 저하된다.인덱스(index)를 사용하면 좋은 경우규모가 작지 않은 테이블INSERT, UPDATE, DELETE가 자주 발생.. 캐시 메모리와 캐시의 지역성(Cache Locality) 캐시 메모리(Cache Memory)주기억장치에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게 하는 메모리캐시 기억장치와 주기억장치 사이에서 정보를 옮기는 것을 매핑(Mapping) 이라고 한다.속도가 빠른 장치와 느른 장치간의 속도 차에 따른 병목현상을 줄이기 위한 범용 메모리이를 위해서는 CPU가 어떤 데이터를 원하는지 어느 정도 예측할 수 있어야한다.캐시 메모리에 CPU가 이후에 참조할, 필요 있는 정보의 양 에따라 캐시의 성능이 좌우되기 때문주기억장치와 CPU사이에 위치메모리계층 구조에서 가장 빠른 소자이며, 처리속도가 거의 CPU의 속도와 비슷할 정도의 속도를 가지고 있다.캐시메모리를 사용하면 주 기억장치를 접근하는 횟수가 줄어들어 컴퓨터의 처리속도가 향상된다.캐시의 크기는 보통 .. 뮤텍스와 세마포어 뮤텍스(Mutex)와 세마포어(Semaphore)프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 자원에 여러 개의 프로세스가 동시에 접근하면 Critical Section에 문제가 발생할 수 있다. 이를 해결하기 위해 데이터를 한번에 하나의 프로세스만을 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다.동기화 도구에는 뮤텍스(Mutex)와 세마포어(Semaphore)가 있다. 이들은 공유된 여러 데이터를 여러 프로세스/스레드가 접근하는 것을 막는 역할을 한다.뮤텍스(Mutex)공유된 자원의 데이터 혹은 임계영역 (Critical Section)등에 하나의 Process혹은 Thread가 접근하는 것을 막는다.임계구역을 가진 스레들의 실행시간이 서로 겹치지 않고 단독으로 실행되도록 하는.. 교착상태와 기아상태 교착상태 (Deadlock) 서로 다른 프로세스가 서로 점유하고 있는 자원의 반납을 대기하고 있는 상태데드락이 일어나는 경우교착상태의 발생 조건 - 모두 성립해야 발생상호 배제하나의 프로세스가 자원을 사용중일 때 다른 프로세스는 그를 사용할 수 없다.점유 대기최소 하나의 자원을 점유하고 있으면서 다른 프로세스가 사용중인 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재비선점다른 프로세스가 자원을 사용중인 경우 그 사용이 끝날 때 까지 강제로 뺏을 수 없다.순환 대기프로세스의 집합에서 순환형태로 자원을 대기하고 있어야한다.교착상태의 예방 및 회피예방교착상태의 발생 조건 중 하나를 제거하면서 예방상호 배제 부정여러 프로세스가 공유 자원 사용점유 대기 부정프로세스 실행 전 모든 자원 할당비선점 부정점유중인.. 프로세스 동기화(Process Synchronization) 프로세스 동기화여러 프로세스가 공유한느 자원의 일관성을 유지Race Condition여러 프로세스(또는 스레드)가 공유자원에 동시에 접근할 때 공유자원에 대한 접근 순사에 따라 실행 결과가 달라질 수 있는 상황. (동시에 접근할 때 자료의 일관성을 해치는 결과가 나올 수 있다)임계구역(critical section) : 여러 프로세스(또는 스레드)가 자원을 공유하는 상황에서 하나의 프로세스(스레드)만 접근할 수 있도록 제한해둔 영역 (Race Condition을 막을 수 있는 해결책이 될 수 있음)CSP(Critical Section Problem)enter section(entry section)각 프로세스가 임계구역(critical section)에 들어가기 위해 진입허가를 요청하는 코드가 잇는 부분.. 스레드 세이프(Thread Safe) Thread Safe멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수,혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻함.하나의 함수를 여러 스레드에서 호출하여 동시에 실행되더라도 함수의 결과가 올바르게 나오는 것을 정의한다. Thread Safe를 지키기 위한 방법Re-entrancy(재진입성)어떤 함수가 한 스레드에 의해 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하더라도 그 결과가 각각에게 올바르게 주어져야한다.Thread-local storage공유 자원의 사용을 최대한 줄여 각각의 스레드에서만 접근 가능한 저장소들을 사용함으로써 동시 접근을 막음이 방식은 동기화 방법과 관련되어 있고, 또한 공유상태를 피할 수 없을 때 사용하는 방식Mut.. 동기와 비동기의 차이(블로킹, 넌블로킹) 동기(Synchronous)동기는 말 그대로 동시에 일어난다는 의미요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다.순서에 맞춰 진행되는 장점이 있지만, 여러 가지 요청을 동시에 처리할 수 없다.비동기(Asynchronous)비동기는 동시에 일어나지 않는다는 의미요청과 결과가 동시에 일어나지 않을 거라는 약속하나의 요청에 따른 응답을 즉시 처리하지 않아도, 그 대기 시간동안 또 다른 요청에 대해 처리 가능한 방식이다.동기와 비동기의 특징동기의 특징설계가 매우 간단하고 직관적이다결과가 주어질 때까지 아무것도 못하고 대기해야한다.비동기방식동기보다 복잡하다.결과가 주어지는데 시간이 걸리더라도 그 시간 동안 작업을 할 수 있으므로 자원을 효율적으로 사용가능블록과 논블록블록작업이 완료될 때.. 컨텍스트 스위칭(context Switching) 컨텍스트 스위칭의 정의CPU/코어 에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것컨텍스트란 프로세스 또는 스레드의 상태를 의미한다.상태라는 것은 CPU,메모리에서의 상태를 의미한다. 컨텍스트 스위칭이 필요한 이유여러 프로세스와 스레드들을 동시에 실행시키기 위해(그렇게 보이기 위해)여러 프로세스와 스레드들이 공정하게 CPU 시간을 나눠 갖기 위해서높은 우선순위의 작업이 빠르게 처리될 수 있게하기 위함 컨텍스트 스위칭 발생하는 대표적인 이유주어진 Time Slice(Time Quantum)를 다 사용함.I/O 작업을 해야 함다른 리소스를 기다려야 함인터럽트(Interrupt) 컨텍스트 스위칭의 주체컨텍스트 스위칭은 OS의 커널(Kernel)에 의해서 수행된다. 다른 프로세스끼리의 스위.. 이전 1 2 3 4 5 다음