안녕하세요! Pingu입니다! 지난 글에서는 Concurrency(동시성)을 구현할 때 사용하는 thread(스레드)와 스레드를 사용할 때 해결해야 하는 문제점에 대해 알아봤습니다. 이번 글에서는 C언어에서 스레드를 사용하기 위해 제공하는 API들을 살펴보며 앞으로 해결할 문제점들이 코드적으로는 어떻게 해결되는지에 대해 알아보려고 합니다. 제가 공부할 때 참고하고 있는 OSTEP 책에서는 Chapter 27 - Thread API 부분 입니다. Interlude: Thread API 이번 글에서는 아까 말했듯 스레드 API에 대해서 알아볼 예정입니다. 하지만 간단하게 짚고 넘어갈 것이며 이후 글에서 자세히 다룰 예정입니다. 이 글에서 알아보는 API는 POSIX에서 사용되는 API들입니다. Thread ..
안녕하세요 Pingu입니다. 지난 글을 마지막으로 메모리 가상화를 끝내고! 드디어 OSTEP에서의 큰 2번째 단원인 Concurrency, 동시성에 대해 알아보려고 합니다. 이번 글에서는 동시성을 구현하기 위해 사용하는 Thread(스레드)라는 녀석에 대해 알아보려고 합니다. 스레드는 정말 자주 들어본 개념인 것 같은데 이번 글에서 한 번 구체적으로 무엇인지에 대해 알아보면 좋을 것 같아요. 제가 참고하고 있는 OSTEP 책에서는 Chapter 26 Concurrency and Threads 부분 입니다! Concurrency: An Introduction 지난 글까지는 OS가 수행하는 abstraction(추상화)에 대해 살펴봤습니다. CPU, 메모리를 각 프로세스마다 존재하는 것처럼 해주는 가상화에 ..
문제링크 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 문제 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. 맥주 한 박스에는 맥주가 20개 들어있다. 목이 마르면 안되기 때문에 50미터에 한 병씩 마시려고 한다. 상근이의 집에서 페스티벌이 열리는 곳은 매우 먼 거리이다. 따라서, 맥주를 더 구매해야 할 수도 있다. 미리 인터넷으로 조사를 해보니 다행히도 맥주를 파..
안녕하세요 Pingu입니다. 지난 글에 이어 이번 글에서는 메모리에 할당된 page들 중 어떤 page를 swap 공간으로 교체할 것인가에 대한 방법들과 여러 방법 중 어떤 방법으로 page를 교체하는 것이 효율적으로 paging 기법을 구현할 수 있을지에 대해 알아보려고 합니다! 제가 공부할 때 참고하고 있는 OSTEP 책에서는 Chapter 22 Swapping: Policies 부분입니다! Beyond Physical Memory: Policies 만약 메모리의 크기가 너무 커서 이번 글에서 알아볼 page 교체를 하지 않아도 모든 프로세스를 수행할 수 있다면 지금부터 알아볼 것들이 모두 필요가 없겠지만... 안타깝게도 실제로는 메모리가 부족한 상황이 자주 발생하기 때문에 page 교체 정책이 필요..
안녕하세요 Pingu입니다. 오늘은 UILabel와 같은 텍스트를 보여주는 뷰에서 특정 글자만 색을 바꾼다던지 폰트를 적용하는 등의 작업을 해보려고 합니다. 보통 텍스트라고 하면 String 자료형을 갖는데요, 수정이 가능한 String의 속성을 나타내는 NSMutableAttributedString이라는 녀석이 있습니다. 얘를 적절히 조작하면 원하는 텍스트만 색을 바꾼다던가 폰트를 바꾼다던가 할 수 있습니다! 실제로 NSMutableAttributedString의 정의를 보시면 아래와 같습니다. "텍스트의 일부에 관련된 속성이 있는 수정 가능한 문자열입니다" 즉 얘를 통해 문자열의 일부만 수정할 수 있다는 말이죠. 그럼 바로 특정 문자열의 색을 바꾸는 것을 해보겠습니다. Label 특정 문자만 색 바꾸..
안녕하세요 Pingu입니다. 지난 글에 이어 이번 글에서는 메모리를 사용할 때 고정크기로 할당하는 paging 기법의 문제점 중 하나인 page table로 인한 메모리 낭비를 줄이는 방법에 대해 알아봤습니다. 이번 글에서는 page table을 아예 Disk에 저장하여 메모리 낭비를 줄이는 방법을 알아보려고 합니다. 제가 공부할 때 참고하고 있는 책인 OSTEP에서는 Chapter 21 Swapping: Mechanisms 입니다! Beyond Physical Memory: Mechanisms 지금까지 알아본 모든 메모리 관리 방법들은 모두 메모리의 크기보다 작은 프로세스의 경우만 알아봤었습니다. 그렇다면 만약 메모리의 크기보다 큰 프로세스를 실행하려면 어떻게 해야 할까요? 이를 위해서는 컴퓨터 구조에..
안녕하세요 Pingu입니다. 지난 글에서는 메모리를 고정 크기로 할당하여 사용하는 paging기법을 사용할 때 발생하는 문제점 중 paging 방법이 주소 변환을 위해 메모리에 접근하기 때문에 속도가 느린 점을 보완하기 위한 방법인 Translate Lookaside Buffer(TLB)에 대해 알아봤었습니다. 하지만 paging에는 속도가 느린 점 외에도 page table을 위한 메모리 공간을 많이 차지하는 것도 문제였었죠! 그래서 이번 글에서는 page table에 사용되는 메모리 공간을 줄이는 방법에 대해 알아보려고 합니다. 제가 공부할 때 참고하고 있는 OSTEP책에서는 Chapter 20 - Advanced Page Table 부분입니다! Paging: Smaller Tables Page ta..
안녕하세요 Pingu입니다! 지난 글에서는 메모리를 고정 크기로 할당하여 사용하는 paging에 대해 알아봤습니다. 하지만 지난 글에서 알아본 paging 기법에는 두 가지 큰 문제점이 있었는데요, 잦은 메모리 접근과 page table을 위한 메모리 낭비가 두 가지 문제점이었습니다. 이번 글에서는 앞서 말한 두 개의 문제 중 잦은 메모리 접근을 보완하기 위한 Translation Lookaside Buffer(TLB)에 대해 알아보도록 하겠습니다. 제가 공부할 때 참고하고 있는 OSTEP 책에서는 Chapter 19 - Translation Lookaside Buffers입니다.Paging: Faster Translations(TLB)Paging을 사용하여 메모리 가상화를 지원한다면 오버 헤드가..
- Total
- Today
- Yesterday
- Combine
- DP
- 스위프트
- OS
- 아이폰
- operating
- dfs
- Xcode
- 프로그래밍
- 알고리즘
- IOS
- 백준
- OSTEP
- document
- pattern
- 문법
- BFS
- 코테
- mac
- 코딩테스트
- Publisher
- 동시성
- operator
- Swift
- System
- 앱개발
- Apple
- 자료구조
- 테이블뷰
- design
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |