[OS] 스케쥴러
·
OS
프로세스 Queue 종류 프로세스는 수행하면서 상태가 여러번 변하는데에 따라서 서비스 받아야하는 곳이 다름, 프로세스는 일반 적으로 여러개가 한번에 수행되므로 그에 따른 순서가 필요함, 이러한 순서를 대기하는 곳이 Queue이며 내부에는 각 프로세스의 PCB가 저장되어 있음, 이러한 순서를 정해주는것이 스케쥴러임 Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합, 프로그램이 실행되기 위한 메인 메모리의 할당순서를 기다림 Ready Queue : 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합, CPU 점유순서를 기다림 Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합, I/O 하기 위한 각 장치를 기다림 스케쥴러 한정적인 메..
[JAVA] TreeMap
·
JAVA
TreeMap 레드-블랙 트리 기반으로한 Map 컬렉션 내부 값들을 Key값을 기준으로 정렬하여 가지고 있음 HashMap보다 추가 삭제시 오래걸리나, 정렬된 데이터를 조회해야하는 범위 검색이 필요한 경우에는 효율적임 레드-블랙 트리 이진탐색트리의 문제점을 보완한 자료구조 이진탐색트리 같은 경우 한쪽으로 데이터의 값이 편향되게 들어갈 경우 굉장히 비효율적인 퍼포먼스를 냄 레드와 블랙으로 노드 색깔을 칠하고 부모노드보다 작은 값을 왼쪽, 큰 값을 가지면 오른쪽으로 배치하여 데이터 삽입과 삭제시 한쪽으로 치우치지 않도록 재배치와 다시칠하기 과정을 통해 균형을 맞춰줌 TreeMap 예제 TreeMap map = new TreeMap(); map.put(3, "value"); map.put(7, "value")..
[DATA STRUCTURE] 트리
·
ALGORITHM & DATA STRUCTURE
트리 비선형 자료구조이며, 계층적 관계를 표현하는 자료구조 연결 리스트와 비슷하지만 노드 한개가 다른 여러 노드를 가리키는 자료구조 즉 노드로 이루어진 자료구조 트리는 하나의 루트 노드를 가지며, 루트 노드는 0개이상의 자식 노드를 가짐, 자식 노드 또한 0개이상을 자식 노드를 가지게 되며, 이는 반복적으로 정의 됨 트리 용어 노드 (Node) : 트리를 구성하고 있는 요소를 의미 루트 (Root) : 부모가 없는 노드, 즉 트리구조에서 최상위에 있는 노드를 의미함, 트리에는 최대 한개 루트만 존재 간선 (Edge) : 트리를 구성하기 위하여, 노드와 노드를 연결하는 선을 의미, 즉 부모에서 자식으로 이어지는 연결선 리프 (Leaf) : 하위에 다른 노드가 연결되어 있지 않은 노드를 의미, 즉 자식이 없..
[OS] 메모리 관리 전략
·
OS
메모리 관리 전략 연속 메모리 할당 페이징 세그멘테이션 세그멘테이션 페이징 혼용 기법 연속 메모리 할당 프로세스를 메모리에 연속적으로 할당하는 기법 할당과 제거를 반복하다보면 Scattered Holes가 생겨나고 이로 인한 외부 단편화가 발생 페이징 메모리 공간이 연속적으로 할당되어야 한다는 제약조건을 없애는 메모리 관리 전략 논리 메모리는 고정크기의 페이지, 물리메모리는 고정크기의 프레임 블록으로 나누어 관리 MMU(Memory Management Unit)의 재배치 레지스터 방식을 활용해 CPU가 마치 프로세스가 연속된 메모리에 할당된 것처럼 인식하도록 함 세그멘테이션 페이징 기법과 반대로 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트로 분할 세그멘..
[OS] Swap
·
OS
Swap 하드 디스크의 일부를 RAM처럼 사용할 수 있게 만드는 것 시스템의 메모리가 부족한 경우 하드 디스크의 일부 공간을 사용하여 도와주는 것 Swapping RAM이 부족할 때 우선 일부 공간을 하드디스크로 이동하고 메모리가 다시 여유가 생기면 하드디스크에 이동했던 메모리 공간을 다시 이동하는 것 Swapping 사용방식 파티션 방식 : 나누어진 파티션 중 하나를 스와핑 영역으로 사용 (Swap 파티션 영역크기는 RAM 크기 2배 이상 권장) 파일 방식 : 일반적인 파일 시스템에 존재하는 파일을 스와핑 영역으로 사용 Swap 장단점 장점 단점 RAM이 가득 찼을 경우 보조 공간 제공 RAM처럼 빠르지는 않지만 하드보다 빠른 속도로 사용 가능 SWAP파티션은 크기를 유동성 있게 조정할 수 없어서 하드..
[OS] 외부 단편화 / 내부 단편화
·
OS
메모리 단편화 RAM에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만, 사용이 불가능한 상태 메모리 단편화 종류로 외부단편화와 내부단편화가 있음 외부 단편화 메모리가 할당 및 해제 작업으로 인해 중간중간 사용하지 않는 메모리가 존재하여 총 메모리로는 할당이 충분한 상태이지만 할당을 할 수 없는 상황 내부 단편화 메모리 할당시 필요한 양보다 더 큰 메모리가 할당되어서 메모리 공간이 낭비되는 현상 해당 단편화 문제를 해결하기 위해 메모리 관리 기법이 존재
[OS] 동기화 객체의 종류
·
OS
스레드 동기화 방법 실행 순서의 동기화 : 스레드의 실행 순서를 정의하고, 이 순서에 반드시 따르도록 하는 방법 메모리 접근에 대한 동기화 : 메모리 접근에 있어서 동시 접근을 막는 방법이며, 실행 순서가 중요한 상황이 아니고 한 순간에 하나의 스레드만 접근하도록 함 동기화 기법의 종류 유저 모드 동기화 : 커널의 힘을 빌리지 않는 동기화 기법 커널 모드 동기화 : 커널에서 제공하는 동기화 기능을 활용하는 기법 유저 모드 동기화 성능상 이점이 있으나, 기능상의 제한 크리틱컬 섹션 기반의 동기화, 인터락 함수 기반의 동기화가 있음 커널 모드 동기화 커널 모드로의 변경이 필요하기 때문에 성능 저하로 이어짐, 다양한 기능 활용이 가능함 뮤텍스 기반의 동기화, 세마포어 기반의 동기화, 이벤트 기반의 동기화가 있음
[OS] 멀티프로세스 대신 멀티쓰레드 사용이유
·
OS
멀티 프로세스 대신 멀티 스레드를 사용하는 이유 자원의 효율성 증대 처리 비용 감소 및 응답 시간 단축 자원의 효율성 증대 멀티 프로세스로 실행되는 작업을 멀티스레드 실행할 경우, 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있음 (프로세스 간의 Context Switching시 단순히 CPU 레지스터 교체 뿐만 아니라 RAM과 CPU 사이의 캐시 메모리에 대한 데이터까지 초기화되므로 오버헤드가 크기 때문) 스레드는 프로세스 내의 메모리를 공유하기 때문에 독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어들게 됨 처리 비용 감소 및 응답 시간 단축 프로세스 간의 통신(IPC)보다 스레드 간의 통신의 비용이 적으므로 작업..
[OS] Thread Safe
·
OS
Thread Safe 정의 멀티스레드 환경에서 여러 스레드가 동시에 하나의 객체 및 변수(공유 자원)에 접근할 때, 의도한 대로 동작하는 것 Thread Safe 방법 Thread Safe하기 위해서는 공유 자원에 접근하는 임계영역(critical section)을 동기화 기법으로 제어 동기화 기법으로는 Mutex나 Semaphore 등이 있음 Reentrant 재진입성이라는 의미로, 어떤 함수가 Reentrant하다는 것은 여러 스레드가 동시에 접근해도 언제나 같은 실행 결과를 보장한다는 의미 만족하기 위해서 해당 서브루틴에서는 공유자원을 사용하지 않으면 됨 (정적(전역) 변수를 사용하거나 반환하면 안 되고 호출 시 제공된 매개변수만으로 동작해야함)