안녕하세요 Pingu입니다! 🐧 저번 글에서는 VSFS(Very Simple File System)으로 알려진 파일 시스템을 구현하는 방법을 알아봤습니다. 그로 인해 아무런 정책 없이 파일 시스템을 구현하면 디스크 I/O가 너무 많이 발생하여 성능을 저하시킨다는 것을 알게 되었습니다. 이번 글에서는 이러한 성능 저하를 줄이는 정책들을 적용한 Fast File System에 대해 알아보려고 합니다. 이름에서부터 Fast라고 하니 얼마나 빠른지 기대가 됩니다.😆 제가 공부할 때 참고하고 있는 책인 OSTEP에서는 Chapter 41 - Fast File System 부분 입니다! Locality and The Fast File System UNIX 운영 체제가 처음 도입되었을 때 첫 번째 파일 시스템은 아래..
안녕하세요 Pingu입니다! 지난 글에서는 메모리를 고정 크기로 할당하여 사용하는 paging에 대해 알아봤습니다. 하지만 지난 글에서 알아본 paging 기법에는 두 가지 큰 문제점이 있었는데요, 잦은 메모리 접근과 page table을 위한 메모리 낭비가 두 가지 문제점이었습니다. 이번 글에서는 앞서 말한 두 개의 문제 중 잦은 메모리 접근을 보완하기 위한 Translation Lookaside Buffer(TLB)에 대해 알아보도록 하겠습니다. 제가 공부할 때 참고하고 있는 OSTEP 책에서는 Chapter 19 - Translation Lookaside Buffers입니다.Paging: Faster Translations(TLB)Paging을 사용하여 메모리 가상화를 지원한다면 오버 헤드가..
안녕하세요 Pingu입니다! 저번 글에서는 메모리 가상화를 위한 주소 변환 방법 중 Segmentation을 사용하는 방법을 알아봤었는데요, segmentation은 메모리를 가변 크기로 할당하여 사용하는 방법으로 이를 사용하면 고려해야 하는 문제 중 메모리의 여유 공간을 어떻게 관리할지에 대한 문제와 external fragmentation(외부 단편화)문제가 있었습니다. 그래서 이번 글에서는 여유 공간 관리 방법과 단편화 문제에 대해 알아보려고 합니다. 제가 공부할 때 참고하고 있는 OSTEP 책에서는 Chapter 17 - Free Space Management 부분입니다! Free-Space Management 이번 글에서는 아까 말한 대로 메모리의 여유 공관 관리와 메모리 공간의 관리 시스템에 ..
안녕하세요 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입니다! 이번 글에서는 멀티 프로세서에서 스케줄링하는 방법에 대해 알아보겠습니다. 제가 공부할 때 참고하고 있는 OSTEP 책에선 Chapter 10 - Multi-CPU Scheduling 부분입니다. 이번에 다룰 부분은 나중에 배울 Concurrency(동시성)을 공부 한 뒤에 보는 것이 가장 좋다고 하네요. 나중에 동시성을 공부한 뒤에 다시 보도록 해야겠습니다.Multiprocessor Scheduling (Advanced)요즘 나오는 CPU에 멀티 코어, 쿼드 코어, 헥사 코어 등을 광고하는 것을 보신 적이 있으신가요? 이렇게 요즘엔 멀티 프로세서 시스템이 보편화되고 있습니다. 이러한 CPU에서는 어떻게 스케줄링을 해서 사용해야 할까요?? 하나 이상의 CPU가 있으면 지금까지는..
안녕하세요! Pingu입니다~ 이번 글에서는 운영체제에서 Process라고 불리는 것에 대해 알아보려고 합니다. 제가 공부할 때 참고하고 있는 OSTEP 책에선Chapter 6 - Direct Execution부분입니다. Limited Direct Execution CPU를 가상화해야 하는 이유는 저번 글에서 알아봤습니다. 간단히 말하면 여러 개의 프로그램을 동시에 작동하기 위해 CPU 가상화가 필요했는데요, 이는 실제로는 Time Sharing기법으로 구현할 수 있었습니다. Time Sharing을 사용하여 CPU 가상화를 구현하려면 몇 가지 고려해야 할 점이 있습니다. 첫 번째는 Performance입니다. 시스템에서 가상화를 구현할 때 오버헤드 없이 구현하는 방법을 생각해야 합니다. 두 번째는 Co..
- Total
- Today
- Yesterday
- 테이블뷰
- System
- BFS
- design
- mac
- OS
- pattern
- DP
- IOS
- operator
- 알고리즘
- document
- operating
- OSTEP
- Combine
- Xcode
- 코테
- 백준
- 문법
- 동시성
- Swift
- Publisher
- Apple
- 아이폰
- 프로그래밍
- 코딩테스트
- 앱개발
- dfs
- 스위프트
- 자료구조
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |