본문 바로가기

CS/OS

(4)
교착상태 ( DeadLock ) OS 🌙 교착 상태란 프로세스들의 집합이 더 이상 진행을 못하고 영구적으로 블록되어 있는 상태로 정의된다. 교착 상태는 시스템 자원에 대한 경쟁 도중에 발생할 수도 있고 프로세스 간 통신 도중에 발생할 수도 있다. 집합 내의 한 프로세스가 특정 사건의 발생을 기다리며 대기하고 있고, 이 사건이 집합 내의 다른 블록된 프로세스에 의해 발생될 수 있을 때 이 프로세스의 집합은 교착상태가 된다. 교착 상태가 영구적인 이유는 기다리던 사건이 결코 발생하지 않기 때문이다. 교착 상태는 두 개 이상의 프로세스들이 서로 충돌되는 자원 요구를 할 때 발생한다. 교착상태( DeadLock 조건 ) 상호 배제 ( mutual exclusion ) 조건 한 순간에 한 프로세스만이 자원을 사용할 수 있다. 즉 한 프로세스에 의해 점유..
뮤텍스(Mutex)와 세마포어(Semaphore)의 차이💁‍♂️ 뮤텍스 ( Mutex ) 뮤텍스란 MUTual EXclusion 으로 우리말로 해석할 경우 ' 상호 배제 ' 라는 뜻이다. Critical Section 을 가진 Thread들의 running time 이 서로 겹치지 않게, 각각 단독으로 실행되게 하는 기술이다. 만약 어느 Thread에서 Critical Section을 실행하고 있으면 다른 Thread들은 그 Critical Section에 접근할 수 없고 앞의 Thread가 Critical Section을 벗어나기를 기다려야 한다! - 공유된 자원의 데이터를 여러 스레드가 접근하는 것을 막는 것. - 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 Synchronized 또는 lock 을 사용한다. - 뮤텍스 객체를 두 스레드가 동시에 사..
프로세스 vs 스레드💻 프로그램 ( Program ) 어떤 작업을 위해 실행할 수 있는 파일을 의미한다. 프로세스 ( Process ) 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미한다. - 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 ( 독립적인 개체 ) - 운영체제로부터 시스템 자원을 할당받는 작업의 단위 - 동적인 개념으로는 실행된 프로그램을 의미한다. 할당 받는 시스템 자원 - CPU 시간 - 운영되기 위해 필요한 주소 공간 - Code, Data, Stack, Heap 의 구조로 되어있는 독립된 메모리 영역 특징 - 프로세스는 각각 독립된 메모리 영역 ( Code, Data, Stack, Heap의 구조) 를 할당받는다. - 기본적으로 프로세스는 최소 1개의 스레드(메인 스레드)를 가지고 있다. - ..
멀티 스레딩 프로세스 vs 스레드 프로세스 운영체제로부터 자원을 할당받는 작업의 단위. 실행 중인 프로그램의 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말한다. 운영체제로부터 주소 공간, 파일, 메모리 등을 할당 받으며 이것들을 총칭하여 프로세스라고 한다. 스레드 프로세스가 할당받은 자원을 이용하는 실행의 단위 프로세스의 실행의 단위다. 한 프로세스 내에서 동작되는 여러 실행 흐름으로 프로세스 내의 주소 공간이나 자원을 공유할 수 있다. 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 '멀티스레딩'이라고 한다. 이 경우 각각의 스레드는 독립적인 작업을 수행해야 하기 때문에, 각자의 스택과 PC레지스터 값을 갖고..