❗️키워드 정리❗️ 1. 가상 메모리, 페이징가상 메모리(virtual memory)실제 메모리를 추상화하여 가상 메모리에 올림으로써 프로세스들이 연속된 물리적 메모리 공간처럼 여기게 만들수 있을 뿐만 아니라 실제 메모리보다 많은 크기의 메모리도 운용이 가능 이슈주소 번역(Address Translation) : 가상 메모리와 물리 메모리의 주소를 번역해 매핑가상 공간에 대한 관리페이징 기법(Paging)가상 메모리와 물리 메모리의 매핑을 위한 기술컴퓨터의 물리적 메모리는 연속적으로 할당되어 존재할 필요가 없으며, 반대로 연속적으로 존재하지 않는 물리적 메모리라도 페이징 기법을 통해 연속적으로 존재하는 것처럼 이용될 수 있음 특징가상 메모리 상의 주소 공간을 일정한 크기로 분할(페이지)주소 공간은..
728x90
반응형
분류 전체보기
9.9 동적 메모리 할당동적 메모리 할당기는 힙(Heap)이라고 하는 프로세스의 가상메모리 영역을 관리미초기화된 데이터 영역(bss) 직후에서 시작해서 위쪽으로(높은 주소 방향으로) 커지는 무요구 메모리 영역커널은 힙의 꼭대기를 가르키는 변수 brk를 사용할당기는 힙을 다양한 크기의 블록들의 집합으로 관리(각 블록은 할당 또는 가용한 가상메모리의 연속적인 묶음)명시적 할당기(malloc, free)응용 프로그램이 명시적으로 할당된 블록을 반환해 줄 것을 요구(free)할당 : malloc / 해제 : free묵시적 할당기(garbage collector)자동으로 사용하지 않은 할당된 블록을 반환시켜주는 역할을 함9.9.1 malloc과 free 함수프로그램은 malloc 함수를 호출해서 힙으로부터 블록들..
예외적인 제어흐름(Exceptional Control Flow)8.1 예외상황- 하드웨어와 운영체제 의해서 구현된 예외적인 제어흐름의 한 가지의 형태- 어떤 프로세서 상태 변화(이벤트)에 대한 대응특징프로세서가 이벤트가 발생했다는 것을 감지하면, '예외 테이블'이라고 하는 점프 테이블을 통해서 이 특정 종류의 이벤트를 처리하기 위해 예외처리 핸들러로 간접 프로시저 콜을 하게 됨예외 테이블 : ISR(Interrupt Service Routine)의 집합 -> 예외 내용(정보)를 담는 테이블간접 프로시저 콜 : 직접 함수의 주소를 사용하지 않고, 포인터를 통해 호출함(객체의 실제 타입을 알지 못해도 올바른 함수를 호출할 수 있음 -> 다형성) 예외처리 종료 후 상황제어를 현..
링커 여러 개의 코드와 데이터를 모아서 이를 연결해 메모리에 로드될 수 있고, 실행될 수 있는 한 개의 file을 만들어 내는 역할을 수행 목적 큰 프로그램을 작성하는데 도움이 됨 위험한 프로그래밍 에러를 피할 수 있음 변수 영역 규칙이 구현되었는지 이해하는데 도움이 됨 공유 라이브러리에 대해 이해할 수 있음 컴파일러 드라이버 대부분의 컴파일 시스템은 사용자를 대신해 언어 전처리기, 컴파일러, 어셈블러, 링커 를 필요에 따라 호출하게 만들어졌음(ex. GCC 드라이버 등..) 컴파일을 모두 마친 실행 파일을 prog이라고 한다면, 쉘에 ./prog 라는 명령어를 통해 해당 파일을 실행 쉘이 운영체제 내의 로더를 호출시키고, 로더 는 실행파일 prog의 코드와 데이터를 메모리로 복사하고, 제어를 시작부분으..
1. RB tree 초기화 rbtree *new_rbtree(void) { rbtree *p = (rbtree *)calloc(1, sizeof(rbtree)); node_t *t = (node_t *)calloc(1, sizeof(node_t)); t->color = RBTREE_BLACK; p->nil = t; p->root = p->nil; return p; } 2. RB tree 후위순회하면서 삭제하기 void postOrder_delete(node_t *root, node_t *nil) { if (nil == root) return; postOrder_delete(root->left, nil); postOrder_delete(root->right, nil); free(root); } void d..
1. 달팽이는 올라가고 싶다 전진, 후진, 목표지점을 받아서 반복문을 돌리면서 목표지점을 넘는 순간을 출력하려고 했는데, 시간이 짧아 시간초과 예상 공식이 있을 것 같아서 ((목표지점 - 전진) // (전진 - 후진)) + 1 이라는 공식이 나왔음 예외사항을 처리해주면 완료 import sys input = sys.stdin.readline go, back, target = map(int, input().split()) answer = 0 if target
728x90
반응형