wait() 3

[ Java ] 09. Java에서의 Thread 활용

Java에서의 Thread 활용 요즘 OS는 모두 멀티태스킹을 지원한다. 실제로 동시에 처리될 수 있는 프로세스의 개수는 CPU 코어의 개수와 동일한데, 이보다 많은 개수의 프로세스가 존재하기 때문에 모두 함께 동시에 처리할 수는 없다. 각 코어들은 아주 짧은 시간동안 여러 프로세스를 번갈아가며 처리하는 방식을 통해 동시에 동작하는 것 처럼 보이게 할 뿐인다. 이와 마찬가지로 멀티스레딩이란 하나의 프로세스 안에 여러개의 스레드가 동시에 작업을 수행하는 것을 말한다. 스레드는 하나의 작업 단위라고 생각하면 편하다. Thread 구현 자바에서의 스레드 구현방법에는 2가지가 있다. Runnable 인터페이스 구현 Thread 클래스 상속 둘다 run() 메소드를 오버라이딩 하는 방식이다 ! public cla..

[ OS ] 08. 프로세스 동기화 - 모니터(Monitor)

모니터 세마포어나 뮤텍스를 잘못 사용해서 일어나는 에러가 발생할 수 있다. 따라서 자바에서는 더욱 심플한 동기화 툴인 "모니터"를 제공한다. 고급 언어의 설계 구조물로서, 개발자의 코드를 상호배제 하게끔 만든 추상화된 데이터 형태이다. 공유자원에 접근하기 위한 키 획득과 자원 사용 후 해제를 모두 처리한다. (세마포어는 직접 키 해제와 공유자원 접근 처리가 필요하다. - 모니터의 개념 하나의 데이터(객체)마다 하나의 모니터를 결합할 수 있으며, 모니터는 그것이 결합된 데이터(객체)가 동시에 두 개 이상의 스레드에 의해 접근할 수 없도록 막는 잠금(lock)기능을 제공함으로써, 동기화를 수행하는 동기화 도구이다. 즉, 데이터(객체)에 모니터를 결합하면 하나의 스레드가 그 데이터를 사용하는 동안에는 다른 스..

[ Linux Kernel ] 07. 주요 시스템 콜 동작 원리

9. 주요 시스템 콜 동작 원리 2강에서 설명했던 fork()의 작동 원리에 대해서 이어서 설명한다. fork()뿐만아니라 이번 3강에서는 다양한 시스템 콜에 대해 학습한다. 또한 데몬(Daemon)과 서버(Server)에 대해서도 간단히 학습할 것이다. 시작하기 앞서 이번 강의에서 등장할 그림들에 오류가 있다는 점을 언급하고 싶다. 오류가 있는 부분은 별도로 빨간색으로 마크해서 원래 있어야할 곳으로 표식을 해놓거나 중간 중간 어떤 부분에 오류가 있는지를 언급을 했으니 부디 설명을 읽으면서 헷갈리지 않길 바란다. 9.1 Fork(2)의 동작 원리 그림에서 수정된 사안이 하나 있는데, printf(“I am parent!\n”)부분이 else 구문에 속해야하는 것이 맞다. 이점을 주의해서 아래 설명을 보자..