빅엔디언
- MSB(최상위 비트)가 가장 낮은 주소에 위치
- 네트워크에서 데이터를 전송할 때 주로 사용
- 양수/음수를 바로 파악 가능
리틀엔디언
- MSB가 가장 높은 주소에 위치
- 마이크로 프로세서에서 주로 사용
- 바로 연산 가능
프로세스
- 운영체제로부터 독립된 메모리 영역을 할당 받음
- 프로세스끼리 통신하기위해서는 IPC 이용
- 최소 1개의 쓰레드(메인 쓰레드)를 가진다.
컨텍스트 스위칭
- 인터럽트를 발생시켜 CPU에서 실행중인 프로세스를 중단하고, 다른 프로세스를 처리하기 위한 과정
- 현재 실행중인 프로세스의 상태(Context)를 먼저 저장하고, 다음 프로세스를 동작시켜 작업을 처리한 후 이전에 저장된 프로세스의 상태를 복구
멀티 프로세스
- 컨텍스트 스위칭을 위한 오버헤드(캐시 초기화, 인터럽트 등) 발생
- 통신이 어려움
멀티 쓰레드
- 통신이 쉽고 자원 공유 용이
- 하나의 쓰레드에 문제가 생기면 전체 프로세스 영향
- 여러 쓰레드가 하나의 자원에 동시 접근하는 경우 동기화 문제 발생할 수 있음
세마포어와 뮤텍스의 차이
- 뮤텍스는 락을 걸은 쓰레드만이 임계영역을 나갈 때 락을 해제 가능
- 세마포어는 Signaling 메커니즘으로 락을 걸지 않은 쓰레드도 Signal을 사용해 락 해제 가능
- 세마포어의 카운트를 1로 설정하면 뮤텍스처럼 사용가능
페이지 폴트
- 실제 메모리에 원하는 페이지가 없는 경우 발생
- 가상메모리는 하드디스크에 저장되어 있기 때문에, 페이지 폴트가 발생하면 I/O에 의한 속도의 저하 발생
페이지 교체 알고리즘과 LRU(Least Recently Used)
- 실제 메모리의 페이지 중에서 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체
데이터베이스
인덱스
- 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 구조
인덱스의 자료구조
- 해시 테이블
- 컬럼의 값으로 생성된 해시를 기반으로 인덱스 구현
- 시간 복잡도 O(1)
- qnemdgh(<, >)와 같은 연속적인 데이터를 위한 순차검색이 불가능
- B+ Tree
- 자식노드가 2개 이상인 B-Tree를 개선시킨 자료구조
- B Tree의 리프노드들은 LinkedList로 연결하여 순차검색을 용이하게 하였다.
- 해시테이블보다 나쁜 O(밑이 2인 Logn)의 시간 복잡도를 갖지만 해시테이블보다 흔하게 사용
DB 정규화
제 1정규형: 모든 속성 값이 원자 값을 갖도록 분해
제 2정규형: 제 1정규형을 만족하고, 기본 키가 아닌 속성이 기본 키에 완전함수종속이도록 분해
제 3정규형: 제 2정규형을 만족하고, 기본 키가 아닌 속성이 키본 키에 직접 종속하도록 분해
BCNF 정규형: 제 3정규형을 만족하고, 함수 종속성이 X->Y를 성립할 때 모든 결정자가 X가 후보 키가 되도록 분해