본문 바로가기

전체 글142

스와핑 프로세스가 실행되기 위해서는 프로세스의 명령어와 명령어가 접근하는 데이터가 메모리에 있어야 한다.그러나 프로세스 또는 프로세스의 일부분은 실행 중에 임시로 백업 저장장치로 내보내어 졌다가 실행을 계속하기 위해 다시 메모리로 되돌아 온다모든 프로세스의 물리 주소 공간 크기의 총합이 시스템의 실제 물리 메모리 크기보다 큰 경우에도 스와핑을 이용하면 동시에 실행하는 것이 가능하여 다중 프로그래밍의 정도를 증가시킨다. 표준 스와핑메인 메모리와 백업 저장장치 간에 전체 프로세스를 이동한다. 백업 저장장치는 일반적으로 빠른 보조저장장치다대부분의 시간을 유휴 상태로 보내는 프로세스가 스와핑에 적합한 후보다 페이징 스와핑표준 스와핑은 기존 UNIX에서 사용됐지만 프로세스 전체를 이동하는데 시간이 엄청나서 최신 운영체제.. 2025. 7. 24.
가상메모리 메모리는 컴퓨터마다 다르다 1기가일수도 2기가일수도32비트 주소체계는 42억개의 주소를 가질 수 있다. 주소1개는 1바이트이기 때문에 최대 4기가 정도임64비트 주소체계는 어마어마한 숫자다 32비트의 경우로 예를 들어보면 4기가 전체를 못쓴다 실제로는 1.7기가 정도만 씀 커널이 주소공간 일부를 점유하기 때문이기 때문프로세스는 가상 메모리를 가지고 있다. 프로세스마다의 가상 메모리의 0번은 물리메모리의 주소와 다름커널의 메모리매니저가 매핑테이블을 가지고 있다.매핑테이블은 프로세스 A의 0번주소는 물리메모리에 어디에 있다고 가르쳐주는거 (페이징이면 페이지 세그먼테이션이면 세그먼트에 있다고 갈쳐줌) 배열로 구현되어있음 가상 메모리는 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법사.. 2025. 7. 24.
요구 페이징 요구 페이징은 필요한 페이지만 메모리에 적재하는 것 스와핑 페이징과 유사하다페이지테이블에 유효-무효 비트 기법을 써서 디스크에 있는지 메모리에 있는지 구분한다메모리에 없는 페이지에 접근하려하면 페이지 폴트 트랩 발생한다그럼 해당 페이지를 메모리에 올리고 페이지테이블의 유효-무효 비트를 바꾼다 순수 요구 페이징은 어떤 페이지가 필요해지기 전에는 그 페이지를 메모리로 적재하는 않는다극단적인 경우 페이지가 하나도 없음에도 프로세스를 실행가능하다페이지 폴트가 연쇄 발생하며 필요한 모든 페이지가 적재되고 나면 폴트가 더 발생하지는 않는다 한 명령어에도 여러 개의 페이지 폴트를 일으킬 수도 있다 (명령문 한 페이지, 데이터 한 페이지 이런 방식) 이렇게 되면 심각한 시스템 저하가 일어난다.그러나 이런일은 거의 일어.. 2025. 7. 24.
투 포인터 스타트 인덱스와 엔드 인덱스 2개가 있다.둘 다 1번에서 시작하면서 목표로 하는 값과 비교하며 목표 값 보다 작으면 엔드 인덱스를 늘린다목표값에 도달하면 카운트를 늘리고 엔드 인덱스는 유지 스타트 인덱스를 늘린다 2025. 7. 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. 7. 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. 7. 24.