2024/11 26

빈 공간 관리

메모리 관리 시스템프로세스 힙의 페이지를 관리하는 malloc 라이브러리일 수 있고 혹은 프로세스의 주소 공간의 일부분을 관리하는 운영체제 자체일 수 있다.빈 공간 관리의 경우 고정 크기의 경우 관리가 쉬움 → 고정 크기 단위 리스트를 유지하면서 그 중 첫 번째 항목을 반환하면 됨가변 크기 빈 공간의 경우 관리가 어려움 → malloc, free 처럼 사용자 수준 메모리 할당 라이브러리, 세그멘테이션으로 물리 메모리를 관리하는 운영체제에서 발생→ 빈공간을 다양한 크기의 작은 조각으로 분할되어 결국 단편화 발생→ 요청된 것보다 크더라도 연속된 영역이 존재하지 않으면 요청 실패가정- malloc, free에서 제공하는 것과 같은 기본 인터페이스를 가정- free()는 포인터만으로 해제하고자 하는 메모..

운영체제(OSTEP) 2024.11.09

멀티 레벨 페이지 테이블 (OSTEP 20장)

멀티 레벨 페이지 테이블선형 페이지 테이블을 트리 구조로 표현한다.매우 효율적인 방법으로 현대 시스템에서 사용되고 있음멀티 레벨 페이지 테이블 기본 개념1. 페이지 테이블을 페이지 크기의 단위로 나눈다. 페이지 테이블의 페이지가 유효하지 않은 항목만 있으면, 해당 페이지를 할당하지 않음 2. 페이지 디렉토리라는 자료 구조를 사용하여, 페이지 테이블 각 페이지의 할당 여부와 위치 파악**선형 페이지 테이블은 배열이므로 스택이 맨 마지막에 배치 되어 중간에 불필요한 부분까지 페이지를 할당해야 함 **반면 다단계 페이지 테이블의 경우 필요한 부분에 대해서만 페이지를 할당하면 되므로, 메모리를 절약할 수 있다. (페이지 테이블을 나눠 스택과 힙 사이의 공간이 존재하지 않음)- 배열의 경우 1000번 ..

TLB

TLB (주소 변환 캐시)자주 참조되는 가상-물리 주소 변환 정보를 저장하는 하드웨어 캐시 주소 변환을 빠르게 하기 위해서 TLB를 사용한다.TLB는 칩의 메모리 관리부(MMU)의 일부이다. - 프로세싱 코어와 가까운 곳에 위치TLB를 사용하지 않는 경우1. 가상 주소 생성2. 가상 주소를 물리 주소로 변환하기 위해 메인 메모리에 있는 페이지 테이블 조회 메모리 참조 1회3. 데이터 접근 : 변환된 물리 주소를 사용하여 실제 데이터를 메모리에서 읽는다. 메모리 참조 2회 TLB를 사용하는 경우1. 가상 주소 생성2. TLB 조회 : TLB에 해당 가상 주소의 페이지 테이블 엔트리가 있는지 확인 [TLB 히트] - 페이지 테이블에 대한 메모리 접근 없이 물리 주소를 즉시 얻음 ..

가상 메모리 - 요약

가상 메모리는 한정된 물리 메모리의 한계를 극복하고, 각 프로세스가 무한한 메모리를 사용할 수 있는 것 처럼 느끼도록 시스템이 메모리를 추상화한 개념 - 각 프로세스가 자신만의 메모리 공간을 가지는 것처럼 보이도록 하여 프로세스간 격리를 수행- 실제 물리 메모리가 부족할 경우 보조 기억 장치를 활용하여 필요한 데이터를 스왑하는 방식으로 무한한 메모리를 갖는 것처럼 보임- 자주 사용하는 메모리는 물리 메모리에 놓고, 자주 사용되지 않는 데이터는 스왑 영역에 내려 물리 메모리를 효율적으로 사용가상 메모리 주소- 가상 메모리 주소는 단순 주소 범위를 뜻한다.- 64비트 시스템에서는 이론적으로 16엑사 바이트의 가상 메모리 주소 공간을 가질 수 있다.→ 현실적인 제약으로 일부 비트를 사용하지 않기도 함 ..

문맥교환

문맥교환이란운영체제 커널은 문맥 전환을 통해 멀티테스킹을 구현한다.커널은 각 프로세스마다 컨텍스트를 유지한다.컨텍스트는 커널이 선점된 프로세스를 다시 시작하기 위해 필요로 하는 상태이다. - 범용 레지스터, 프로그램 카운터, 사용자 스택, 커널 스택, 상태 레지스터, 페이지 테이블, 프로세스 테이블, 파일 테이블 같은 객체들 값들로 구성커널이 실행할 프로세스 선택 - 스케줄 했다.커널이 스케줄 한 후 현재 프로세스를 선점하는 것 - 문맥 교환 **스케줄러는 준비큐에 있는 구조체에서 프로세스 ID, 프로세스 우선순위, 프로세스 상태, PCB 포인터 정보를 가져온다.PintOS에서 PCB는 thread 구조체문맥교환이 발생하는 경우1. 하드웨어 인터럽트가 발생하는 경우 타이머 인터럽트가..

인터럽트

인터럽트프로세서가 현재 실행 중인 작업을 일시 중단하고 다른 작업을 처리해야할 때 발생하는 신호 Ex) 키보드, 마우스 입력, 시스템 콜, 페이지 폴트 등등 **** 인터럽트를 실행한다고 해서 반드시 다른 작업을 처리한 후 원래 작업으로 돌아오는 것은 아니다.Ex) 문맥교환 인터럽트의 경우 다른 프로세스로 전환됨일반적인 인터럽트 사이클1. CPU가 인터럽트 발생을 확인하고, 현재 실행 중인 작업을 중단한다.2. 실행 중인 프로세스의 PC, 스택, 일반 레지스터, 상태 레지터 등의 현재 상태를 특수 저장소에 저장일반적으로 커널 스택이나 커널 메모리 영역 또는 PCB에 저장 3. CPU의 PC에 인터럽트 처리 루틴의 시작 주소를 저장하여 인터럽트 처리 인터럽터 벡터 테이블을 참조하여 인터럽트 처리 루틴 주소..