운영체제(OSTEP) 10

OSTEP 22장

물리 메모리 크기의 극복 : 정책캐시 관리메인 메모리는 시스템의 가상 메모리 페이지를 가져다 놓기 위한 캐시로 생각될 수 있음 캐시를 위한 교체 정책의 목표는 캐시 미스의 횟수를 최소화하는 것 즉, 디스크로부터 페이지를 가져오는 횟수를 최소로 만드는 것이다. (캐시 히트 최대화) 캐시 히트와 미스의 횟수를 안다면 프로그램의 평균 메모리 접근 시간을 계산할 수 있다. 캐시 성능을 측정할 때 사용하는 미터 법TM - 메모리 접근 비용TD - 디스크 접근 비용PHit - 캐시 히트 확률PMiss - 캐시 미스 확률 PHit와 PMiss는 0.0 ~ 1.0 사이의 값을 갖으며, 둘의 합은 1.0을 만족한다. **디스크 접근 비용이 너무 크기 때문에 아주 작은 미스가 발생하더라도 전체적인 AMAT에 큰 영향을 ..

운영체제(OSTEP) 2024.11.14

OSTEP 21장

메모리 계층에 레이어의 추가 필요- 지금까지 모든 페이지들이 물리 메모리에 존재한다고 가정- 현재 크게 필요하지 않은 일부를 보관해 둘 공간이 필요- 현대 시스템에서 보통 하드 디스크가 이를 담당**주소 공간이 충분히 크면, 프로그램의 자료구조들을 위한 충분한 메모리 공간이 있는지 걱정 X필요 시 메모리 할당을 운영체제에게 요청하기만 하면 된다.스왑공간은 실행되는 각 프로세스들에게 큰 가상 메모리가 있는 것 같은 환상을 줌 - 멀티 프로그래밍 시스템이 발명되면서 많은 프로세스들의 페이지를 물리 메모리에 전부 저장하는 것은 불가능- 일부 페이지를 스왑 아웃하는 기능이 필요- 멀티 프로그래밍과 사용 편의성 등의 이유로 실제 메모리보다 더 많은 용량의 메모리가 필요스왑공간디스크(HDD)에 페이지들을 저장할 수..

운영체제(OSTEP) 2024.11.12

OSTEP 18장(페이징)

페이징프로세스의 주소 공간을 고정된 크기의 단위로 분할하여, 가상 메모리와 물리 메모리를 관리하는 기법페이지각각의 고정된 크기의 단위를 [페이지]라고 한다.상응하여 물리 메모리도 각각의 고정된 크기의 단위로 나눈 것을 [페이지 프레임]이라고 부른다.-> 고정 크기의 슬롯의 배열이라고 생각가상 주소 공간의 페이지들은 물리 메모리 전체에 분산 배치되어 있다.페이징 장점- 프로세스의 주소 공간 사용 방식과는 상관없이 효율적으로 주소 공간 개념을 지원 → 힙과 스택이 어느 방향으로 커지는가, 어떻게 사용되는가에 대한 가정을 하지 않아도 됨- 빈 공간 관리의 단순함 → 모든 비어 있는 페이지의 빈 공간 리스트를 유지하고, 할당 시 페이지들을 선택하여 배치주소 공간 페이지 0 - 물리 프레임 3가상 페이지 1 ..

운영체제(OSTEP) 2024.11.10

빈 공간 관리

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

운영체제(OSTEP) 2024.11.09

OSTEP 16장

베이스와 바운드 레지스터는 메모리 낭비가 심함 → 스택과 힙 사이의 공간은 사용되지 않더라도 물리 메모리에 할당되기 때문이 문제를 해결하기 위해 세그멘테이션 등장세그멘테이션특정 길이를 가지는 연속적인 주소 공간→ MMU에논리적인 주소 공간인 세그먼트마다 베이스와 바운드 쌍이 존재 주소 공간에는 코드, 스택, 힙 세 종류의 세그멘트가 있다.세그멘테이션을 사용하면 운영체제는 각 세그멘트를 물리 메모리의 각기 다른 위치에 배치할 수 있다.사용되지 않는 가상 주소 공간이 물리 메모리를 차지하는 것을 방지할 수 있다.64KB 물리 메모리에 3개의 세그멘트(스택, 코드, 힙)과 운영체제용으로 예약된 16KB 영역이 존재현재 사용 중인 메모리에만 물리 공간이 할당됨바운드 레지스터에는 세그먼트의 크기를 저장가상 메모리..

운영체제(OSTEP) 2024.10.31

OSTEP 14장

이번 장에서는 UNIX 메모리 관리 인터페이스에 대해 논의여기서 메모리란 사용자 주소 공간을 의미메모리 공간의 종류C 프로그램이 실행되면, 두 가지 유형의 메모리 공간이 할당됨스택 메모리 - 할당과 반환이 컴파일러에 의해 암묵적으로 이루어짐 스택 메모리를 자동 메모리라고도 부름// func()가 호출되면 func를 위한 스택 프레임이 생성되고 프레임 내부에 x를 위한 공간을 할당 // func() 함수가 종료되면 스택 메모리에 있던 할당된 스택 프레임 전체가 반환됨 void func() { int x; }힙 메모리 - 오랫동안 값이 유지되어야 하는 변수를 위한 메모리 모든 할당과 반환이 프로그래머에 의해 명시적으로 처리 됨// 스택 메모리에 func 스택 프레임과 px를 위한 메모리 공간이 확보 됨..

운영체제(OSTEP) 2024.10.19

OSTEP 8장

MLFQ (멀티 레벨 피드백 큐)MLFQ가 해결하려는 두 가지 기본적인 문제1. 짧은 작업을 먼저 실행시켜 반환 시간을 최적화 운영체제는 실행 시간을 미리 알 수 없으므로 어려움 2. 응답시간을 최적화하여 응답이 빠른 시스템이라는 느낌을 받도록 하기 응답시간이 짧아지면 반환시간은 최악임 MLFQ: 기본규칙여러 개의 큐로 구성되며, 각각 다른 우선순위가 배정된다. 실행 준비가 된 프로세스는 여러 개의 큐 중 하나의 큐에 존재한다. **MLFQ는 실행할 프로세스를 결정하기 위해 우선순위를 사용즉, 높은 우선순위 큐에 존재하는 작업이 선택된다. 각 큐는 라운드 로빈 스케줄링 알고리즘을 사용한다. ** MLFQ 스케줄링의 핵심은 우선순위를 정하는 방식 // 작업의 실행을 관찰하고 그에 따라 우선순위 지정각 ..

운영체제(OSTEP) 2024.10.11

OSTEP 6장

CPU 가상화 어떻게 구현 ??-> CPU 시간을 나눠씀으로써 가상화를 구현 CPU 가상화를 구현하기 위해 두 가지를 해결해야 함 1. 성능 저하 // 과도한 오버헤드로 인한 성능 저하2. 제어 문제 // 응용 프로그램이 컴퓨터를 마음대로 제어해서는 안 된다.기본원리 : 제한적 직접 실행프로그램을 CPU 상에서 직접 실행하는 것을 의미 1. 프로세스 목록에 항목을 추가2. 프로그램 메모리 할당3. 메모리에 프로그램 탑재4. argc/argv를 위한 스택 셋업5. 레지스터 내용 삭제6. call main() 실행 main() 실행 main에서 return 명령어 실행7. 프로세스 메모리 반환8. 프로세스 목록에서 항목 제거 ** 몇 가지 문제점..

운영체제(OSTEP) 2024.10.10

OSTEP 5장

Unix 시스템에서 PID는 프로세스의 실행이나 중단과 같이 특정 프로세스를 대상으로 작업을 해야할 경우프로세스를 지칭하기 위해서 사용부모 프로세스 fork() 함수를 실행-> 자식 프로세스는 fork()가 실행된 지점부터 시작됨 -> 자식 프로세스는 부모 프로세스와 동일하지 않음 -> 자신의 주소 공간, 자신의 레지스터, 자신의 PC값을 갖는다. ** 부모 프로세스와 자식 프로세스는 fork() 시스템 콜 반환값이 서로 다름부모 - 자식 PID자식 - 0fork() 시스템 콜프로세스를 생성할 때 사용된다.자식 프로세스는 부모 프로세스와 동일하지 않음자식 프로세스는 자신만의 주소 공간, 레지스터, 자신의 PC 값을 갖는다.wait() 시스템 콜부모 프로세스가 자식 프로세스가 종료될 때까지 대기할 때 사용..

운영체제(OSTEP) 2024.10.09

OSTEP 4장

프로세스일반적으로 프로세스는 실행 중인 프로그램으로 정의**프로그램 - 디스크 상에 존재, 실행을 위한 명령어와 정적 데이터의 묶음운영체제는 CPU를 가상화하여 CPU가 여러 개 존재한다는 환상을 제공한다.- 문맥교환을 통한 동시성 구현을 통해 CPU 가상화를 실현**시분할 기법하나의 프로세스를 실행하고 중단 후 다른 프로세스를 실행하는 것을 반복 -> 여러 CPU가 존재한다는 환상을 줌- CPU를 공유하기 때문에, 각 프로세스의 성능은 낮아짐 ** 문맥교환 - CPU에서 프로그램 실행을 잠시 중단하고 다른 프로그램을 실행하는 것- 현재 실행 중인 프로세스의 PCB를 준비큐 혹은 대기큐에 저장하고, 준비큐에서 우선순위가 높은 프로세스의PCB를 CPU에 적재하는 것을 의미메커니즘과 정책**메커니즘 - Ho..

운영체제(OSTEP) 2024.10.08