과목명 : 운영체제(Operating System)
수업일자 : 2023년 04월 26일 (수)
1. To run Programs?
1-1. 프로그램이 실행되는 과정
(1) 사용자가 응용 프로그램을 실행합니다.
(2) 로컬 환경의 물리 저장소(HDD 또는 SSD)의 실행 파일을 탐색합니다.
(3) Loader program은 실행 파일의 내용을 분석하여 text, data, heap, stack 영역을 프로세스의 가상 공간에 배치합니다.
(4) MMU(Memory Management Unit)에 의해 가상 공간으로 배치된 요소들은 Physical memory의 일정 공간을 할당받아 점유하게 됩니다.
- 운영체제는 자료구조를 통해 이러한 정보를 관리하게 됩니다.
- Page Directory Table(PDT) 등 ...
(5) 프로세서에 존재하는 PC, SP, CR3 등의 레지스터는 Physical memory에 적재된 text, stack, PDT 등의 주소를 저장하고 있습니다.
(6) 프로그램이 실행되면서 관련된 명령어들이 수행되고 PC, SP 등의 레지스터의 내용이 업데이트됩니다.
2. Binding of Instructions and Data to Memory
- 메모리 주소에 대한 명령 및 주소의 Binding은 다음과 같이 3개의 다른 단계에서 발생할 수 있습니다.
2-1. Compile time
(1) 메모리 주소가 미리 알려져 있는 경우 절대적인 코드가 생성될 수 있습니다. 시작 위치가 변경되면 코드를 다시 컴파일해야 합니다.
2-2. Load time
(1) 컴파일 시간에 메모리 위치를 알 수 없는 경우, 재배치가 가능한 코드를 생성해야 합니다.
2-3. Execution time
(1) 현재 메모리 세그먼트에서 다른 메모리 세그먼트로 실행하는 동안 프로세스를 이동할 수 있는 경우 런타임까지 바인딩이 지연됩니다.
(2) 주소 Map(Ex : 기본 및 제한된 레지스터)에 대한 하드웨어 지원이 필요합니다.
3. Dynamic Linking and Dynamic Loading
3-1. Linking
(1) Static link
- 라이브러리 코드가 메인 프로그램에 포함됩니다.
- 개발 컴퓨터 환경이 아닌 다른 컴퓨터에서 프로그램이 실행되는 경우 별도의 라이브러리 파일이 필요하지 않습니다.
(2) Dynamic link
- 라이브러리 코드가 메인 프로그램에 포함되지 않고 실행하는 시점에 링크됩니다.
- 실행 파일에는 어떤 라이브러리 파일이 필요한지 알려주는 정보가 포함되어 있어야 합니다.
- 개발 컴퓨터가 아닌 다른 컴퓨터에서 프로그램이 실행되는 경우 별도의 라이브러리 파일이 필요합니다.
3-2. Dynamic loading
(1) 프로그램이 메모리에 적재되어 실행되는 시점에서 라이브러리에 포함된 함수를 호출하고 then 라이브러리 파일이 로드됩니다.
(2) 또 다른 프로그램에서 동일한 함수를 호출하면 이미 메모리에 적재된 라이브러리를 서로 공유하게 됩니다.
4. Process View in VA(Virtual Address)
4-1. Logical address space vs Physical address space
(1) Logical address space
- CPU에 의해 생성되는 주소 공간입니다.
- 가상 주소(Virtual address)라고도 합니다.
- Base and Limit registers
→ Base 또는 Limit register의 쌍은 논리 주소 공간을 정의합니다.
(2) Physical address space
- Memory unit이 본 주소입니다.
(3) Logical address와 physical address는 다음과 같은 특징을 가집니다.
- Complie-time 및 Load-time에서의 주소 바인딩 체계는 동일합니다.
- 그러나 Logical(virtual) 주소와 physical 주소의 경우 Execution-time에서의 주소 바인딩 형식이 다릅니다.
5. Mapping from Virtual space to Real space
5-1. Mapping mechanism은 무엇일까?
(1) Segmentation, Paging 기법 두 가지 Mechanism이 존재합니다.
5-2. Segmentation
- 가변 분할 방식을 이용한 가상 메모리 관리 기법으로 물리 메모리를 프로세스의 크기에 따라 가변적으로 나누어 사용합니다.
5-3. Paging
- 메모리를 비연속적인 공간으로 나누어 프로세스가 요청한 크기의 공간이 있으면 할당하는 방식을 의미합니다.
6. Virtual address(Logical address) to Physical address and MMU(Memory Management Unit)
6-1. MMU(Memory Management Unit)
(1) Virtual address를 physical address로 Mapping하는 하드웨어 장치입니다.
(2) 사용자 프로그램은 논리 주소(Virtual address)를 다루고 있습니다.
- 이에 따라, 실제적인 메모리의 물리적 주소를 참조할 수는 없습니다.
7. Memory Management in x86 CPU Structure
7-1. Memory management in x86
(1) First - Segmentation, Second - Paging
7-2. First - Segmentation
(1) Flat memory model을 사용합니다.
- Base address of all segmemt = 0
- Limit of all segments = 4G = 0xFFFFFFFF
(2) Logical address에서 linear address로 변환합니다.
- Descriptor table
7-3. Second - Paging
(1) Linear address에서 physical address로 변환합니다.
- PDT(Page Directory Table) → mapping table of Memory Management Unit
- PT(Page Table) → mapping table of Memory Management Unit
- CR3 register에서 PDT의 위치를, PDT에서 PT의 위치를 참조하고 있습니다.
- GDTR(Global Descriptor Table Register)
8. Logical address to Physical address translation in x86 CPU Structure
8-1. Memory management in x86
(1) First - Segmentation, Second - Paging
8-2. First - Segmentation
(1) Flat memory model을 사용합니다.
- Base address of all segmemt = 0
- Limit of all segments = 4G = 0xFFFFFFFF
(2) Logical address에서 linear address로 변환합니다.
- Descriptor table
8-3. Second - Paging
(1) Linear address에서 physical address로 변환합니다.
- PDT(Page Directory Table)
- PT(Page Table)
9. Segmentation - User's View of a Program
9-1. Segmentation
(1) 프로그램을 구성하는 요소는 어떤 것이 있을까?
(2) 프로그램은 여러 가지 Segment의 모음으로 볼 수 있습니다.
(3) Segment의 경우 다음과 같은 논리적 단위를 가지게 됩니다.
- Main Program
- Function
- Object
- Global variables
- Local variables
- Stack
- Symbol table
9-2. Segmentation의 Logical view
(1) 프로그램을 구성하는 각 Segment를 메모리 공간에 배치합니다.
10. Segmentation Hardware & Segmentation Architecture
10-1. Segmentation architecture
(1) Logical address는 두 개의 Tuple로 구성됩니다.
- <segment - number, offset>
(2) Segment table
- 2차원 Physical addresses로 Mapping
- 각각의 Table 엔트리에는 Base와 Limit이 존재합니다.
* Base : segment가 메모리에 적재되는 시작 물리 주소를 포함하는 정보입니다.
* Limit : segment의 길이를 지정하는 정보입니다.
11. Segmentation in x86 CPU Architecture
11-1. Segmentation in x86
(1) Logical address = selector ; offset
(2) Segmentation selector
- Index to entry of DT
→ Index : Descriptor table 배열의 index 값으로 사용하며, 몇 번째의 segment descriptor를 사용할 것인지 선택합니다.
- TI(Table Index) = GDT(Global DT) or LDT(Local DT)
- RPL(Request Privilege Level)
→ Descriptor를 통해 요구할 때의 Level
(3) CS(Code Segment) = Index + TI + RPL
(4) GDT(Global Descriptor Table)
- GDT를 가리키며 GDT의 Base address와 Table limit을 포함하고 있습니다.
- Descriptor entry size = 8 bytes
(5) Linear address
- BA(Base Address) in descriptor + offset
- Flat memory model
→ Descriptor table.BA(Base Address) = 0
→ Linear address for flat memory model = offset
12. Segmentation in x86 and Segment Descriptor
12-1. Segmentation example
(1) CS(Code Segment) = 0x73 = 0111 0011
- Index = 01110 = 14
- TI = 0 → GDT
- RPL = 11 (3) = user space
(2) GDT(Global Descriptor Table)
- Which descriptor → GDTR + Index * 8 = GDTR + 14 * 8
- Descriptor entry size = 8 bytes
(3) Instruction → JMP 0x08048393
- 0x08048393 → offset
12-2. Etc
(1) CR3 : 프로세스별로 고유한 값을 보유하고 있습니다.
- Page Directory를 가리키고 있습니다.
(2) DIR : Page Directory에서의 offset 값을 나타냅니다.
- Page Table을 가리키고 있습니다.
(3) Page : Page Table에서의 offset 값을 나타냅니다.
- 해당 Page의 물리 메모리를 가리키고 있습니다.
(4) offset : 물리 메모리에서의 offset 값을 나타냅니다.
13. Paging
13-1. Paging - Segmentation 방식과 비교
(1) 기존 Segmentation 기법의 경우 Logical address 공간을 segment block으로 나누어 관리하는 기법입니다.
- 프로세스의 Logical address 공간의 경우 비연속적인(Non-contiguous) 형태를 가질 수 있습니다.
- 메모리가 사용 가능할 때 프로세스에 물리적 메모리 공간이 할당됩니다.
(2) Paging 기법의 경우 Logical address 공간을 일정한 크기의 page로 나누어 관리하는 기법입니다.
(3) PF(Page Frame)
- Physical memory를 고정된 크기의 블록으로 나눕니다.
(4) Page
- Logical memory를 같은 크기의 블록으로 나눕니다.
- 모든 Free page frame들의 트랙을 유지합니다.
(5) Set up PDT(Page Directory Table) and PF(Page Frame)
- Logical address를 physical address로 변환합니다.
14. Paging Hardware & Address Translation Scheme
14-1. Address translation scheme
- CPU에서 생성된 주소는 다음과 같이 나누어집니다.
(1) Page number (p)
- Physical memory에 존재하는 각 Page의 기본 주소를 포함하는 page table에 대한 인덱스로 사용됩니다.
(2) Page offset (d)
- Base address와 결합하여 메모리 장치로 전송되는 physical memory 주소를 정의합니다.
15. Paging Model of Logical Memory and Physical Memory
15-1. Logical memory의 경우 총 4개의 page로 구성된다.
(1) Segmentation에 의한 하나의 segment로 볼 수 있습니다.
15-2. Physical memory는 8개의 page frame으로 구성되어 있다.
15-3. PT(Page Table)
(1) 4개의 page를 mapping하기 위한 정보를 저장하고 있습니다.
(2) Logical memory의 2th page(index = 1)는 physical memory의 4th page frame에 mapping됩니다.
(3) PT는 physical memory에 생성되고 PT가 저장된 주소는 register가 저장하고 있습니다.
- 해당 register의 내용은 physical memory입니다.
15-4. Etc
- 만약 Page frame에서 page #3이 존재하지 않는다면 물리적 흐름이 진행되지 않기 때문에 Page Frame에서 가장 오래된 page를 Swap 영역으로 보낸 후 해당 공간에 page #3을 적재하게 됩니다. 이를 통해 Paging 메모리 관리 기법의 효율성, 장점이 드러나게 됩니다.
16. 1-Level Address Translation
16-1. 1-Level Address Translation
(1) Virtual Address
- Page Directory Table에 대한 Index 정보입니다.
- Physical memory를 PF(Page Frame)으로 offset합니다.
(2) Page Directory Table
- Page Frame의 Base address입니다.
- Page Frame의 속성을 나타내기도 합니다.
(3) directory(), offset
17. Paging in x86 CPU Structure (2-Level Address Translation)
17-1. Paging in x86
(1) Virtual Address
- PDT(Page Directory Table)의 Index(색인)입니다.
- PF(Page Frame)의 Index(색인)입니다.
- PF(Page Frame)의 Offset입니다.
(2) CR3 register
- PDT(Page Directory Table)의 Base address입니다.
- CR3의 내용은 Physical address입니다.
(3) page dir, page tab, offset
18. PDE(Page Directory Entry) and PTE(Page Table Entry)
19. Mapping between Page Directory and VA(Virtual Address)
- 학부에서 수강했던 전공 수업 내용을 정리하는 포스팅입니다.
- 내용 중에서 오타 또는 잘못된 내용이 있을 시 지적해 주시기 바랍니다.
댓글