SlideShare una empresa de Scribd logo
1 de 49
Chapter 8. Main Memory
                  22-1 나영근
목적

   메모리 하드웨어를 구성하는 다양한 방법 배우기
   페이징과 세그먼테이션 기법을 포함한 다양한 메모리 관리 기법 배우기
Background

   메모리는 각각 주소가 할당된 원드, 바이트 들로 구성
   CPU는 PC(Program counter)가 가리키는 다음 명령어를 가져온다
       메모리에서
   그 이후 피연산자가 필요할 경우 메모리에서 또 가져오고
   결과를 저장한다.
Background

   Main Memory, Register들은 CPU가 직접 접근 가능한 저장장치
   모든 명령어와 자료들을 수행하기 위해선 CPU가 가져와야 한다.
       만약 보조기억장치나 다른 곳에 있다면 먼저 메모리로 옮긴 이후에 수행


   레지스터는 일반적으로 CPU 1clock cycle만에 접근 ( ex- load a)
   메모리는 일반적으로 CPU 2clock cycle 이상
       버스도 타야되고 주소에 맞는 위치도 추적해야됨..
       CPU가 준비가 되었는데 메모리에 접근하지 못해 자료가 없는 경우가 있음(지연)
       캐시
Background

   CPU 스케줄링의 결과로
       CPU 사용률 증가
       사용자에 대한 반응속도 증가
   성능 향상을 위해선 메모리에 여러 프로세스를 유지 해야함


   각 프로세스는 분리된 메모리 공간을 갖는다
   Base register 와 limit register는 프로세스 주소 공간을 결정하는 데 사용
Background

   프로그램은 보조 기억장치에 이진 실행 파일로 저장
       메모리 관리에 따라 프로세스는 디스크와 메모리 사이를 움직임
       라운드 로빈을 기억해보세요
        p1
        p2
        p3




   디스크 내의 프로세스는 실행을 위해 Input Queue에서 메모리로 가기 위해 대기
Address Binding

   모든 프로그램에서는 메모리 주소가 필요
   그 주소를 바인딩 하는 타이밍을 말하는거임..


   Compile Time 바인딩
        프로그램이 어디에 얹어질지 컴파일 시점에 안다면 절대 코드 생성 가능
        절대적인 메모리 위치를 입력하는 것
        보통 운영체제의 bootloader들이 많이 그럼..
   Load Time 바인딩
        메모리 위치가 컴파일 시간에 알 수 없다면 재배치 코드를 생성
        실제로 프로그램이 어디에 갈지 모르기 때문에 시작점을 기준으로 주소 바인딩
        이후 메모리 load 시점에 처리해주면 됨
   Excution time 바인딩
        실행중에 메모리가 옮겨질 수 있다면..
        하드웨어적 지원 필요
Address Binding
                                                     1   A(200)
                                                         LOAD A
   모든 프로그램에서는 메모리 주소가 필요
   그 주소를 바인딩 하는 타이밍을 말하는거임..


   Compile Time 바인딩
        프로그램이 어디에 얹어질지 컴파일 시점에 안다면 절대 코드 생성 가능
        절대적인 메모리 위치를 입력하는 것
        보통 운영체제의 bootloader들이 많이 그럼..
   Load Time 바인딩
        메모리 위치가 컴파일 시간에 알 수 없다면 재배치 코드를 생성
        실제로 프로그램이 어디에 갈지 모르기 때문에 시작점을 기준으로 주소 바인딩
        이후 메모리 load 시점에 처리해주면 됨
   Excution time 바인딩
        실행중에 메모리가 옮겨질 수 있다면..
        하드웨어적 지원 필요
Address Binding
                                                     0
                                                     1   200
                                                     2   LOAD 1
   모든 프로그램에서는 메모리 주소가 필요                            3
   그 주소를 바인딩 하는 타이밍을 말하는거임..


   Compile Time 바인딩
        프로그램이 어디에 얹어질지 컴파일 시점에 안다면 절대 코드 생성 가능
        절대적인 메모리 위치를 입력하는 것
        보통 운영체제의 bootloader들이 많이 그럼..
   Load Time 바인딩
        메모리 위치가 컴파일 시간에 알 수 없다면 재배치 코드를 생성
        실제로 프로그램이 어디에 갈지 모르기 때문에 시작점을 기준으로 주소 바인딩
        이후 메모리 load 시점에 처리해주면 됨
   Excution time 바인딩
        실행중에 메모리가 옮겨질 수 있다면..
        하드웨어적 지원 필요
Address Binding
                                                     0
                                                     1   200
                                                     2   LOAD 시작점+1
   모든 프로그램에서는 메모리 주소가 필요                            3
   그 주소를 바인딩 하는 타이밍을 말하는거임..


   Compile Time 바인딩
        프로그램이 어디에 얹어질지 컴파일 시점에 안다면 절대 코드 생성 가능
        절대적인 메모리 위치를 입력하는 것
        보통 운영체제의 bootloader들이 많이 그럼..
   Load Time 바인딩
        메모리 위치가 컴파일 시간에 알 수 없다면 재배치 코드를 생성
        실제로 프로그램이 어디에 갈지 모르기 때문에 시작점을 기준으로 주소 바인딩
        이후 메모리 load 시점에 처리해주면 됨
   Excution time 바인딩
        실행중에 메모리가 옮겨질 수 있다면..
        하드웨어적 지원 필요
Address Binding

   모든 프로그램에서는 메모리 주소가 필요
   그 주소를 바인딩 하는 타이밍을 말하는거임..


   Compile Time 바인딩
        프로그램이 어디에 얹어질지 컴파일 시점에 안다면 절대 코드 생성 가능
        절대적인 메모리 위치를 입력하는 것                         14
        보통 운영체제의 bootloader들이 많이 그럼..               15 200
   Load Time 바인딩                                    16 LOAD 시작점+1
        메모리 위치가 컴파일 시간에 알 수 없다면 재배치 코드를 생성          17
        실제로 프로그램이 어디에 갈지 모르기 때문에 시작점을 기준으로 주소 바인딩
        이후 메모리 load 시점에 처리해주면 됨
   Excution time 바인딩
        실행중에 메모리가 옮겨질 수 있다면..
        하드웨어적 지원 필요
Logical Address, Physical Address Space

   Memory Management의 필수 요소


   Logical Address
        CPU가 생성하는 주소
        가상 주소
   Physical Address
        Memory에서 쓰이는 실제 주소


   이를 관리하기 위해 MMU가 필요
Memory Management Unit(MMU)

   Logical Address를 Physical Address로 Mapping하는 하드웨어
   보내는 순간 더함


   프로그래머는 논리주소만 취급
       실제 주소를 모른당.
Dynamic Loading

   대규모 코드 필요 시 유용
        OS의 기능이 필요 없다            주 프로그램 메모리 적제
              머 지원해 줄수는 있다
        메모리 공간이 적어짐
   Stub
        루틴이 있다는 걸 알려주는 작은 코드
                                       사용되는 루틴이 있을 때 메
                                       모리에 있는지 확인
   특히 라이브러리 사용시 유용
        Stdio같은 거 있잔아요..
        모든 라이브러리가 코드마다 박혀 있을 필요가 읍다    없을 시 디스크에서 메모리
        코드 효율성 업~                      적재 후 실행
Swapping

   임시적으로 프로세스를 메모리에서 저장장소로 옮기고 실행을
    위해 다시 메모리로 적재하는 것
   Dispatcher가 처리
   Swap out
        메모리에서 저장 장소로 옮겨지는 것
        Input Queue로
   Swap in
        저장 장소에서 실행을 위해 메모리로 다시 적재
        Ready Queue로
   Roll out, Rool in
        우선순위 기반의 스케줄링 알고리즘을 위해 다양하게 사용되는
         Swapping
        낮은 우선순위 프로세스는 높은 우선순위 프로세스를 위해 Roll out
         한다.
   Swapping Time의 대부분은 전송시간
        이는 당연히 스왑되는 메모리 양에 비례
Contiguous Allocation

   Main Memory는 두 부분으로 나뉜다
       OS
            보통 인터럽트 백터와 함께 하위 메모리에 위치

       사용자 프로세스
            상위 메모리



   각 프로세서는 메모리의 하나의 연속적인 부분에 포함
   Base register 방식으로 사용자 프로세스 끼리 서로 보호
       Base register는 가장 작은 물리 주소값 포함
       Limit register는 논리 주소의 크기 포함
Contiguous Allocation
Contiguous Allocation

   Hole(구멍)
       유효한 메모리 블록
       메모리에는 다양한 구멍이 있다
   운영체제는
       할당된 부분(allocated partition)
       자유 부분(free partitions = hole)
       을 보관                              OS          OS          OS          OS

   프로세스 도착 시 큰 구멍에 할당                  process 5   process 5   process 5   process 5
                                                                process 9   process 9

                                        process 8                           process 10


                                        process 2   process 2   process 2   process 2
Contiguous Allocation

   자유 구멍 리스트에서 프로세스 할당 방법
       First-fit(첫번째 만족)
            충분히 큰 첫 번째 구멍에 할당
       Best-fit(최적의 만족)
            충분히 큰 구멍 중 가장 작은 구멍에 할당
            크기 순서대로 정렬되어 있지 않다면 전체 리스트를 찾아야함
            가장 작은 남겨진 구멍을 만든다
       Worst-fit(최악의 만족)
            가장 큰 구멍에 할당
            이것두 전체 리스트 찾아야 함
            남겨진 구멍의 크기가 가장 크다
       First-fit과 best-fit이 속도와 저장소 사용률 측면에서 더 좋다
       일반적으로 first-fit이 속도가 가장 빠르다
Quiz
단편화(Fragmentation)

   External Fragmentation
        전체 메모리 공간은 한 요청을 만족시키기에 충분하지만 연속적이지 않다
        Compaction (압축)
                                                                                  process 11
               압축을 통해 External Fragmentation을 줄인다
               모든 자유 메모리 공간이 함께 모여 큰 블록으로 만들기 위해 하는 짓
               재배치가 동적일 때만 가능하다, 재배치가 실행 시간에 이루어지는 경우에만 가능


    OS                   OS               OS            OS           OS           OS

process 5             process 5        process 5     process 5    process 5    process 5
                                       process 9     process 9

process 8                                            process 10   process 10
                                                                               process 10

process 2             process 2        process 2     process 2    process 2    process 2
단편화(Fragmentation)

   Internal Fragmentation
        할당된 메모리가 요청한 메모리보다 아주 약간 더 큰 경우에 생김
        정수배의 메모리를 할당하는게 보통인데 이로 인해 남는 공간을 의미




                    OS                    OS

                 process 5             process 5
                             126byte
                  128byte              process 8
                                                   2byte의 internal fragmentation

                 process 2             process 2
Fragmentation

   External Fragmentation 문제를 해결하는 방법으로는 3가지가 있다
       아까 말했던 압축
           비용이 많이 든다..

       페이징
       세그먼테이션
Paging

   연속적이지 않게 쪼개서 메모리에 적재하는 방식
   페이징으로 인해 발생하는 이점
       프로세스의 Physical Address 공간이 연속적이지 않아도 된다
       프로세스는 메모리가 유효할 때는 언제든지 Physical Address에 할당된다
   Physical Memory 는 프레임(2의 지수)으로 나눠진다
       프레임은 일정 크기의 블록(2의 지수 byte)
   Logical Address는 페이지라고 불리는 같은 크기의 블록으로 나뉜다
   모든 자유 프레임을 기록하고 관리
   크기가 n인 페이지 프로그램을 실행하기 위해 n개의 자유 프레임을 찾는다
   Logical Address를 Physical Address로 변환하는 페이지 테이블 설정
   External Fragmentation은 발생하지 않지만 Internal Fragmentation은 발생
   각각의 블록마다 짜잘하게 생기기 때문.
Paging

   Paging에서의 internal Fragmentation 예시


   프로세스가 72766 byte요구하고 페이지가 2048의 크기일때
   나누면 36개의 프레임 필요
   근데 마지막 프레임은 꼴랑 1086만 씀 때문에 발생
Paging
   페이지 테이블
       Physical Address와 각 페이지의 기본 주소를 포함
   페이지 테이블은 각 프로세스 별로 생성


   CPU에 의해 생성되는 Logical는 아래로 구성
       Page Number(p)
            Physical Memory내의 각 페이지의 기본 주소를 포함
            페이지 테이블의 인덱스로 사용
       Page offset(d)
            메모리 유닛에 보내지는 물리 메모리 주소를 조합하기 위해
             기본 주소와 조합된다


   Logical Address 공간의 크기가 2^m이고
    페이지 크기가 2^n이면
Paging
Paging      페이지 (프레임) 크기: 4 bytes
            물리 메모리: 32 bytes
                8 프레임
                주소를 위한 5 bits
                페이지 테이블 엔트리를 위한 3 bits

            논리 주소 공간: 16 bytes
                4 페이지
                주소를 위한 4 bits


            논리 주소 4 bits
                상위 2 bits: 페이지 번호
                하위 2 bits: 페이지 오프셋


            논리 주소 0 (0000)은
                페이지 0, 오프셋 0 → 5 x 4 + 0 = 20

            논리 주소11 (1011)은
                페이지 2, 오프셋 3 → 1 x 4 + 3 = 7
Paging

   일반적으로 페이지 테이블 엔트리는 4바이트
   32-bit 엔트리는 2^32 개의 물리 페이지 프레임 중 하나를 가리킬 수 있음
   한 프레임의 크기는 일반적으로 4(2^12)KB


   4byte 페이지 테이블 엔트리를 가진 시스템은 물리메모리의 2^44 bytes = 16TV를
    지정할 수 있다.
Paging

   새로운 프로세스가 생성되면
       4페이지 주소 공간 필요




       이건 예시~
Page Table 구현

   페이지 테이블은 Main Memory에 저장
       페이지 테이블 기본 레지스터(Page-table base register: PTBR)
       페이지 테이블 길이 레지스터(Page-table length register: PRLR)
   모든 데이터/명령 접근은 두번의 메모리 접근이 필요
       페이지 테이블 접근
       데이터/명령어 접근
   이로 인한 오버헤드를 TLB(translation look-aside buffers)를 통해 해결
       특수한 빠른 검색이 가능한 하드웨어 캐시
Quiz
TLB(Translation look-aside buffer)

   매우 빠른 연관 메모리
   페이지 테이블을 위해 쓰이는 캐시


   TLB는 몇 개의 페이지 테이블 엔트리를 포함
       CPU에 의해 논리 주소가 생성되면 그 페이지 번호를 TLB에서 확인한다
       페이지 번호가 있을 경우 프레임 번호를 바로 알고 메모리에 접근
       없을 경우 (TLB miss) Main memory의 페이지 테이블로 접근
       프레임 번호가 얻어지면 이를 통해 메모리 접근에 사용
       페이지 번호와 프레임 번호를 TLB에 추가
       TLB가 가득 차면 하나를 선택해 삭제
            최근에 사용되지 않은 것(LRU), 무작위 등
TLB의 구조
유효 메모리 접근 시간
   적중률(Hit ratio: )
        페이지 번호가 TLB에서 발견될 확률
        Ex) 80% 적중률 : 요청하는 페이지 번호의 80%를 TLB에서 찾을 수 있다


   TLB 검색 시간 =         time unit
   메모리 접근 시간 = τ time unit


   유효 접근 시간(Effective Access Time : EAT)
        EAT = (τ + )   + (2τ + )(1 – )



       = 80%,              = 20 nanosecond,   τ = 100 nanosecond
유효 메모리 접근 시간
   적중률(Hit ratio: )
        페이지 번호가 TLB에서 발견될 확률
        Ex) 80% 적중률 : 요청하는 페이지 번호의 80%를 TLB에서 찾을 수 있다


   TLB 검색 시간 =         time unit
   메모리 접근 시간 = τ time unit


   유효 접근 시간(Effective Access Time : EAT)
        EAT = (τ + )   + (2τ + )(1 – )



       = 80%,              = 20 nanosecond,       τ = 100 nanosecond
        EAT = (100 + 20) x 0.8 + ( 2x100 + 20) x 0.2 = 140 nanosecond
메모리 보호

   보호 비트
       메모리 보호는 각 프레임의 연관된 보호 비트를 통해 구현
       한 비트는 페이지가 read-only인지 read-write인지 정의
       읽기 전용 페이지에 대한 쓰기 시도는 하드웨어 트랩 발생


   유효-무효 비트
       페이지 테이블의 각 항목에 추가
       유효 : 관련된 페이지가 프로세스의 논리 주소 공간에 존재하며 합법적인 페이지
       무효 : 페이지가 프로세스의 논리 주소 공간에 속하지 않는다는 것
메모리 보호

   다음과 같은 시스템을 가정해보자
       14-비트 주소 공간,
       2KB의 페이지(프레임) 길이


   프로세스는 6 x 2KB의 주소 공간을
    갖는다
   페이지 테이블 길이: 8 (=23)


   페이지 0부터 5까지의 주소는 페이지
    테이블을 통해 정상적으로 매핑된다


   페이지 6과 7에 대한 어떤 시도든지
    유효-무효 비트가 무효로 설정되
    고, 트랩이 발생한다
세그멘테이션 : Segmentation

   프로그램을 위한 메모리의 사용자 관점
       프로그램은 조각들(segments) 집합이다.
   세그먼트는 다음과 같은 논리 단위이다
       주 프로그램(main program),
       절차(procedure),
       함수(function),
       방법(method),
       객체(object),
       지역 변수(local variables), 전역 변수(global variables),
       공통 블록(common block),
       스택(stack),
       기호 테이블(symbol table), 배열(arrays)
   세그멘테이션은 메모리의 사용자 관점을 지원하는 메모리 관리 방법!
세그멘테이션 : Segmentation

   프로그램은 세그먼트의 집합이다
       주 프로그램(main program)
       서브루틴(subroutine)
       제곱근(sqrt)
       스택(stack)
       기호 테이블(symbol table)


   세그먼트 내의 요소들은 세그먼트의 시작점으로부터의 오프셋
    으로 구별
       제곱근(sqrt)의 1번째 문장
       스택 내의 5번째 요소
       주소를 위한 <세그먼트 이름, 오프셋>
세그멘테이션 : Segmentation
                                              1
                                              4
                             1
                                      2


                         3                    2
                                     4
                                              3



                                 사용자 공간   물리 메모리 공간

       논리 주소 공간은 세그먼트 집합이다
       각 세그먼트는 이름과 길이를 갖는다
       <세그먼트 이름, 오프셋>은 주소를 위해 사용된다
       세그멘테이션은 각 세그먼트를 물리 메모리에 매핑한다
세그먼테이션 Example

   일반적으로, 사용자 프로그램은 컴파일되고, 컴파일러는 자동적으로 입력 프로그
    램을 반영하는 세그먼트를 구축한다


   C 컴파일러는 다음을 위해 분리된 세그먼트를 생성할 수 있다:
       코드
       전역 변수들
       힙, 메모리가 할당된 폼
       각 쓰레드에 의해 사용되는 스택
       표준 C 라이브러리


   라이브러리들은 분리된 세그먼트에 할당될 수 있다
   로더는 이 세그먼트들을 취해서 세그먼트 번호를 할당한다
세그먼테이션 구조

   각 세그먼트는 번호가 할당된다: 세그먼트 번호
   논리 주소는 두 개의 튜플로 구성된다:
     <세그먼트 번호, 오프셋>


   세그먼트 테이블 – 이차원 물리 주소에 매핑된다; 각 테이블 항목은 다음을 갖는다:
   기본(base) – 세그먼트가 메모리에 위치하는 시작 물리 주소를 포함한다
   한계(limit) – 세그먼트 길이를 나타낸다


   세그먼트 테이블 기본 레지스터(Segment-table base register: STBR)
       메모리에 있는 세그먼트 테이블을 가리킨다
   세그먼트 테이블 길이 레지스터(Segment-table length register: STLR)
       프로그램에서 사용되는 세그먼트 개수를 가리킨다;
   세그먼트 개수 s가 STLR보다 작아야 합법적이다
세그먼테이션 예제

               5 세그먼트
                   0부터 4까지 번호가 붙는다


               세그먼트 테이블은 각 세그먼트를 위한
                분리된 항목을 갖는다
                   기본(Base)
                   한계(Limit)


               논리 주소
                   세그먼트 2의 53


               물리 주소
                   4300 + 53 = 4353
세그먼테이션 구조
세그먼테이션 구조

   보호. 세그먼트 테이블의 각 항목은 다음과 연관된다:
       유효 비트 = 0     불법적인 세그먼트
       읽기/쓰기/실행 권한


   보호 비트는 세그먼트와 연관된다; 코드 공유는 세그먼트 수준에서 일어난다


   세그먼트는 길이가 다양하기 때문에, 메모리 할당은 동적 저장소 할당 문제와 같다
       최초 만족(first-fit) / 최적의 만족(best-fit)
       조각 (내부, 외부)
세그먼테이션 구조

   재배치(Relocation)
        세그먼트는 디스패처에 의해 스왑 아웃되고 스왑 인 될 수 있다
        동적
        세그먼트 테이블에 의해

   공유(Sharing)
        세그먼트는 여러 프로세스에 의해 공유될 수 있다
        공유 세그먼트
        같은 세그먼트 번호

   할당(Allocation)
        최초 만족(first fit) / 최적 만족(best fit)
        외부, 내부 조각
세그먼테이션 구조

   두 개의 같은 편집 프로세스가 수행 중이다
       0번인 편집기 세그먼트는 공유될 수 있다


       공유 세그먼트는 같은 세그먼트 번호 0을 갖는다


   편집기 세그먼트를 위한 하나의 물리 메모리 공간
   데이터 세그먼트를 위한 다른 물리 메모리 공간
Quiz

Más contenido relacionado

La actualidad más candente

프로세스 관리
프로세스 관리프로세스 관리
프로세스 관리
jeiger
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part I
sprdd
 
ITs 2주차_기본명령어(발표)
ITs 2주차_기본명령어(발표)ITs 2주차_기본명령어(발표)
ITs 2주차_기본명령어(발표)
Chulgyu Shin
 
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
1주차   리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져1주차   리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
Chulgyu Shin
 

La actualidad más candente (20)

20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
 
Bootchart 송형주
Bootchart 송형주Bootchart 송형주
Bootchart 송형주
 
프로세스 관리
프로세스 관리프로세스 관리
프로세스 관리
 
백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나
 
Chapter2 ap group11
Chapter2 ap group11Chapter2 ap group11
Chapter2 ap group11
 
3D카툰메이커 완료세미나(복구됨)
3D카툰메이커 완료세미나(복구됨)3D카툰메이커 완료세미나(복구됨)
3D카툰메이커 완료세미나(복구됨)
 
Rankwave moment™ desc3
Rankwave moment™ desc3Rankwave moment™ desc3
Rankwave moment™ desc3
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
 
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
 
[OS] Operating System 5 layer
[OS] Operating System 5 layer[OS] Operating System 5 layer
[OS] Operating System 5 layer
 
7 aaaaaaaaa
7 aaaaaaaaa7 aaaaaaaaa
7 aaaaaaaaa
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part I
 
ITs 2주차_기본명령어(발표)
ITs 2주차_기본명령어(발표)ITs 2주차_기본명령어(발표)
ITs 2주차_기본명령어(발표)
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
AIX - LVM 이란?
AIX - LVM 이란?AIX - LVM 이란?
AIX - LVM 이란?
 
Introduction to Linux #1
Introduction to Linux #1Introduction to Linux #1
Introduction to Linux #1
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
 
솔라리스 OS 로그 분석
솔라리스 OS 로그 분석솔라리스 OS 로그 분석
솔라리스 OS 로그 분석
 
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
1주차   리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져1주차   리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
 

Similar a 운영체제 Chapter 8

Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
ChangKyu Song
 
[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud
MinGeun Park
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
 
김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법
성훈 김
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
 
프로세스
프로세스프로세스
프로세스
xxbdxx
 

Similar a 운영체제 Chapter 8 (20)

Process에 대한 이해
Process에 대한 이해Process에 대한 이해
Process에 대한 이해
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
 
System+os study 1
System+os study 1System+os study 1
System+os study 1
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
 
System+os study 5
System+os study 5System+os study 5
System+os study 5
 
System+os study 3
System+os study 3System+os study 3
System+os study 3
 
[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
6. code level reversing
6. code level reversing6. code level reversing
6. code level reversing
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
면접 대비 벡터, CS 개념과 사례
면접 대비 벡터, CS 개념과 사례면접 대비 벡터, CS 개념과 사례
면접 대비 벡터, CS 개념과 사례
 
김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
 
프로세스
프로세스프로세스
프로세스
 
Java와 go 간의 병렬 프로그램 성능 비교
Java와 go 간의 병렬 프로그램 성능 비교Java와 go 간의 병렬 프로그램 성능 비교
Java와 go 간의 병렬 프로그램 성능 비교
 

운영체제 Chapter 8

  • 1. Chapter 8. Main Memory 22-1 나영근
  • 2. 목적  메모리 하드웨어를 구성하는 다양한 방법 배우기  페이징과 세그먼테이션 기법을 포함한 다양한 메모리 관리 기법 배우기
  • 3. Background  메모리는 각각 주소가 할당된 원드, 바이트 들로 구성  CPU는 PC(Program counter)가 가리키는 다음 명령어를 가져온다  메모리에서  그 이후 피연산자가 필요할 경우 메모리에서 또 가져오고  결과를 저장한다.
  • 4. Background  Main Memory, Register들은 CPU가 직접 접근 가능한 저장장치  모든 명령어와 자료들을 수행하기 위해선 CPU가 가져와야 한다.  만약 보조기억장치나 다른 곳에 있다면 먼저 메모리로 옮긴 이후에 수행  레지스터는 일반적으로 CPU 1clock cycle만에 접근 ( ex- load a)  메모리는 일반적으로 CPU 2clock cycle 이상  버스도 타야되고 주소에 맞는 위치도 추적해야됨..  CPU가 준비가 되었는데 메모리에 접근하지 못해 자료가 없는 경우가 있음(지연)  캐시
  • 5. Background  CPU 스케줄링의 결과로  CPU 사용률 증가  사용자에 대한 반응속도 증가  성능 향상을 위해선 메모리에 여러 프로세스를 유지 해야함  각 프로세스는 분리된 메모리 공간을 갖는다  Base register 와 limit register는 프로세스 주소 공간을 결정하는 데 사용
  • 6. Background  프로그램은 보조 기억장치에 이진 실행 파일로 저장  메모리 관리에 따라 프로세스는 디스크와 메모리 사이를 움직임  라운드 로빈을 기억해보세요 p1 p2 p3  디스크 내의 프로세스는 실행을 위해 Input Queue에서 메모리로 가기 위해 대기
  • 7. Address Binding  모든 프로그램에서는 메모리 주소가 필요  그 주소를 바인딩 하는 타이밍을 말하는거임..  Compile Time 바인딩  프로그램이 어디에 얹어질지 컴파일 시점에 안다면 절대 코드 생성 가능  절대적인 메모리 위치를 입력하는 것  보통 운영체제의 bootloader들이 많이 그럼..  Load Time 바인딩  메모리 위치가 컴파일 시간에 알 수 없다면 재배치 코드를 생성  실제로 프로그램이 어디에 갈지 모르기 때문에 시작점을 기준으로 주소 바인딩  이후 메모리 load 시점에 처리해주면 됨  Excution time 바인딩  실행중에 메모리가 옮겨질 수 있다면..  하드웨어적 지원 필요
  • 8. Address Binding 1 A(200) LOAD A  모든 프로그램에서는 메모리 주소가 필요  그 주소를 바인딩 하는 타이밍을 말하는거임..  Compile Time 바인딩  프로그램이 어디에 얹어질지 컴파일 시점에 안다면 절대 코드 생성 가능  절대적인 메모리 위치를 입력하는 것  보통 운영체제의 bootloader들이 많이 그럼..  Load Time 바인딩  메모리 위치가 컴파일 시간에 알 수 없다면 재배치 코드를 생성  실제로 프로그램이 어디에 갈지 모르기 때문에 시작점을 기준으로 주소 바인딩  이후 메모리 load 시점에 처리해주면 됨  Excution time 바인딩  실행중에 메모리가 옮겨질 수 있다면..  하드웨어적 지원 필요
  • 9. Address Binding 0 1 200 2 LOAD 1  모든 프로그램에서는 메모리 주소가 필요 3  그 주소를 바인딩 하는 타이밍을 말하는거임..  Compile Time 바인딩  프로그램이 어디에 얹어질지 컴파일 시점에 안다면 절대 코드 생성 가능  절대적인 메모리 위치를 입력하는 것  보통 운영체제의 bootloader들이 많이 그럼..  Load Time 바인딩  메모리 위치가 컴파일 시간에 알 수 없다면 재배치 코드를 생성  실제로 프로그램이 어디에 갈지 모르기 때문에 시작점을 기준으로 주소 바인딩  이후 메모리 load 시점에 처리해주면 됨  Excution time 바인딩  실행중에 메모리가 옮겨질 수 있다면..  하드웨어적 지원 필요
  • 10. Address Binding 0 1 200 2 LOAD 시작점+1  모든 프로그램에서는 메모리 주소가 필요 3  그 주소를 바인딩 하는 타이밍을 말하는거임..  Compile Time 바인딩  프로그램이 어디에 얹어질지 컴파일 시점에 안다면 절대 코드 생성 가능  절대적인 메모리 위치를 입력하는 것  보통 운영체제의 bootloader들이 많이 그럼..  Load Time 바인딩  메모리 위치가 컴파일 시간에 알 수 없다면 재배치 코드를 생성  실제로 프로그램이 어디에 갈지 모르기 때문에 시작점을 기준으로 주소 바인딩  이후 메모리 load 시점에 처리해주면 됨  Excution time 바인딩  실행중에 메모리가 옮겨질 수 있다면..  하드웨어적 지원 필요
  • 11. Address Binding  모든 프로그램에서는 메모리 주소가 필요  그 주소를 바인딩 하는 타이밍을 말하는거임..  Compile Time 바인딩  프로그램이 어디에 얹어질지 컴파일 시점에 안다면 절대 코드 생성 가능  절대적인 메모리 위치를 입력하는 것 14  보통 운영체제의 bootloader들이 많이 그럼.. 15 200  Load Time 바인딩 16 LOAD 시작점+1  메모리 위치가 컴파일 시간에 알 수 없다면 재배치 코드를 생성 17  실제로 프로그램이 어디에 갈지 모르기 때문에 시작점을 기준으로 주소 바인딩  이후 메모리 load 시점에 처리해주면 됨  Excution time 바인딩  실행중에 메모리가 옮겨질 수 있다면..  하드웨어적 지원 필요
  • 12. Logical Address, Physical Address Space  Memory Management의 필수 요소  Logical Address  CPU가 생성하는 주소  가상 주소  Physical Address  Memory에서 쓰이는 실제 주소  이를 관리하기 위해 MMU가 필요
  • 13. Memory Management Unit(MMU)  Logical Address를 Physical Address로 Mapping하는 하드웨어  보내는 순간 더함  프로그래머는 논리주소만 취급  실제 주소를 모른당.
  • 14. Dynamic Loading  대규모 코드 필요 시 유용  OS의 기능이 필요 없다 주 프로그램 메모리 적제  머 지원해 줄수는 있다  메모리 공간이 적어짐  Stub  루틴이 있다는 걸 알려주는 작은 코드 사용되는 루틴이 있을 때 메 모리에 있는지 확인  특히 라이브러리 사용시 유용  Stdio같은 거 있잔아요..  모든 라이브러리가 코드마다 박혀 있을 필요가 읍다 없을 시 디스크에서 메모리  코드 효율성 업~ 적재 후 실행
  • 15. Swapping  임시적으로 프로세스를 메모리에서 저장장소로 옮기고 실행을 위해 다시 메모리로 적재하는 것  Dispatcher가 처리  Swap out  메모리에서 저장 장소로 옮겨지는 것  Input Queue로  Swap in  저장 장소에서 실행을 위해 메모리로 다시 적재  Ready Queue로  Roll out, Rool in  우선순위 기반의 스케줄링 알고리즘을 위해 다양하게 사용되는 Swapping  낮은 우선순위 프로세스는 높은 우선순위 프로세스를 위해 Roll out 한다.  Swapping Time의 대부분은 전송시간  이는 당연히 스왑되는 메모리 양에 비례
  • 16. Contiguous Allocation  Main Memory는 두 부분으로 나뉜다  OS  보통 인터럽트 백터와 함께 하위 메모리에 위치  사용자 프로세스  상위 메모리  각 프로세서는 메모리의 하나의 연속적인 부분에 포함  Base register 방식으로 사용자 프로세스 끼리 서로 보호  Base register는 가장 작은 물리 주소값 포함  Limit register는 논리 주소의 크기 포함
  • 18. Contiguous Allocation  Hole(구멍)  유효한 메모리 블록  메모리에는 다양한 구멍이 있다  운영체제는  할당된 부분(allocated partition)  자유 부분(free partitions = hole)  을 보관 OS OS OS OS  프로세스 도착 시 큰 구멍에 할당 process 5 process 5 process 5 process 5 process 9 process 9 process 8 process 10 process 2 process 2 process 2 process 2
  • 19. Contiguous Allocation  자유 구멍 리스트에서 프로세스 할당 방법  First-fit(첫번째 만족)  충분히 큰 첫 번째 구멍에 할당  Best-fit(최적의 만족)  충분히 큰 구멍 중 가장 작은 구멍에 할당  크기 순서대로 정렬되어 있지 않다면 전체 리스트를 찾아야함  가장 작은 남겨진 구멍을 만든다  Worst-fit(최악의 만족)  가장 큰 구멍에 할당  이것두 전체 리스트 찾아야 함  남겨진 구멍의 크기가 가장 크다  First-fit과 best-fit이 속도와 저장소 사용률 측면에서 더 좋다  일반적으로 first-fit이 속도가 가장 빠르다
  • 20. Quiz
  • 21. 단편화(Fragmentation)  External Fragmentation  전체 메모리 공간은 한 요청을 만족시키기에 충분하지만 연속적이지 않다  Compaction (압축) process 11  압축을 통해 External Fragmentation을 줄인다  모든 자유 메모리 공간이 함께 모여 큰 블록으로 만들기 위해 하는 짓  재배치가 동적일 때만 가능하다, 재배치가 실행 시간에 이루어지는 경우에만 가능 OS OS OS OS OS OS process 5 process 5 process 5 process 5 process 5 process 5 process 9 process 9 process 8 process 10 process 10 process 10 process 2 process 2 process 2 process 2 process 2 process 2
  • 22. 단편화(Fragmentation)  Internal Fragmentation  할당된 메모리가 요청한 메모리보다 아주 약간 더 큰 경우에 생김  정수배의 메모리를 할당하는게 보통인데 이로 인해 남는 공간을 의미 OS OS process 5 process 5 126byte 128byte process 8 2byte의 internal fragmentation process 2 process 2
  • 23. Fragmentation  External Fragmentation 문제를 해결하는 방법으로는 3가지가 있다  아까 말했던 압축  비용이 많이 든다..  페이징  세그먼테이션
  • 24. Paging  연속적이지 않게 쪼개서 메모리에 적재하는 방식  페이징으로 인해 발생하는 이점  프로세스의 Physical Address 공간이 연속적이지 않아도 된다  프로세스는 메모리가 유효할 때는 언제든지 Physical Address에 할당된다  Physical Memory 는 프레임(2의 지수)으로 나눠진다  프레임은 일정 크기의 블록(2의 지수 byte)  Logical Address는 페이지라고 불리는 같은 크기의 블록으로 나뉜다  모든 자유 프레임을 기록하고 관리  크기가 n인 페이지 프로그램을 실행하기 위해 n개의 자유 프레임을 찾는다  Logical Address를 Physical Address로 변환하는 페이지 테이블 설정  External Fragmentation은 발생하지 않지만 Internal Fragmentation은 발생  각각의 블록마다 짜잘하게 생기기 때문.
  • 25. Paging  Paging에서의 internal Fragmentation 예시  프로세스가 72766 byte요구하고 페이지가 2048의 크기일때  나누면 36개의 프레임 필요  근데 마지막 프레임은 꼴랑 1086만 씀 때문에 발생
  • 26. Paging  페이지 테이블  Physical Address와 각 페이지의 기본 주소를 포함  페이지 테이블은 각 프로세스 별로 생성  CPU에 의해 생성되는 Logical는 아래로 구성  Page Number(p)  Physical Memory내의 각 페이지의 기본 주소를 포함  페이지 테이블의 인덱스로 사용  Page offset(d)  메모리 유닛에 보내지는 물리 메모리 주소를 조합하기 위해 기본 주소와 조합된다  Logical Address 공간의 크기가 2^m이고 페이지 크기가 2^n이면
  • 28. Paging  페이지 (프레임) 크기: 4 bytes  물리 메모리: 32 bytes  8 프레임  주소를 위한 5 bits  페이지 테이블 엔트리를 위한 3 bits  논리 주소 공간: 16 bytes  4 페이지  주소를 위한 4 bits  논리 주소 4 bits  상위 2 bits: 페이지 번호  하위 2 bits: 페이지 오프셋  논리 주소 0 (0000)은  페이지 0, 오프셋 0 → 5 x 4 + 0 = 20  논리 주소11 (1011)은  페이지 2, 오프셋 3 → 1 x 4 + 3 = 7
  • 29. Paging  일반적으로 페이지 테이블 엔트리는 4바이트  32-bit 엔트리는 2^32 개의 물리 페이지 프레임 중 하나를 가리킬 수 있음  한 프레임의 크기는 일반적으로 4(2^12)KB  4byte 페이지 테이블 엔트리를 가진 시스템은 물리메모리의 2^44 bytes = 16TV를 지정할 수 있다.
  • 30. Paging  새로운 프로세스가 생성되면  4페이지 주소 공간 필요  이건 예시~
  • 31. Page Table 구현  페이지 테이블은 Main Memory에 저장  페이지 테이블 기본 레지스터(Page-table base register: PTBR)  페이지 테이블 길이 레지스터(Page-table length register: PRLR)  모든 데이터/명령 접근은 두번의 메모리 접근이 필요  페이지 테이블 접근  데이터/명령어 접근  이로 인한 오버헤드를 TLB(translation look-aside buffers)를 통해 해결  특수한 빠른 검색이 가능한 하드웨어 캐시
  • 32. Quiz
  • 33. TLB(Translation look-aside buffer)  매우 빠른 연관 메모리  페이지 테이블을 위해 쓰이는 캐시  TLB는 몇 개의 페이지 테이블 엔트리를 포함  CPU에 의해 논리 주소가 생성되면 그 페이지 번호를 TLB에서 확인한다  페이지 번호가 있을 경우 프레임 번호를 바로 알고 메모리에 접근  없을 경우 (TLB miss) Main memory의 페이지 테이블로 접근  프레임 번호가 얻어지면 이를 통해 메모리 접근에 사용  페이지 번호와 프레임 번호를 TLB에 추가  TLB가 가득 차면 하나를 선택해 삭제  최근에 사용되지 않은 것(LRU), 무작위 등
  • 35. 유효 메모리 접근 시간  적중률(Hit ratio: )  페이지 번호가 TLB에서 발견될 확률  Ex) 80% 적중률 : 요청하는 페이지 번호의 80%를 TLB에서 찾을 수 있다  TLB 검색 시간 = time unit  메모리 접근 시간 = τ time unit  유효 접근 시간(Effective Access Time : EAT)  EAT = (τ + ) + (2τ + )(1 – )  = 80%, = 20 nanosecond, τ = 100 nanosecond
  • 36. 유효 메모리 접근 시간  적중률(Hit ratio: )  페이지 번호가 TLB에서 발견될 확률  Ex) 80% 적중률 : 요청하는 페이지 번호의 80%를 TLB에서 찾을 수 있다  TLB 검색 시간 = time unit  메모리 접근 시간 = τ time unit  유효 접근 시간(Effective Access Time : EAT)  EAT = (τ + ) + (2τ + )(1 – )  = 80%, = 20 nanosecond, τ = 100 nanosecond  EAT = (100 + 20) x 0.8 + ( 2x100 + 20) x 0.2 = 140 nanosecond
  • 37. 메모리 보호  보호 비트  메모리 보호는 각 프레임의 연관된 보호 비트를 통해 구현  한 비트는 페이지가 read-only인지 read-write인지 정의  읽기 전용 페이지에 대한 쓰기 시도는 하드웨어 트랩 발생  유효-무효 비트  페이지 테이블의 각 항목에 추가  유효 : 관련된 페이지가 프로세스의 논리 주소 공간에 존재하며 합법적인 페이지  무효 : 페이지가 프로세스의 논리 주소 공간에 속하지 않는다는 것
  • 38. 메모리 보호  다음과 같은 시스템을 가정해보자  14-비트 주소 공간,  2KB의 페이지(프레임) 길이  프로세스는 6 x 2KB의 주소 공간을 갖는다  페이지 테이블 길이: 8 (=23)  페이지 0부터 5까지의 주소는 페이지 테이블을 통해 정상적으로 매핑된다  페이지 6과 7에 대한 어떤 시도든지 유효-무효 비트가 무효로 설정되 고, 트랩이 발생한다
  • 39. 세그멘테이션 : Segmentation  프로그램을 위한 메모리의 사용자 관점  프로그램은 조각들(segments) 집합이다.  세그먼트는 다음과 같은 논리 단위이다  주 프로그램(main program),  절차(procedure),  함수(function),  방법(method),  객체(object),  지역 변수(local variables), 전역 변수(global variables),  공통 블록(common block),  스택(stack),  기호 테이블(symbol table), 배열(arrays)  세그멘테이션은 메모리의 사용자 관점을 지원하는 메모리 관리 방법!
  • 40. 세그멘테이션 : Segmentation  프로그램은 세그먼트의 집합이다  주 프로그램(main program)  서브루틴(subroutine)  제곱근(sqrt)  스택(stack)  기호 테이블(symbol table)  세그먼트 내의 요소들은 세그먼트의 시작점으로부터의 오프셋 으로 구별  제곱근(sqrt)의 1번째 문장  스택 내의 5번째 요소  주소를 위한 <세그먼트 이름, 오프셋>
  • 41. 세그멘테이션 : Segmentation 1 4 1 2 3 2 4 3 사용자 공간 물리 메모리 공간  논리 주소 공간은 세그먼트 집합이다  각 세그먼트는 이름과 길이를 갖는다  <세그먼트 이름, 오프셋>은 주소를 위해 사용된다  세그멘테이션은 각 세그먼트를 물리 메모리에 매핑한다
  • 42. 세그먼테이션 Example  일반적으로, 사용자 프로그램은 컴파일되고, 컴파일러는 자동적으로 입력 프로그 램을 반영하는 세그먼트를 구축한다  C 컴파일러는 다음을 위해 분리된 세그먼트를 생성할 수 있다:  코드  전역 변수들  힙, 메모리가 할당된 폼  각 쓰레드에 의해 사용되는 스택  표준 C 라이브러리  라이브러리들은 분리된 세그먼트에 할당될 수 있다  로더는 이 세그먼트들을 취해서 세그먼트 번호를 할당한다
  • 43. 세그먼테이션 구조  각 세그먼트는 번호가 할당된다: 세그먼트 번호  논리 주소는 두 개의 튜플로 구성된다: <세그먼트 번호, 오프셋>  세그먼트 테이블 – 이차원 물리 주소에 매핑된다; 각 테이블 항목은 다음을 갖는다:  기본(base) – 세그먼트가 메모리에 위치하는 시작 물리 주소를 포함한다  한계(limit) – 세그먼트 길이를 나타낸다  세그먼트 테이블 기본 레지스터(Segment-table base register: STBR)  메모리에 있는 세그먼트 테이블을 가리킨다  세그먼트 테이블 길이 레지스터(Segment-table length register: STLR)  프로그램에서 사용되는 세그먼트 개수를 가리킨다;  세그먼트 개수 s가 STLR보다 작아야 합법적이다
  • 44. 세그먼테이션 예제  5 세그먼트  0부터 4까지 번호가 붙는다  세그먼트 테이블은 각 세그먼트를 위한 분리된 항목을 갖는다  기본(Base)  한계(Limit)  논리 주소  세그먼트 2의 53  물리 주소  4300 + 53 = 4353
  • 46. 세그먼테이션 구조  보호. 세그먼트 테이블의 각 항목은 다음과 연관된다:  유효 비트 = 0 불법적인 세그먼트  읽기/쓰기/실행 권한  보호 비트는 세그먼트와 연관된다; 코드 공유는 세그먼트 수준에서 일어난다  세그먼트는 길이가 다양하기 때문에, 메모리 할당은 동적 저장소 할당 문제와 같다  최초 만족(first-fit) / 최적의 만족(best-fit)  조각 (내부, 외부)
  • 47. 세그먼테이션 구조  재배치(Relocation)  세그먼트는 디스패처에 의해 스왑 아웃되고 스왑 인 될 수 있다  동적  세그먼트 테이블에 의해  공유(Sharing)  세그먼트는 여러 프로세스에 의해 공유될 수 있다  공유 세그먼트  같은 세그먼트 번호  할당(Allocation)  최초 만족(first fit) / 최적 만족(best fit)  외부, 내부 조각
  • 48. 세그먼테이션 구조  두 개의 같은 편집 프로세스가 수행 중이다  0번인 편집기 세그먼트는 공유될 수 있다  공유 세그먼트는 같은 세그먼트 번호 0을 갖는다  편집기 세그먼트를 위한 하나의 물리 메모리 공간  데이터 세그먼트를 위한 다른 물리 메모리 공간
  • 49. Quiz

Notas del editor

  1. 주메모리에 자주 접근하는 경우 이러한 것은 용납될 수 없다.문에 CPU와 메모리 사이에 캐시라는 빠른 메모리 버퍼를 넣어 속도의 차이를 완화 시킨다.
  2. 각 프로
  3. 얘네가 실행 안할 때 어디로 가겟음..
  4. 얘네가 실행 안할 때 어디로 가겟음..
  5. 얘네가 실행 안할 때 어디로 가겟음..
  6. 얘네가 실행 안할 때 어디로 가겟음..
  7. 얘네가 실행 안할 때 어디로 가겟음..
  8. 얘네가 실행 안할 때 어디로 가겟음..
  9. 얘네가 실행 안할 때 어디로 가겟음..
  10. 얘네가 실행 안할 때 어디로 가겟음..
  11. 얘네가 실행 안할 때 어디로 가겟음..
  12. 얘네가 실행 안할 때 어디로 가겟음..
  13. 얘네가 실행 안할 때 어디로 가겟음..
  14. 얘네가 실행 안할 때 어디로 가겟음..
  15. 얘네가 실행 안할 때 어디로 가겟음..
  16. 얘네가 실행 안할 때 어디로 가겟음..
  17. 얘네가 실행 안할 때 어디로 가겟음..
  18. 얘네가 실행 안할 때 어디로 가겟음..
  19. 얘네가 실행 안할 때 어디로 가겟음..
  20. 얘네가 실행 안할 때 어디로 가겟음..
  21. 얘네가 실행 안할 때 어디로 가겟음..
  22. 얘네가 실행 안할 때 어디로 가겟음..
  23. 얘네가 실행 안할 때 어디로 가겟음..
  24. 얘네가 실행 안할 때 어디로 가겟음..
  25. 얘네가 실행 안할 때 어디로 가겟음..
  26. 얘네가 실행 안할 때 어디로 가겟음..
  27. 얘네가 실행 안할 때 어디로 가겟음..
  28. 얘네가 실행 안할 때 어디로 가겟음..
  29. 얘네가 실행 안할 때 어디로 가겟음..
  30. 얘네가 실행 안할 때 어디로 가겟음..
  31. 얘네가 실행 안할 때 어디로 가겟음..
  32. 얘네가 실행 안할 때 어디로 가겟음..
  33. 얘네가 실행 안할 때 어디로 가겟음..
  34. 얘네가 실행 안할 때 어디로 가겟음..
  35. 얘네가 실행 안할 때 어디로 가겟음..
  36. 얘네가 실행 안할 때 어디로 가겟음..
  37. 얘네가 실행 안할 때 어디로 가겟음..
  38. 얘네가 실행 안할 때 어디로 가겟음..
  39. 얘네가 실행 안할 때 어디로 가겟음..
  40. 얘네가 실행 안할 때 어디로 가겟음..
  41. 얘네가 실행 안할 때 어디로 가겟음..
  42. 얘네가 실행 안할 때 어디로 가겟음..
  43. 얘네가 실행 안할 때 어디로 가겟음..
  44. 얘네가 실행 안할 때 어디로 가겟음..
  45. 얘네가 실행 안할 때 어디로 가겟음..
  46. 얘네가 실행 안할 때 어디로 가겟음..