안녕하세요 Pingu입니다!🐧 지난 글에서는 메모리 가상화를 하기 위해 base, limit 레지스터를 사용하여 가상 주소를 실제 메모리의 주소로 변환하는 주소변환에 대해 알아봤었습니다. 이러한 방법을 Dynamic relocation(동적 재배치)라고 했으며 글의 마지막 부분에 이 방법은 heap과 stack 사이의 사용하지 않는 공간도 할당하기 때문에 비효율적이라고 했었습니다. 이러한 점을 보완하기 위해서 이번 글에서는 Segmentation이라는 개념을 도입한 메모리 가상화 방법에 대해 알아보려고 합니다. 또한 이를 통해 저번 글에서 가정한 가정들도 제거할 수 있습니다! 이번 글은 제가 참고하고 있는 OSTEP책에서는 Chapter 16 - Segmentation입니다. Segmentation (분..
안녕하세요 Pingu입니다! 지난 글에서 메모리를 사용하기 위한 Memory API들과 사용 시 주의점에 대해 알아보았는데요, 이번 글에서는 이제 본격적으로 메모리 가상화를 위한 메커니즘을 알아보려고 합니다. 이번 글에서 알아볼 메커니즘은 Address Translation(주소 변환)입니다. 제가 공부할 때 참고하고 있는 OSTEP 책에서는 Chapter 15 - Address Translation 입니다! Mechanism: Address Translation CPU 가상화를 공부할 때 배운 Limited Direct Execution에 대해 기억하시나요? 간단히 짚고 넘어가자면 프로그램을 하드웨어에서 직접 실행하도록 하는데 특정 시점(프로세스가 system call 발생 시, 타이머 인터럽트 발생 ..
안녕하세요 Pingu입니다. 지난 글에서 간단하게 메모리 가상화에 대해 알아보았는데요, 이번 글에서는 메모리를 사용하기 위한 Memory API들을 살펴보려고 합니다. 제가 공부할 때 참고하고 있는 OSTEP 책에서는 Chapter 14 - Memory API부분 입니다. Interlude: Memory API 이번 글에서는 UNIX 시스템에서 메모리 할당 인터페이스에 대해 알아보겠습니다! 제공되는 인터페이스는 몇 개 없기 때문에 빠르게 알아보겠습니다. 우선 이번 글에서 알아볼 인터페이스로 처리할 문제는 메모리 할당 및 관리 방법입니다. 또한 이러한 인터페이스를 사용할 때 실수할 수 있는 부분에 대해서도 알아보겠습니다. Types of Memory 실행할 때 메모리의 상태에 대해 기억하시나요? 기억이 나..
안녕하세요 Pingu입니다! 지난 글까지는 CPU 가상화에 대해 알아봤고 이번 글부터는 메모리 가상화에 대해 알아보려고 합니다! 이번 글에서는 메모리 가상화의 목적과 메모리 가상화를 위한 메모리 사용의 변화 과정, 주소 공간을 추상화하는 개념에 대해 알아보려고 합니다. 제가 공부할 때 참고하고 있는 OSTEP 책에선 Chapter 13 - Address Space부분입니다. The Abstraction: Address Spaces 그럼 초기의 컴퓨터에서 지금의 컴퓨터로 발전하는 과정을 메모리 사용 관점에서 살펴보도록 하겠습니다. Early Systems 메모리의 관점에서 보면 초기의 컴퓨터는 사용자에게 추상화를 지금처럼 많이 제공하지 않았습니다. 이게 초기 컴퓨터의 메모리 구성입니다. 위와 같이 OS와 ..
안녕하세요 Pingu입니다. 이번 글에서는 운영체제에서 프로세스를 실행할 순서를 설계하는 Scheduling(이하 스케줄링)에 대해 알아보려고 합니다! 제가 공부할 때 참고하고 있는 OSTEP 책에선 Chapter 7 - CPU Scheduling 부분입니다. 이번 글에서 배울 스케줄링 정책은 FIFO(First In First Out), SJF(Shortest Job First), STCF(Shortest Time-to-Completion First), RR(Round Robin)입니다. 그럼 바로 알아보겠습니다. Scheduling Introduction 이제 저희는 프로세스를 실행하는 low-level 메커니즘들을 알고 있습니다. 예를 들면 Context Switch 같은 녀석들입니다. 아직 이런 ..
안녕하세요 Pingu입니다! 이번 글에서는 운영체제에서 Process라고 불리는 것에 대해 알아보려고 합니다. 제가 공부할 때 참고하고 있는 OSTEP 책에선 Chapter 4 - Processes 부분입니다. Process란? Process(프로세스)가 무엇일까요? 프로세스는 간단하게 말하면 현재 실행 중인 프로그램이라고 할 수 있습니다. 그렇다면 프로그램은 무엇일까요? 프로그램은 Disk에 저장되어있는 실행 가능한 것이라고 볼 수 있습니다. 컴퓨터는 이러한 프로그램을 메모리에 Load 하고 이를 CPU에서 처리합니다. 이러한 동작들이 잘 수행될 수 있도록 OS는 어떤 일을 어떤 방법으로 수행 중인지 알아보도록 하겠습니다. Multiple processes - 여러개의 프로세스를 동시에 동작시키는 방법..
- Total
- Today
- Yesterday
- pattern
- System
- 백준
- 문법
- 알고리즘
- IOS
- 동시성
- design
- operating
- BFS
- Swift
- 스위프트
- OS
- Xcode
- 테이블뷰
- operator
- OSTEP
- dfs
- 코딩테스트
- 자료구조
- mac
- document
- 코테
- DP
- Apple
- 프로그래밍
- 앱개발
- Publisher
- 아이폰
- Combine
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 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 |