
멀티스레딩user 스레드: 사용자 모드에서 사용하는 스레드, JVM은 여러개 스레드를 실행할 수 있다 뿐이지 운영체제가 갖고 있는 CPU안에 있는 코어들을 자기 마음대로 넘나들 수 없다.kernel 스레드: 커널 모드에서 사용하는 스레드, OS가 직접 매니지하는 스레드

Cooperating process영향을 주거나 영향을 받는 프로세스들 logical address space를 공유하거나 (주로 스레드) 데이터를 공유하거나 (shared memory, message passing)concurrent하게 실행되는 프로세스들이 공유된

임계영역(Critical Section)문제의 Software SolutionDekker's Algorithm두 개의 프로세스Eisenberg , McGuire's Algorithmn개의 프로세스에 대해서 waiting 타임이 n-1을 lower bound를 가짐Pet

좀더 Higher-level에서 소프트웨어를 가지고 critical section을 해결할 방법Mutex Locks열쇠를 가지고 들어갔다가 나올때 이 열쇠를 반납해라2개의 프로세스가장 간단한 synchronization 툴Semaphore가장 보편적임, 편리하고 효과적

뮤텍스와 세마포어의 문제뮤텍스와 세마포어 편하지만 timing error가 발생한다.특정한 시퀀스를 잘못쓰면 항상일어나지도 않고 잡기도 어려운 문제들이 발생한다.wait signal 순서 안지키면 critical section에 들어가는 경우 발생(다섯개 같이넣으니까

Concurrency-Contrl ProblemBounded-Buffer 문제, Producer-Consumer Readers-Writers 문제, Dining-Philosopher 문제Bouded-Buffer ProblemP와 Q는 중간에 공유된 Buffer (sha

Dining-Philosophers Problem(철학자들의 저녁식사 문제)동시성 제어문제들 중 1철학자들이 생각하고 먹고 생각하고 먹고하는데 다섯개의 젓가락을 공유한다.배가고파지면 두개의 젓가락으 사용한다.배가고파서 두개를 동시에 쓸려고하면 어떻게 될까양쪽 두명이 가

deadlock교착상태란 어떤 다른 프로세스에 의해서 발생된 이벤트에 의해서 모든 프로세스가 대기하는 현상요청한 자원을 다른 대기중인 쓰레드가 점유하고 있기 때문에 자원을 요청한 대기중인 쓰레드(또는 프로세스)는 다시는 쓰레드 상태를 변경할 수 없다.waiting 스레