전체 글
-
[Swift] Foundation에서 제공하는 동기화를 위한 Lock에 대해서 알아보기 | NSLock | NSRecursiveLock | NSConditionLock | NSCondition | NSDistributedLock테크 2023. 10. 25. 01:56
아직까지도 thread-safe한 코드를 작성하는 것은 어렵다. 그래서 Swift에서 지원하는 동기화 도구(synchronization tool)에 대해서 알아보고 멀티쓰레드 프로그래밍(multithread programming)에 대한 자신감을 키워보도록 하겠다. 첫걸음으로 Foundation에서 제공하는 lock과 관련된 클래스들을 알아보도록 하겠다. ※ thread-safe 임계 영역(critical section)에 여러 쓰레드가 동시에 접근하더라도 실행 결과가 올바르게 나오는 것을 뜻한다. ※ 동기화(synchronization) 한 쓰레드가 특정 임계 영역을 실행하고 있을 때 다른 쓰레드가 해당 영역을 실행하지 못하도록 막는 것을 뜻한다. 100% 정확한 설명이라고 보기는 어렵지만 일단 이 정..
-
[OS101] 쓰레드테크 2023. 9. 14. 17:38
본 글은 2023.09.14에 새롭게 업데이트되었습니다. 서울대학교 평생 교육원에서 제공하는 운영체제의 기초 강의 내용을 중점으로 정리했다. 부족한 부분은 책을 참고하면서 채워 나갔다. 이해를 돕기 위한 그림들은 여기에서 가져왔다. 목차 쓰레드란 무엇인가 쓰레드가 필요한 이유 쓰레드 구현 형태 멀티쓰레딩 모델 쓰레드 라이브러리 - pthreads 쓰레드란 무엇인가 쓰레드(thread)는 CPU의 실행 단위이다. 쓰레드의 개념을 정확하게 알기 위해서는 반드시 프로세스 개념을 정확하게 알아야 한다. 프로세스에는 컨텍스트와와 실행 흐름(execution stream 또는 thread of control)이 있다. 이제 이 두 개를 분리시키자. thread of control, 즉 실행 흐름을 분리시킨 것이 쓰..
-
[OS101] 프로세스테크 2023. 9. 10. 15:47
본 글은 2023.09.10에 새롭게 업데이트되었습니다. 서울대학교 평생 교육원에서 제공하는 운영체제의 기초 강의 내용을 중점으로 정리했다. 부족한 부분은 책을 참고하면서 채워 나갔다. 이해를 돕기 위한 그림들은 여기에서 가져왔다. 목차 프로세스란 무엇인가 프로세스 구현 방법 프로세스 스케줄링 프로세스 생성 및 종료 프로세스란 무엇인가 프로세스(process)는 운영 체제가 CPU, 메모리, I/O 디바이스를 할당하는 주체이다. 즉, 실행 중인 프로그램(program in execution)이다. 프로그램은 저장 매체에 저장된 명령어들의 집합체이기 때문에 수동적인 반면, 프로세스는 운영체제에 의해 저장 매체로부터 읽어져 메인 메모리에 로드된 후 CPU와 같은 자원을 능동적으로 사용하는 수행 주체이다. 또..
-
[OS101] 운영 체제를 이해하기 위한 컴퓨터 구조 기초테크 2023. 9. 5. 19:15
본 글은 2023.09.05에 새롭게 업데이트되었습니다. 서울대학교 평생 교육원에서 제공하는 운영체제의 기초 강의 내용을 중점으로 정리했다. 부족한 부분은 책을 참고하면서 채워 나갔다. 이해를 돕기 위한 그림들은 여기에서 가져왔다. 목차 개요 시스템 버스 I/O 레지스터 폴링과 인터럽트 DMA 하드웨어 보호 기법 개요 컴퓨터는 크게 연산 작업과 I/O 작업을 한다. 연산 작업은 CPU가 맡아서 처리하는 반면, I/O 작업은 수많은 I/O 디바이스들이 관여한다. 여러 I/O 디바이스들의 기능 및 속도가 매우 다양하기 때문에 운영체제는 이를 효과적으로 제어하기 위해서 I/O 시스템을 가지고 있다. 덕분에 운영 체제의 다른 부분이 I/O 디바이스를 관리하는 일에 신경 쓰지 않아도 된다. 그렇다면 컴퓨터는 어떻..
-
[OS101] 운영체제 역사 및 기능테크 2023. 9. 5. 17:24
본 글은 2023.09.05에 새롭게 업데이트되었습니다. 서울대학교 평생 교육원에서 제공하는 운영체제의 기초 강의 내용을 중점으로 정리했다. 부족한 부분은 책을 참고하면서 채워 나갔다. 이해를 돕기 위한 그림들은 여기에서 가져왔다. 목차 운영체제의 역사 운영체제의 기능 운영체제의 역사 운영체제의 역사는 크게 3단계로 나눌 수 있다. Phase 1: 운영체제의 시작, 메인 프레임 컴퓨터의 보편화 (1950 - 1960) Phase 2: 운영체제 기반 설립, 인터넷 보편화 전 (1960 - 1990) Phase 3: 인터넷 보편화 후, 오늘날 (1990 - 현재) Phase 1: 운영체제의 시작 노동력은 값싸고 하드웨어는 매우 비싸던 시절이다. 그래서 CPU 사용률을 최대화하는 것이 매우 중요했다. 연구자들..
-
[WWDC21] Mitigate fraud with App Attest and DeviceCheck테크 2023. 8. 17. 17:30
※ 본 내용은 WWDC21에서 발표된 내용을 정리한 내용입니다. Mitigate fraud with App Attest and DeviceCheck - WWDC21 - Videos - Apple Developer Discover how to use App Attest and DeviceCheck, Apple's powerful anti-fraud tools, created to safeguard your apps and content. Unlock the... developer.apple.com 목차 DeviceCheck App Attest App Attest Flow Risk Metric Service DeviceCheck 앱에 새로운 기능을 추가했다고 가정하자. 이 기능을 홍보하기 위해서 무료로 한 ..
-
[Android] Keystore와 StrongBox의 정의 및 차이점테크 2023. 8. 17. 16:45
목차 서론 Android Keystore StrongBox 요약 서론 안드로이드에서 암호화 키 보관 방법을 알아보던 중 헷갈리는게 있어서 정리를 해보기로 했다. 이 글을 이해한다면 Hardware-backed 방식을 채택하고 있는 Android Keystore가 무엇인지 최근에 새롭게 생긴 StrongBox는 Android Keystore와 무엇이 다른지 알 수 있을 것이다. 뿐만 아니라 본 내용을 이해하기 위해 필요한 사전 지식인 KeyStore 클래스, MasterKey 클래스, TEE, SE에 대해서도 정리했다. Android Keystore Android Keystore는 무엇인가? Android Keystore는 개발자가 보안성이 높은 어딘가에서 암호화 키를 생성하고 저장하여 디바이스에서 쉽게 ..
-
OAuth 알아보기 1: 권한 부여 코드 승인 방식테크 2023. 4. 21. 21:00
OAuth 알아보기 시리즈 1. OAuth 알아보기 1: 권한 부여 코드 승인 방식 2. OAuth 알아보기 2: PKCE 방식 OAuth 등장 배경 다음과 같은 상황을 가정해 보자. 사용자 A는 Google ID를 가지고 있으며 Google에 여러가지 정보를 저장하고 있다. 가령 YouTube나 Google 검색 기록에 의해 좋아하는 음식 정보가 Google에 저장되어 있을 수 있다. 서비스 C는 자신의 서비스를 이용하는 사용자들의 Google에 저장된 여러가지 정보를 활용해서 특정 서비스를 제공한다. 가령 맛집 추천을 해줄 수 있다. 사용자 A가 서비스 C를 이용하려고 한다. 서비스 C는 Google에 저장되어 있는 사용자 A의 정보가 필요하다. 그렇다면 사용자 A의 Google ID 및 패스워드를 ..