ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Chapter 9: Main Memory
    os 2020. 11. 4. 20:39

    Background

    • Memory로 이동한 프로그램 -> 프로세스
    • 하나의 프로그램이 여러 개의 프로세스를 만들 수 있다
    • CPU에 직접적으로 전송하는 것은 memory이다.

    Base registers: 시작 주소

    Limit registers : 프로세스의 용량을 나타낸다.

    Address Binding

    CPU에 의해서 발생되는 address하고, physical address하고 다르다.

     -> 이것을 어떻게 일치시켜야 한다. -> 이것을 Address Binding이다.

    왜 그런 가?

    CPU에서 발생하는 address는 시작이 0000부터 시작한다.

     -> 찾아가려는 코드는 0부터 얼마만큼 떨어져 있는 지 표시하는 것이 실제 메모리 주소이다 -> 다시 입력 exe) 300040

     -> CPU는 실제 메모리 주소를 모른다. 그래서 주소 시작을 0000부터 시작한다.

    ex) CPU는 14만큼 떨어져 있다고 생각한다. 실제 메모리는 74014만큼 떨어져 있다.

     

    Binding of Instructions and Data to Memory

    Compile 할 때 Address Binding

     -> 미리 메모리 위치를 먼저 안다 하지만 이런 경우는 거이 없다

    Load time(메모리에 프로세스를 올리는 것)

     -> 흔하지 않는다

     -> 로드 할 때 변화가 없다

    Execution time(수행할 때)

    프로세스가 항상 같은 위치에 있지 않는다.

     -> 프로그램이 종료, 실행을 하면서 위치가 계속해서 변한다.

     -> 일반적으로 이 때 address Binding이 일어난다.

    Multistep Processing of a User Program

     

    Source code -> 원시프로그램

    컴파일을 하는 이유-> 우리가 쓰는 c언어는 하이 레벨 언어이다.

    하지만 컴퓨터는 기계어를 이해 할 수 있다.

    컴파일을 통해서 c언어를 기계어로 바꾼다.

    Ex) 원시프로그램 test.c -> 목적프로그램 test.obj(object) -> 실행프로그램 test.exe

     

    Link: 연결해준다. -> 다시 보기

    Load는 파일을 올리는 것이다.

     

    Link를 해야 라이브러리안에 있는 함수를 사용할 수 있다.

    Logical, Physical Address

    Logical Address

    -> CPU에 의해서 생기는 address

    Physical Address

    -> 메모리상에 있는 실질 적인 address

     

    Memory-Management Unit (MMU)

    MMU는 하드웨어이다.

    Address binding을 해준다.

    Base registerrelocation registe고 부르기도 한다.

    시작 주소에다가 relocation register 더해주면 피지컬 주소가 나온다.

     

    Dynamic Linking

    Dynamic 동적

    Static 정적

     

    링크를 동적인 상태로 한다.

    그렇지 않으면, 해주지 않는다.

     

    Swapping

    Swapping

    두개를 서로 교환해주는 것

     

    Backing store(디스크라고 생각)

    Roll out, roll in (Swap outswap in)

    Backing store 보조 메모리

    Swap outswap in을 하는 것을 swapping이라고 한다

     

    Context Switch Time including Swapping

    Swapping을 자주한다는 것은 -> 시간이 걸린다.

     

    Ex) 100MB process swapping to hard disk with transfer rate of 50MB/sec

    Swap out하면 2초가 걸린다.(in도 그렇다)

    Swapping을 하는 데, 4초가 걸린다.

     

    -> swapping을 하는데, 시간이 많이 걸린다.

    -> 이작업은 IO작업이다. 디스크에 다시 옮기고, 메모리로 다시 옮긴다.

     

    어떻게 하면 이 작업을 적게 할 수 있는가?

    -> 어떤 프로세스를 빼내는 것에 따라서 시간이 다르게 된다. -> 가장 안 쓸 프로세스를 나중에 하는 것이 좋다

     

    Swapping on Mobile Systems

    메모리가 작다

    flash 메모리를 사용한다.

    일반 적인 컴퓨터보다 성능이 낮다.

     

    IOS도 사이즈가 작다

    Android도 작다

     

    Contiguous Allocation

    Contiguous Allocation(연속해서 할당한다.)

     

    2개의 파트로 나눠진다.

    OS

    User processes

     

    user processes 보호하기 위해서

    Limit registerphysical addresses만큼의 크기를 가진다.’

     

    Multiple-partition allocation

     

    파트를 여러 개로 만든다.

    Degree of multiprogramming -> 메모리 상에 있는 프로세스의 개수

     

    1. OS를 제외한 Degree of multiprogramming3

    2. 2 프로세스8이 끝내서, 나갔다.

    3. 3 프로세스9가 들어왔다

    4. 4 프로세스10이 들어왔다.

     

    OS가 메모리를 관리해주기 위해서 필요한 정보

    1. 할당된 메모리가 어는 위치에 있는 알 수 있는 정보

    2. Hole의 대한 정보도 필요하다. 어디가 비어 있는가

     

    Dynamic Storage-Allocation Problem

    First-fit: 가장 먼저 hole중에서 프로세스보다 큰 위치에 들어간다.

    Best-fit: hole들을 정렬해서, 가장 작은 것부터 가장 큰 것을 그 프로세스가 들어갈 수 있는 hole중에서 가장 작은 데 들어간다.

    Worst-fit: 가장 큰 hole에 들어간다.

     

    Bestworst는 정렬이 필요하다

    First는 정렬이 할 필요 없다 -> 빠르다

     

    Worst-fit이 존재하는 이유?

    Fit을 하고 다음 남은 부분을 분할해서 나중에 할당하는데 사용가능 하다

    Worst는 제일 큰 것을 할당해서, 필요 없는 부분을 낭비없이 분할 할 수 있다.

    Firstbest는 너무 작아서 사용할 수 없는 부분으로 남게 될 가능성이 있다.

     

    First, best이 메모리 활용도와 속도가 worst보다 좋다

     

    Fragmentation(남은 공간)

    • External Fragmentation
      • 프로세스들이 메모리상에 있을 때, 빈 공간(hole)
    • Internal Fragmentation
      • 각 프로세스한테, 주어진 크기가 있다. 주어진 크기 내에서 비어 있는 공간

    compaction

    비어 있는 공간을 합친다

    Ex) 30 26 10 -> 66으로 바꾼다.

    -> 공간의 활용도를 높일 수 있다.

    하지만 프로세스들의 위치를 바꿔야한다 -> I/O작업이 필요하다. 시간이 많이 걸린다.

    이동하는 데이터의 크기에 따라서, 움직이는 I/O작업이 달라진다

     

    Segmentation(조각)

    하나의 프로세스를 여러 개의 조각으로 나눈다.

     

    main program

    procedure

    function

    method

    object

    local variables,

    global variables

    common block

    stack

    symbol table

    Arrays

    -> 하나의 프로세스가 된다

    Users View of a Program

    Logical View of Segmentation

    로직에서 피지컬 로 이동하는 것을 생각한다

     

    Segmentation Architecture

    Logical address2가지의 형태로 나눠진다.

    <segment-number, offset>

    • segment-number: 메모리의 시작 주소
    • Offset: segment-number부터 얼마 만큼 떨어져 있는 가를 나타내는 값

    Segment table: 메모리에 있다(배열)

    • Base: Segment의 시작 주소
    • Limit: Segment의 크기를 나타낸다.

    Segment table을 찾아야 한다

    Segment-table base register (STBR): Segment-table이 어디 있는지 알 수 있는 위치를 나타낸다.

    Segment-table length register (STLR) : Segment가 몇 개 있는가를 나타낸다

     

    Segment number< STLR 보다 작아야한다

    -> STLR보다 크면, 찾는 범위를 넘어가기 때문이다.

    Segmentation Hardware

    s: segment number

    d: segment Offset

     

    Paging

    frames: physical memory 의 크기를 일정한 크기로 나눈다.

    Pages: logical memory의 크기를 일정한 크기로 나눈다

    다시 보기

     

    Paging다시 확인

    각각의 Pages들이 몇 번

    다시 확인

     

    N개의 프로세스가 필요하면, n개의 프레임이 필요하다

    Page table 메모리 상에 있다.

    Page table에 찾아야 한다. 찾을 수 있다.

    Internal fragmentation발생 할 수 있다

     

    Address Translation Scheme

    Page offset: page시작 부터 얼마나 떨어져 있는가 다시

    Page number:

    2n까지 커버 할 수 있다.

    -> 비트는 한 개 당 01이다.

    Page number: max 2^(m-n)

    logical address space 2m

    page size 2n

    다시보기

     

    Internal fragmentation

    Best: 0

    Worst: page size – 1

    Page의 크기가 줄면

    페이지테이블의 크기가 커져요

     

    Paging Hardware

    Paging Model of Logical and  Physical Memory

    Free Frames

     

    Implementation of Page Table

    Page table을 찾아야 한다

    Page-table base register (PTBR) : 메모리 상에서 시작하는 주소값을 가지고 있다

    Page-table length register (PTLR) : 크기를 나타낸다.

    몇 번 메모리에 접근 해야 한가?

    Total 2번 접근한다

    two memory access

    -> 시간이 많이 걸린다

    보안하는 것

    associative memory

    translation look-aside buffers (TLBs)

     

    Paging Hardware With TLB

    한번에 찾아간다

    메모리의 page table의 일부만 가진다

    하지만 메모리에 있지 않는다. -> 메모리 보다 빠르다

    translation look-aside buffers

    Associative Memory

    -> 메모리 access1번이다

    -> 하지만 miss를 하면 TLB access + 2*memory access이 필요하다

    hit ratio: hit를 하는 비율 -> 99 나온다.

     

    Shared Pages

    Shared code(shared Pages)(공유)

    공간을 아껴 주기 위해서 같이 사용한다 -. 다시하기

    각 프로세스 마다 사용하는 데이터 -> private

    Logical address space: 32-bit -> 가상 메모리의 크기

    Page table2^32 이다.

    Hierarchical Page Tables

    Logical address table을 여러 table로 나눈다

    Two-Level Page-Table Scheme

     

    Page table size : 1000

    100개씩 쪼갠다

    메모리의 공간을 활용이 높다

     

    단점

    1.메모리 접근을 3해야 한다 -> 느리다.

    2. Outer page table의 공간이 더 필요하다.

     

     

     

     

     

     

     

     

     

     

    Address-Translation Scheme

    P1으로 outer page table을 찾아간다

    2번째 page table을 찾아간다.

    Hashed Page Table

    Hash를 사용하는 것이다

    Hash table은 크기가 작다

    P -> hash function에 넣는다

    계산을  한다

    -> 그러면 인덱스 값이 나온다


    같은 인덱스 값이 나올 수 있다 -> 충돌

    -> 링크리스트로 연결한다

    Inverted Page Table Architecture

    Inverted (거꾸로)

    모든 프로세스가 page table을 사용한다

    -> 공간 절약이 된다.

    page table안에는

    실질적인 메모리의 상에서의 프레임의 개수가 있다.

    프레임 0에는 어떤 프로세스가 들어가 있다.

    Pid: 프로세스의 id

    -> 찾는데 시간이 많이 걸린다.

    'os' 카테고리의 다른 글

    Chapter 10: Virtual Memory  (0) 2020.11.28
    Chapter 8: Deadlocks  (0) 2020.10.26
    Chapter 6: Synchronization Tools  (0) 2020.10.16
    Chapter 2: Operating-System Structures  (0) 2020.10.11
    Chapter 5: CPU Scheduling  (0) 2020.09.28

    댓글

Designed by Tistory.