8장 가상메모리
서론 프로그램이 실행되려면 필요한 부분이 메모리에 적재되어야 한다. 현대의 시분할 환경에서는 모든 프로그램이 올라갈 수는 없으므로 어떤 프로그램에게 어느 정도의 메모리를 할당할 것인지에 대한 문제가 발생한다. 운영체제는 몇몇 프로그램들에게 집중적으로 메모리를 할당한 후, 시간이 흐른 뒤 회수하여 다른 프로그램들에게 다시 집중적으로 할당해준다...
서론 프로그램이 실행되려면 필요한 부분이 메모리에 적재되어야 한다. 현대의 시분할 환경에서는 모든 프로그램이 올라갈 수는 없으므로 어떤 프로그램에게 어느 정도의 메모리를 할당할 것인지에 대한 문제가 발생한다. 운영체제는 몇몇 프로그램들에게 집중적으로 메모리를 할당한 후, 시간이 흐른 뒤 회수하여 다른 프로그램들에게 다시 집중적으로 할당해준다...
서론 컴퓨터에는 32비트, 64비트의 주소체계가 있다. 32비트라면 2^32가지의 서로 다른 메모리 위치를 구분할 수 있고, 64비트면 2^64만큼 가능하다. 컴퓨터에서는 byte 단위로 메모리 주소를 부여하기 때문에 32비트는 2^32바이트, 64비트는 2^64바이트만큼의 메모리 공간에 서로 다른 주소를 할당할 수 있다. 물론 32비...
서론 시분할 시스템에서의 CPU관리는 매우 효율적으로 관리되어야 하는 자원이다. 프로그램 실행에서 사용되는 명령에는 크게 3가지가 있다. CPU내에서 수행되는 명령은 대표적으로 Add 명령이 있으며, CPU내에서 수행되므로 수행속도가 빠르다. 메모리 접근을 필요로 하는 명령은 대표적오르 Load, Store 명령이 있으며, Add보다는 느...
프로세스의 개념 프로세스는 현재 실행중인 프로그램을 뜻하며, 일반적으로 job이라는 용어와 혼용해 사용한다. 프로세스를 이해하기 위해서는 프로세스의 문맥을 파악해야 한다. 프로세스 문맥은 프로세스가 현재 어떤 상태에서 수행되고 있는지를 알기 위해 필요한 정보를 의미한다. 예를 들어, 시분할 시스템에서는 프로세스의 타이머가 지나면 다른 프로...
프로그램의 구조와 인터럽트 프로그램 주소 영역은 코드 영역, 데이터 영역, 스택 영역, 힙 영역으로 되어 있고 프로그램 내부 구조는 함수들로 구성되어 있다. 인터럽트의 동작 원리 또한 함수의 호출 과정과 같은 맥락으로, 인터럽트 루틴 수행 후 복귀 주소가 FCB(프로세스 코드 블록)에 저장되어 사용된다. 컴퓨터 시스템의 작동 개요 ...
컴퓨터 시스템의 구조 컴퓨터 시스템은 내부 시스템과 외부 시스템으로 구분하며, 각 하드웨어 장치에는 컨트롤러라는 작은 CPU가 있다. 외부 시스템에서 입력을 하면 내부 시스템에서 출력을 해준다. 운영체제 전체가 메모리에 적재되면 비효율적이므로 핵심 부분만 항상 적재를 하며 이 부분을 커널이라 한다. CPU 연산과 I/O...
운영체제의 정의 운영체제는 하드웨어 바로 위에 있는 소프트웨어로, 운영체제가 없으면 컴퓨터는 단지 고철 덩어리에 불과하다. 컴퓨터를 사용하려면 운영체제가 반드시 필요하고, 컴퓨터를 키면 운영체제도 동시에 실행이 되며, 소프트웨어가 실행이 되려면 메모리에 저장되어야 한다. 운영체제는 매우 큰 소프트웨어이므로, 한정된 메모리를 낭비하지 않기 위...
출처 Dreamhack Memory Corruption: Double Free Bug Exploit Tech: Tcache Poisoning 서론 free 함수로 청크를 해제하면, ptmalloc2는 이를 tcache나 bins에 추가하여 관리한다. 그리고 이후에 malloc으로 비슷한 크기의 동적 할당이 발생...
내용 출처 Dreamhack Background:ptmalloc2 ptmalloc2 Memory Allocator로 리눅스에서는 ptmalloc2 알고리즘을 사용한다. ptmalloc2는 어떤 메모리가 해제되면, 해제된 메모리의 특징을 기억하고 있다가 비슷한 메모리의 할당 요청이 발생하면 이를 빠르게 반환해준다. ...
참고 Link 바닐라 자바스크립트(저자 고승원) www.programiz.com/javascript boycoding.tistory.com/category/자바스크립트%20이야기 https://www.scaler.com/topics/javascript/ Class class Name { construc...