[OS] 멀티프로세스 대신 멀티쓰레드 사용이유
·
OS
멀티 프로세스 대신 멀티 스레드를 사용하는 이유 자원의 효율성 증대 처리 비용 감소 및 응답 시간 단축 자원의 효율성 증대 멀티 프로세스로 실행되는 작업을 멀티스레드 실행할 경우, 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있음 (프로세스 간의 Context Switching시 단순히 CPU 레지스터 교체 뿐만 아니라 RAM과 CPU 사이의 캐시 메모리에 대한 데이터까지 초기화되므로 오버헤드가 크기 때문) 스레드는 프로세스 내의 메모리를 공유하기 때문에 독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어들게 됨 처리 비용 감소 및 응답 시간 단축 프로세스 간의 통신(IPC)보다 스레드 간의 통신의 비용이 적으므로 작업..
[OS] Thread Safe
·
OS
Thread Safe 정의 멀티스레드 환경에서 여러 스레드가 동시에 하나의 객체 및 변수(공유 자원)에 접근할 때, 의도한 대로 동작하는 것 Thread Safe 방법 Thread Safe하기 위해서는 공유 자원에 접근하는 임계영역(critical section)을 동기화 기법으로 제어 동기화 기법으로는 Mutex나 Semaphore 등이 있음 Reentrant 재진입성이라는 의미로, 어떤 함수가 Reentrant하다는 것은 여러 스레드가 동시에 접근해도 언제나 같은 실행 결과를 보장한다는 의미 만족하기 위해서 해당 서브루틴에서는 공유자원을 사용하지 않으면 됨 (정적(전역) 변수를 사용하거나 반환하면 안 되고 호출 시 제공된 매개변수만으로 동작해야함)
[OS] 데드락
·
OS
데드락 (교착상태) 첫 번째 스레드는 두 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리고 있고, 두 번째 스레드 역시 첫 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리는 상황 모든 스레드가 락이 풀리기를 기다리고 있기 때문에, 무한 대기 상태에 빠지게 되며 이런 스레드를 교착상태라 함 데드락 (교착상태)의 4가지 조건 상호배제 : 자원에 대해서 여러 프로세스가 동시에 접근 불가한 것을 뜻함 점유대기 : 공유 자원에 대한 접근 권한을 갖고 있는 프로세스가, 그 접근 권한을 양보하지 않은 상태에서 다른 자원에 대한 접근 권한을 요구하는 것 비선점 : 한 프로세스가 다른 프로세스의 자원 접근 권한을 가져 올 수 없음을 뜻함 순환대기 : 두 개 이상의 프로세스가 자원 접근을 기다리는데, 그 관계에..
[OS] Thread (쓰레드)
·
OS
Thread (쓰레드) 경량화 프로세스라고도 함 CPU를 점유하는 가장 기본적인 단위 Single Thread / Multi Thread 레지스터, 스택, 프로그램 카운터가 프로세스 내부에 별도로 가지게 되면 쓰레드가 됨 한 프로세스에 쓰레드를 여러개 가지게 되면 멀티쓰레드가 됨 Multi Thread 장점 반응성: User 인터페이스를 처리할때, 논블록킹으로 익스큐션을 계속 실행 가능 자원공유 : 스레드는 코드와 데이터 영역을 공유하기 때문에 Shared 영역을 안만들어도 자원공유가 자유로움 (프로세스 대비) 경제성 : 프로세스보다 비용이 더 경제성 있음 (컨텍스트 스위칭시 프로세스에 비해서 오버헤드가 낮음) 확장성 : 멀티프로세스 아키텍처에 병렬처리를 가능하게함 4개 쓰레드를 어플리케이션에서 상황별 ..
[OS] Process (프로세스)
·
OS
Process 정의 실행중인 프로그램을 뜻함 주기억장치에 저장된 프로그램 작업 스케줄러에 의해서 생성되어 주기억장치에 진입함을 뜻함 프로세스 내부에는 최소 하나의 스레드를 가지고 있으며, 실제로 스레드 단위로 스케쥴링을 함 Process 메모리 구조 Heap : 동적할당을 위한 메모리 영역 Data : 전역변수, static 변수 할당 Stack : 지역변수, 함수 호출시 전달되는 파라미터를 위한 메모리 영역 Process 상태 신규 (new) 실행 (Run) : 준비 상태에 있는 프로세스가 CPU를 얻어 실제 작업을 수행하는 상태 준비 (Ready) :하나의 프로세스가 중앙처리장치를 사용할 수 잇는 상태 대기 (Waiting) : 프로세스가 어떤 사건이 일어나기를 기다리는 상태 완료 (Termnated..
[OS] 뮤텍스 / 세마포어
·
OS
정의 여러 프로세스나 쓰레드가 공유자원에 접근하는 것을 제어하는 방법 병행처리를 위한 동기화 기법 뮤텍스 공유된 자원 데이터를 여러쓰레드가 접근하는 것을 막는 것 한 쓰레드, 프로세스에 의해 소유될 수 있는 Key를 기반으로 하는 상호배제 기법 Critical Section을 가진 스레드의 Running time이 서로 겹치지 않도록 각각 단독으로 실행하게 하는 기술 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 synchronized 또는 lock을 사용 세마포어 공유된 자원 데이터를 여러프로세스가 접근하는 것을 막는 것 현재 공유자원에 접근할 수 있는 쓰레드, 프로세스를 나타내는 수를 나타내는 값을 두어 상호배제를 달성하는 기법 차이점 뮤텍스는 동기화대상이 하나일 경우, 세마포어는 동기화..
[OS] PCB(Process Control Block)
·
OS
PCB 정의 운영체제가 프로세스를 제어하기 위해 정보를 저장 놓은 곳, 프로세스의 상태 정보를 저장하는 구조체 프로세스 상태관리와 문맥 교환을 위해 필요함 PCB는 프로세스 생성시 만들어지며 주기억장치에 유지됨 PCB에 포함되는 정보 Process ID : 프로세스를 구분하는 정보 Process State : 각 State (생성, 준비, 실행, 대기, 종료)를 저장 Program Counter : 다음에 실행할 Instruction의 주소를 저장하는 카운터, CPU는 이 값을 통하여 Process의 Instruction을 수행함 Register Information : Accumulator, CPU Register, General Register 등을 포함 CPU Scheduling Informatio..