'운영체제'에 해당되는 글 2건

  1. 2009.12.11 chapter 7. Memory by 초상큼발랄 2
  2. 2009.09.10 1. 운영체재 개요 by 초상큼발랄

chapter 7. Memory


· 메모리 관리가 만족시켜야 하는 요구 조건

1. 재배치(Relocation)

2. 보호(Protect)

3. 공유(Sharing)

4. 논리적 구성

5. 물리적 구성

2-pass assembler

지금 수행된 application Memory 초과에도 사용될 수 있는 방법

· Fetch policy : 불러들이는 방법

· Placement policy :

· Replacement policy :

· 단편화(Fragmentation)

- 내부 단편화(Internal Fragmentation) : 파티션 내부 공간의 낭비가 발생하는 현상

- 외부 단편화(External Fragmentation) : Compaction 수행 방법 필요

장점: 메모리 효율성 大, 공간 활용도 大

단점: 메모리 할당 속도↓, 할당 · 해지가 계속적으로 반복

해결책 → Compaction(메모리 집약): 프로세스가 사용하는 파티션을 이동시켜 각 파티션이 연속적이 되도록 인접하게 만들고 메모리의 모든 빈 공간이 하나의 블록이 되도록 한다.

· 메모리 분할 (Memory Partition)

- 고정 분할(Fixed Partitioning)

균등 분할: 각 분할이 모두 같은 크기를 작도록 균등 분할

문제점 1) 프로그램이 파티션보다 클 수 있다.

2) 주기억장치 이용률이 매우 저조 - 내부단편화 발생(Internal Fragmentation)

비균등 분할: 위의 문제점 해결

고정된 partition을 사용할 경우 잉여 공간(내부 단편화)이 다량으로 발생

- 동적 분할(Dynamic Partitioning) :

외부 단편화 → compaction

· Placement algorithm ≒ Fit policy

1. Best Fit : 요청된 크기와 가장 근접한 크기의 메모리 선택

공간 효율성 大, 남아있는 잉여구간이 적지만 사용가능성이 적다.

비어있는 구간을 모두 다 비교해야하므로 시간이 많이 걸린다.

2. First Fit : 메모리의 처음부터 검사해 크기가 충분한 첫 번째 사용가능한 메모리 블록을 선택

메모리 공간 효율성 小, 시간이 적게 걸림(가장 마지막 메모리 위치 효율성 ↓)

3. Worst Fit : 메모리 잉여 공간이 가장 큰 메모리 할당

생각보다 비효율적이지 않다. 분할된 구간이 커짐

→ 큰메모리 구간을 남겨둬서 1차적 사용가능

4. Next Fit : 가장 최근에 배치되었던 메모리 위치에서부터 검사를 시작해 크기가 충분한 다음 위치의 사용가능한 메모리 블록을 선택

5. Last Fit :


· 리눅스/유닉스에서 내부 단편화(Internal Fragmentation)를 해결하기 위해 Slab Allocator

Architecture 마다 다르지만 일반적으로 32Bits System에서 4KB 단위의 page Frame이 고정된 크기로 분할되어있다.

If, 메모리가 400KB를 요청한다면 Page 배수가 된다.

즉 Fixed partition과 Page 묶음으로 할당 해지하는 Dynamic partition으로 사용된다.

· 리눅스는 내부 단편화(Internal Fragmentation)를 해결하기 위해서 슬랩 할당자(Slab Allocator)를 도입하고, 버디 할당자(Buddy Allocator)는 메모리 관리의 부하가 적으며 외부 단편화(External Fragmentation)를 줄일 수 있다는 장점을 제공한다.



'Education > Operating System' 카테고리의 다른 글

스레드 컨텍스트 스위치 시점 알 수 있는 방법  (0) 2010.06.28
geekos  (3) 2010.06.27
명령어 수행  (2) 2009.10.22
Interrupt  (2) 2009.10.22
Scheduling  (0) 2009.10.22
Posted by 초상큼발랄
l

1.1 기본 구성
1) 처리기(processor) : 컴퓨터 동작을 제어, 데이터를 처리
처리기가 하나만 있을 경우 중앙처리장치(CPU)라고 부름
메모리와 데이터를 교환

- MAR(Memory Address Register) : 다음에 읽거나 기록할 메모리 내 주소를 명시
- MBR(Memory Buffer Register) : 메모리에 기록되거나 메모리로 부터 읽힐 데이터를 저장
- I/O Address Register
- I/O Buffer Register : 입출력 모듈과 처리기 간의 데이터 교환을 위해 사용

- 메모리 모듈 (Memory Module) : 일련 번호로 주소가 부여된 장소 공간
-> 이진수로 저장 : 명령어 또는 데이터로 해석
- 입출력 모듈 (I/O Module) : 외부 장치로부터 처리기와 메모리로 데이터를 전송
또는 역방향으로 데이터 전송
-> 데이터가 전달 될 때 까지 일시적으로 데이터를 보관하기 위한 내부 버퍼를 가짐
2) 주기억장치 (main memory) : 데이터와 프로그램을 저장
(1) 휘발성 (Volatile) : 컴퓨터가 shutdown 될 경우 메모리의 내용이 사라짐 <ㅡ> 디스크 내용은 유지
(2) 실기억장치(Real memory) 또는 주메모리 (Primary memory)라고 부름
3) 입출력 모드 (I/O module) : 컴퓨터와 외부 환경간의 데이터 이동 담당
(1) 보조기억장치(Secondary memory device)
(2) 통신 장비(Communications equipment)
(3) 단말기(Terminal)
4) 시스템 버스 (system bus) : 처리기, 주기억장치 그리고 I/O 모듈간의 통신 제공

1.2 처리기 레지스터
1) 사용자가 볼 수 있는 레지스터 (User-Visible Registers)
- 레지스터 사용의 최적화를 통해 기계어 또는 어셈블리어 프로그래머에게 주기억장치의 참조를 최소화 할 수 있게 함.
- 처리기가 수행하는 기계어를 통해 참조
- 레지스터의 유형
@ Data (데이터)
@ Address (주소) : 데이터나 명령어의 주기억장치 주소를 저장

 

2) 제어 및 상태 레지스터 (Control and Status Registers)
- PC(Program Counter) : 다음에 수행할 명령어의 주소를 저장
- IR(Instruction Register) : 현재 수행 중인 명령어를 저장
- PSW( Program Status Word) : 상태 정보를 저장하기 위한 레지스터 집합을 포함하도록 모든 처리기는 설계됨

조건코드(Condition codes) 
Flag 라고 불림
Bits set의 단위로 연산의 결과로서 처리기 하드웨어에 의해 설정
ex) 양수, 음수 또는 0, 오버플로우 결과를 만듬
명령어 수행 결과에 대한 피드백의 목적으로 사용

인터럽트(Interrupt enable/ disable)
여러 개의 인터럽트 레지스터를 제공하여, 각각이 인터럽트 처리 루틴에 대한 포인터 역할

Supervisor / User mode



Fetch stage : Instruction을 메모리로 불러들이는 과정, 명령어를 가져오는 과정 의미


1.3 명령어 수행
1) 명령어 처리 두 단계
(1) 메모리로 부터 한 번에 하나의 명령어를 읽어들임(fetch)
(2) 읽어 들인 명령어 수행


'Education > Operating System' 카테고리의 다른 글

Trace of Process  (2) 2009.10.12
HAL(Hardware Abstraction Layer)  (0) 2009.10.07
프로세스  (0) 2009.10.07
운영체제  (0) 2009.10.06
운영체제 개요  (0) 2009.09.04
Posted by 초상큼발랄
l