전체 글(394)
-
가상 메모리
가상 메모리 물리 메모리의 크기와 상관없이 프로세스에게 메모리 공간을 제공하는 기술 물리 메모리의 부족한 부분을 스왑 영역으로 보충 -> 가상 메모리 크기=물리 메모리 + 스왑 영역 가상 메모리 분할 방식 페이징 기법 - 페이지 테이블 관리가 어려움 세그먼테이션 기법-외부 단편화 문제가 있음 -> 세그먼테이션과 페이징 기법의 단점을 보완한 세그먼테이션-페이징 혼용 기법을 주로 사용 메모리 매핑 테이블 : 메모리 관리자는 가상 주소와 물리 주소를 일대일 매핑 테이블로 관리 페이징 기법 고정 분할 방식을 이용한 가상 메모리 관리 기법 -> 물리 주소 공간을 같은 크기로 나누어 사용 페이지: 가상 주소의 분할된 각 영역 프레임: 물리 메모리의 각 영역 페이지와 프레임 하나의 크기는 같음 페이지 테이블: 어떤 ..
2023.06.02 -
Branch and Bound(분기한정) -(1)The 0-1 Knapsack Problem
Backtracking과 유사하나 최적화문제에만 사용 state-space tree를 사용하여 문제 해결 backtracking은 거의 dfs로만 탐색 bracn and bound는 여러가지 방법으로 탐색 가능 해결방법 1. 노드가 promising한지 아닌지 결정하기 위해 노드에 bound를 계산한다. 2. bound값이 best값보다 좋지 않으면 선택하지 않는다. The 0-1 Knapsack Problem 1. Breadth-First Search로 탐색하기 최소 횟수를 얻기위해 주로 너비우선탐색 사용 큐 사용 2. Best-First Search로 탐색하기 가장 시간이 적게 걸림 다음으로 expand 하기위해 노드를 고를때 bound를 사용 Max 우선순위 큐 사용 bound가 큰 순서대로 exp..
2023.06.01 -
물리 메모리 관리
목차 1. 메모리 관리의 개요 2. 메모리 주소 3. 단일 프로그래밍 환경에서의 메모리 할당 4. 다중 프로그래밍 환경에서의 메모리 할당 1. 메모리 관리 1-1 메모리 관리 CPU는 메모리에 있는 데이터를 가져오거나 메모리에 저장하기 위해 메모리 주소 레지스터를 사용 1-2 소스코드의 번역과 실행 컴파일러: 소스코드를 컴퓨터가 실행할 수 있는 기계어로 번역한 후 한꺼번에 실행 -> 오류 발견, 코드 최적화 쉬움 인터프리터: 소스코드를 한 행씩 번역하여 실행 (자바스크립트, 베이직 등) -> 에러찾기가 어렵고 최적화 하기 힘듬 * 컴파일 과정 1. 소스코드 작성 및 컴파일 2. 목적 코드와 라이브러리 연결 3. 동적 라이브러리를 포함하여 최종 실행 1-3 메모리 관리자의 역할 메모리 관리자(Memory ..
2023.06.01 -
chap 5- Memory(2)
Associative Caches 1. Fully associative 어느 캐쉬 앤트리던 블럭에 모두 접근 가능. 검색하려면 모든 엔트리를 찾아봐야함 ->엔트리마다 comparator가 필요 -> 비용이 많이듦 2. n-way set associative 각각의 set은 n개의 엔트리를 포함한다. 블럭 번호로 어떤 set에 들어갈지 결정된다. 주어진 set 안의 모든 entry를 검색 -> n개의 comparator만 필요 예) 4-block caches Block 접근 순서: 0, 8, 0, 6, 8일때 *cache index 계산방법: 블록주소 % 캐쉬 블록 개수 DIrect mapped *cache index 계산방법: 블록주소 % set 개수 2way set associative Fully as..
2023.06.01 -
Chap 5- Memory(1)
*Temporal locality : 곧 다시 접근할 것 같은 데이터 ex) 루프안의 있는 것들 Spatial locality: 최근에 접근했던 데이터 근처에 있는 데이터 ex) 배열 데이터, 순차적 명령 * disk -> Main memory(DRAM) -> Cache memory(SRAM) 오른쪽으로 갈수록 상위레벨 *용어 Block: 복사하는 단위 Hit: 만약 접근하려는 데이터가 상위 레벨에 존재한다면 상위레벨에서 빠르게 가져옴 Miss: 접근하려는 데이터가 하위레벨에 존재한다면 하위레벨에서 가져옴 -> 시간적 페널티가 생김(miss penalty) DRAM row 단위로 데이터 접근 DDR: 클럭이 오를때와 떨어질 때 모두 데이터 전송 가능 QDR: 원래는 input과 output이 공유해서 출..
2023.05.31 -
교착상태 (deadlock)
목차 1. 교착 상태의 개요 2. 교착 상태 필요조건 3. 교착 상태 해결 방법 1. 교착 상태의 개요 1-1. 교착상태의 정의 교착상태: 2 개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태 1-2 교착 상태의 발생 언제 발생하나? 시스템 자원 - 다른 프로세스와 공유할 수 없는 자원을 사용할 때 공유 변수 - 공유 변수를 사용할 때 응용 프로그램(예: 데이터베이스)- 데이터의 일관성을 유지하기 위해 잠금을 사용할 때 1-3 자원할당 그래프 프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 방향성이 있는 그래프로 표현한 것 예) 식사하는 철학자 문제 이 문제에서 교착 상태가 발생하는 조건 철학자들은 서로 포크 공유 x 각 철학자는 다른 ..
2023.05.29