안녕하세요 Pingu입니다! 🐧 지난 글인 Concurrency의 문제점을 알아보는 글을 마지막으로 Concurrency(동시성)에 대해 알아봤고 이번 글부터는 Persistence(영속성)에 대해 알아보려고 합니다. 영속성이라는 것은 데이터를 영구적으로 저장할 수 있는 것을 말하며 이를 위한 방법들을 알아볼 예정입니다. 영속성 단원에서는 I/O Device, 파일 시스템, Disk와 같은 데이터를 저장하기 위해 OS가 하는 일에 대해 알아볼 거예요! 이번 글에서는 그중에서도 파일 입출력 장치 (I/O Device)에 대해 알아보려고 합니다. 제가 공부할 때 참고하고 있는 OSTEP 책에서는 Chapter 36 - I/O Devices 부분 입니다! I/O Devices 이번 글에서는 I/O Device..
안녕하세요 Pingu입니다. 🐧 지난 글에서는 동시성을 구현하기 위해 사용했던 Lock과 condition variable(조건 변수) 역할을 한 번에 할 수 있는 semaphore(세마포어)에 대해 알아봤습니다. 세마포어를 활용하여 여러 가지 유명한 문제들을 해결해봤었는데요, 이렇게 동시성을 잘 구현할 수 있게 되었지만 동시성 프로그래밍에는 문제점이 존재합니다. 바로 Deadlock(교착 상태)라고 불리는 문제인데요, 이번 글에서는 교착 상태에 대해 알아보고 어떻게 예방하고 해결할 수 있는지에 대해 알아보도록 하겠습니다. 제가 공부할 때 참고하고 있는 책인 OSTEP에서는 Chapter 32 - Concurrecny Bug 부분입니다! Common Concurrency Problems 동시성은 여러개의..
안녕하세요 Pingu입니다. 지난 글에서는 Concurrency(동시성)에서 Synchronization(동기화)를 구현하기 위한 condition variable(조건 변수)에 대해 알아봤었습니다. 동기화란 스레드 간에 실행 순서를 정해 줄 수 있도록 하는 것으로 유명한 producer/consumer 문제로 적용해서 알아봤었습니다. 이번 글에서는 그 유명한 semaphore에 대해 알아보고 이를 producer/consumer, reader/writer, dining Philosophers(식사하는 철학자 문제)와 같은 유명한 문제들에 적용해보며 실제로 좋은지에 대해 알아보려고 합니다. Semaphore는 간단하게 말하면 지금까지 알아본 Lock, condition variable의 역할을 모두 할 ..
안녕하세요! Pingu입니다. 오늘도 열심히 OS에 대해 알아보겠습니다! 지난 글에서는 일반적인 자료구조에 Lock을 상호 배제 구현하여 thread safety 하게 만드는 방법에 대해 알아봤었습니다. 여러 가지 자료구조에 대해 lock으로 상호 배제를 구현하고 발생하는 문제점들을 해결했었죠! 이번 글에서는 Condition Variable(상태 변수)라는 것을 추가하여 lock을 사용할 때 상호 배제만 고려하는 것이 아닌 synchronization(동기화) 즉 스레드들의 실행 순서 관계를 관리하는 방법을 알아보려고 합니다. 제가 공부할 때 참고하고 있는 OSTEP 책에서는 Chapter 30 - Condition Variables 부분 입니다! Conditional Variables 지난 글까지는 ..
안녕하세요 Pingu입니다. 지난 글에서는 Concurrency(동시성)을 구현할 때 필요한 mutual exclusion(상호 배제)을 구현하기 위한 lock이라는 개념에 대해 알아봤습니다. 이번 글에서는 지난번에 알아본 lock을 사용하여 queue, linked list, hash table 등의 자료구조에서 여러 개의 스레드가 동시에 접근하더라도 문제가 없도록 하는 방법에 대해 알아볼 예정입니다. 제가 공부할 때 참고하고 있는 OSTEP 책에서는 Chapter 29 - Locked Data Structure 입니다! Lock-based Concurrent Data Structures 자료구조에 여러개의여러 개의 스레드가 동시에 접근한다면 어떻게 될까요? 예를 들어 배열의 경우 특정 인덱스에 여러 ..
안녕하세요 Pingu입니다! 지난 글에서는 동시성 프로그래밍에서 사용하는 스레드를 쉽게 사용할 수 있는 C언어 API들을 알아봤었는데요! 이번 글에서는 동시성 프로그래밍을 구현할 때 스레드를 사용하면 발생하는 문제점 중 하나인 공유 자원에 여러 스레드가 동시에 접근하려고 할 때 발생하는 문제를 해결하는 방법인 Lock에 대해 알아보려고 합니다. 제가 공부할 때 참고하는 책인 OSTEP에서는 Chapter 28 - Lock 부분 입니다! Locks 지난 글들에서 Concurrency(동시성)에 대해 알아봤을 때 문제점들이 몇 가지 존재했었습니다. 그중 하나는 명령을 원자적으로 (여기서 원자적이라는 말은 특정 작업을 수행할 때 시작을 했으면 끝나는 것을 보장하는 것을 말합니다.) 수행하고 싶지만 프로세서에는..
안녕하세요! 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, 메모리를 각 프로세스마다 존재하는 것처럼 해주는 가상화에 ..
- Total
- Today
- Yesterday
- pattern
- System
- IOS
- 백준
- OS
- 테이블뷰
- Xcode
- BFS
- 문법
- 알고리즘
- document
- DP
- Apple
- Publisher
- OSTEP
- dfs
- Combine
- mac
- 코딩테스트
- operator
- 자료구조
- 코테
- 아이폰
- Swift
- 앱개발
- 프로그래밍
- operating
- 스위프트
- 동시성
- 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 |