12. Concurrent Programming {csapp}
HW exception handler, process, linux signal handler 모두 동시성 프로그래밍의 중요한 예시. 느린 io 디바이스의 한계를 극복할 수 있다. 사실 인간이 컴퓨터와 상호작용하는 것도 IO 디바이스의 도움을 받아야 하기에, 마우스 클릭, 키보드 키스트로크 전부 이를 처리하는 별개의 흐름으로 돌아가고 있다. 작업을 동시에 처리하기 위해 특정 작업을 뒤로 미룰 수도 있다. CPU 한개에 요즘은 여러 코어가 달려 나오기 때문에 많은 시스템은 적어도 싱글코어가 할 수 있는 일의 양보다 더 많은 작업을 동시에 수행할 수 있다.
keywords
- IPC: 프로세스끼리는 메모리 공간을 공유하는데 특별한 방법을 써야 한다.
- IO-Multiplexing: fd를 여러 응용 프로그램들이 공유하는 건가? =>
select
와poll
두 시스템 콜을 사용한 결과로 프로세스가 요청한 응답이 올 때까지 (네트워크던, 키보드 입력이던) 블록 상태로 만드는 기술을 말한다. - Multi Threads: 하나의 프로세스 안에서 하나의 가상 메모리 주소공간을 공유하는 별도의 실행흐름들.
INDEX#
- 12.1. Concurrent Programming with Processes
- 12.2. Concurrent Programming with IO Multiplexing
- 12.3. Concurrent Programming with Threads {csapp}
- 12.4. Shared Variables in Threaded Programs
- 12.5. Synchronizing Threads with Semaphores
- 12.6. Using Threads for Paralleism
- 12.7. Other Concurrency Issues
- 12.8. Summary