전체 글 91

스와핑

프로세스가 실행되기 위해서는 프로세스의 명령어와 명령어가 접근하는 데이터가 메모리에 있어야 한다.그러나 프로세스 또는 프로세스의 일부분은 실행 중에 임시로 백업 저장장치로 내보내어 졌다가 실행을 계속하기 위해 다시 메모리로 되돌아 온다모든 프로세스의 물리 주소 공간 크기의 총합이 시스템의 실제 물리 메모리 크기보다 큰 경우에도 스와핑을 이용하면 동시에 실행하는 것이 가능하여 다중 프로그래밍의 정도를 증가시킨다. 표준 스와핑메인 메모리와 백업 저장장치 간에 전체 프로세스를 이동한다. 백업 저장장치는 일반적으로 빠른 보조저장장치다대부분의 시간을 유휴 상태로 보내는 프로세스가 스와핑에 적합한 후보다 페이징 스와핑표준 스와핑은 기존 UNIX에서 사용됐지만 프로세스 전체를 이동하는데 시간이 엄청나서 최신 운영체제..

운영체제 2025.07.24

가상메모리

가상 메모리는 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법사용자 프로그램이 물리 메모리보다 커져도 된다는 장점이 있다가상 메모리는 물리 메모리부터 프로그래머 관점의 논리 메모리를 분리해 메인 메모리를 균일한 크기의 저장 공간으로 구성된 엄청나게 큰 배열로 추상화 시켜줌이 기법으로 인해 개발자는 메모리의 크기 제약에 자유로워 짐 또한 가상메모리는 공유 메모리 구현을 가능하게 함 일반 메모리 알고리즘은 현재 실행되고 있는 코드는 반드시 물리 메모리에 존재해야 한다는 조건이 있었음동적적재를 사용하지만 완화는 가능하지만 해결은 불가능많은 공간을 점유중인 자료구조, 잘 사용되지 않는 코드 등 프로그램 중 일부분만 메모리에 올려놓고 실행할 수 있다면 이점이 많다응답시간, CPU 사용량..

운영체제 2025.07.24

요구 페이징

요구 페이징은 필요한 페이지만 메모리에 적재하는 것 스와핑 페이징과 유사하다페이지테이블에 유효-무효 비트 기법을 써서 디스크에 있는지 메모리에 있는지 구분한다메모리에 없는 페이지에 접근하려하면 페이지 폴트 트랩 발생한다그럼 해당 페이지를 메모리에 올리고 페이지테이블의 유효-무효 비트를 바꾼다 순수 요구 페이징은 어떤 페이지가 필요해지기 전에는 그 페이지를 메모리로 적재하는 않는다극단적인 경우 페이지가 하나도 없음에도 프로세스를 실행가능하다페이지 폴트가 연쇄 발생하며 필요한 모든 페이지가 적재되고 나면 폴트가 더 발생하지는 않는다 한 명령어에도 여러 개의 페이지 폴트를 일으킬 수도 있다 (명령문 한 페이지, 데이터 한 페이지 이런 방식) 이렇게 되면 심각한 시스템 저하가 일어난다.그러나 이런일은 거의 일어..

운영체제 2025.07.24

페이지 교체

다중 프로그래밍 정도를 올리면 메모리 과할당이 발생한다 이것을 피하기 위해 대부분 운영체제는 페이지 스와핑과 페이지 교체를 결합한다.빈 프레임이 없다면 현재 사용되지 않는 프레임을 찾아내 비우는것그 프레임의 내용을 스왑 공간에 쓰고 그 페이지가 메모리에 없다는 것을 표시하기 위해 페이지 테이블을 변화시킨다 요구 페이징 시스템은 프레임 할당 알고리즘과 페이지 교체 알고리즘이라는 두 가지 문제를 해결해야 한다.페이지 교체 알고리즘에는 FIFO, 최적, LRU, LFU, MFU, 페이지-버퍼링 알고리즘등이 있다.

운영체제 2025.07.24

Stack, Queue, Deque

StackLIFO 후입선출이다스택에 값을 넣는건 push 빼는건 popStack은 내부에서 Vector라는 자료 구조를 사용한다 옛날에 개발된건데 하위호환을 위해 놔둔거다 지금은 Deque를 사용하면 된다. QueueFIFO 선입선출이다큐에 값을 넣는건 offer 빼는건 pollQueue인터페이스는 Collection의 자식이다Queue의 대표 구현체는 ArrayDeque, LinkedList가 있다 DequeDouble Ended Queue의 약자다 양 끝에서 요소를 추가하거나 제거할 수 있다. 큐와 스택으로 둘 다 활용이 가능하다offerFirst() : 앞에 추가offerLast() : 뒤에 추가pollFirst() : 앞에서 꺼냄pollLast() : 뒤에서 꺼냄Deque의 대표적 구현체는 Arr..

자료구조 2025.07.24

Map과 자주쓰이는 메서드

Map키-값의 쌍을 저장하는 자료구조키는 맵 내에서 유일해야한다. 키를 통해 값을 빠르게 검색 가능키는 중복될 수 없지만, 값은 중복될 수 있다 Map은 순서를 유지하지 않는다.자바는 HashMap, TreeMap, LinkedHashMap등 구현체를 제공함Map은 Set과 거의 비슷하다 다만 옆에 value가 딸려있느냐 없느냐의 차이다HashSet - HashMapLinkedHashSet - LinkedHashMapTreeSet - TreeMap 다 비슷하고 해시셋은 해시맵의 구현을 가져다 사용함 Map에서 value만 비우면 셋으로 사용가능메서드 설명put(K key, V value)지정된 키와 값을 맵에 저장함. 같은 키가 존재하면 값을 변경함.putAll(Map m)지정된 맵의 모든 매핑을 현재 ..

자료구조 2025.07.24

Set과 주요 메서드

Collection 인터페이스는 java.util 패키지의 컬렉션 프레임워크의 핵심 인터페이스 중 하나다.이 인터페이스는 자바에서 다양한 컬렉션을 다루기 위한 메서드를 정의한다.Collection 인터페이스는 List, Set, Queue와 같은 다양한 하위 인터페이스 들과 함께 사용된다. Set 인터페이스는 Collection 인터페이스의 하위 요소다 중복을 허용하지 않는 유일한 요소의 집합을 나타낸다. 순서를 보장하지 않으며, 특정 요소가 집합에 있는지 여부 확인에 최적화 되어있다,Set인터페이스는 HashSet, LinkedHashSet, TreeSet 등의 여러 구현 클래스를 가지고 있으며 각 클래스는 Set 인터페이스를 구현하며 각각의 특성을 지니고 있다. Set 인터페이스의 주요 메서드메서드 ..

자료구조 2025.07.24

HashSet

숫자는 해시 알고리즘을 이용해 저장한다문자는 숫자로 변경하고 해시 알고리즘을 이용해 저장한다객체는 Object.hashCode()를 이용해서 저장한다.보통 객체에서 재정의해서 사용한다 재정의 하지 않으면 같은 값이 중복으로 들어간다 같은 객체 인스턴스를 여러개만들었을 때 같은 값이 입력되더라도 같은 해시값이 나오기 때문임equals도 재정의 해야한다 해당 객체의 특정 값을 기준으로 동등성을 비교하도록 해야함 해시란?https://jaeiktech.tistory.com/2 해시코드와 이퀄스 모두 재정의 하지 않으면 같은 값을 두번 넣었을 때셋에 다른 곳에 같은 값이 저장된다 검색도 해시코드가 달라 되지 않는다해시코드만 재정의 한 경우 같은 값을 두번 넣었을 때셋에 같은 곳에 같은 값이 저장된다 해시코드..

자료구조 2025.07.24

해시

해시 알고리즘을 쓰면 O(N)의 성능을 O(1)로 끌어올릴 수 있다. O(1)이라는건 인덱스 기반데이터를 인덱스의 값으로 같이 쓰면 중복 검사를 하지 않고 조회 시 빠르게 할 수 있음그런데 그럼 메모리 낭비가 심하다 나머지 연산으로 메모리를 아낀다 하지만 해시 충돌이 일어날 수 있다.해시 충돌은 인정해야한다. 대신 자바에서는 나머지 연산 및 갖가지 수학적 요소로 해시 충돌을 최대한 막고 사실상 충돌이 일어나는 일은 많지 않다.충돌이 일어나면 해시 안의 배열 같은 인덱스에 값이 여러개 들어가야하고 거기서 풀스캔을 해야한다.그래서 해시는 O(1)을 보장하는건 아니고 최악의 경우 O(N)이 될 수도 있다.하지만 그런일은 잘 일어나지 않고 O(1)에 가깝다고 볼 수 있다. 해시 기반 자료 구조를 사용하는 경우..

자료구조 2025.07.24