# 운영체제와 동시성

[원문](https://www.linkymeadow.com/w/75b19c/)

마지막 수정: 2026-10-05 21:30 (KST)

프로그램이 CPU·메모리·저장장치를 사용하는 원리와 여러 작업이 함께 실행될 때의 문제를 다룬 자료입니다. 운영체제의 스레드, 언어 런타임의 실행 모델, 비동기 API를 구분해서 읽을 수 있습니다.

## 프로세스와 메모리

- [Operating Systems: Three Easy Pieces — Arpaci-Dusseau](https://pages.cs.wisc.edu/~remzi/OSTEP/)

  프로세스·시스템 콜·CPU 스케줄링, 주소 공간·메모리 할당·페이징·교체 정책과 가상화를 다루는 공개 교재입니다.
- [OSTEP Homework](https://pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html)

  스케줄링·주소 변환·페이지 교체·동시성·파일 시스템을 시뮬레이터로 실습하는 과제를 제공합니다.
- [Computation Structures Lecture Notes — MIT OpenCourseWare](https://www.ocw.mit.edu/courses/6-004-computation-structures-spring-2009/resources/lecture-notes/)

  명령어 파이프라이닝, 메모리 계층과 지역성, 가상 메모리, 프로세스·동기화를 다루는 강의 자료입니다.

## 락과 동시성 오류

- [Locks — OSTEP](https://pages.cs.wisc.edu/~remzi/OSTEP/threads-locks.pdf)

  임계 구역을 보호하는 락과 원자적 하드웨어 명령, 상호 배제·공정성·성능을 설명합니다.
- [Common Concurrency Problems — OSTEP](https://pages.cs.wisc.edu/~remzi/OSTEP/threads-bugs.pdf)

  원자성·실행 순서 위반과 교착 상태의 발생 조건 및 예방 방법을 설명합니다.
- [ThreadPoolExecutor — Java API](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ThreadPoolExecutor.html)

  스레드 수·대기열·작업 거부 정책을 통해 스레드 풀의 포화와 자원 사용을 조절하는 방법을 설명합니다.
- [ThreadLocal — Java API](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/ThreadLocal.html)

  스레드별 값 보관과 초기화·제거 API를 설명하며 스레드 재사용 시 값의 생명주기를 검토할 수 있습니다.

## 이벤트 루프와 코루틴

- [Don’t Block the Event Loop — Node.js](https://nodejs.org/learn/asynchronous-work/dont-block-the-event-loop)

  이벤트 루프와 작업자 풀의 역할, 오래 실행되는 작업이 다른 요청을 지연시키는 이유를 설명합니다.
- [asyncio — Python](https://docs.python.org/3/library/asyncio.html)

  코루틴·태스크·이벤트 루프와 네트워크 I/O를 사용하는 비동기 프로그램의 공식 문서입니다.
- [Coroutines basics — Kotlin](https://kotlinlang.org/docs/coroutines-basics.html)

  코루틴의 일시 중단과 재개, 스코프·디스패처·구조적 동시성의 기본을 설명합니다.

## 저장장치와 자동 메모리 관리

- [Hard Disk Drives — OSTEP](https://pages.cs.wisc.edu/~remzi/OSTEP/file-disks.pdf)

  탐색·회전 지연·전송 시간으로 디스크 접근 비용을 설명합니다.
- [Redundant Arrays of Inexpensive Disks — OSTEP](https://pages.cs.wisc.edu/~remzi/OSTEP/file-raid.pdf)

  RAID 구성별 용량·성능·장애 허용의 차이와 스트라이핑·미러링·패리티를 설명합니다.
- [HotSpot Virtual Machine Garbage Collection Tuning Guide — Oracle](https://docs.oracle.com/en/java/javase/25/gctuning/)

  Java의 가비지 컬렉터와 메모리 회수, 처리량·지연 시간·메모리 사용량 사이의 조정 기준을 다룹니다.

## 관련 문서

- [Java와 자료구조](https://www.linkymeadow.com/w/b7d14e/)
- [분산 시스템과 운영](https://www.linkymeadow.com/w/913d6a/)
- [백엔드 개발 학습 자료](https://www.linkymeadow.com/w/e48b27/)
