스레드

    Process와 Thread

    프로세스는 운영 체제로부터 자원을 할당받아 동작하는 작업의 단위이고 스레드는 할당 받은 자원을 이용하는 실행의 단위이고 프로세스 내에서 최소 하나 혹은 그 이상이 될 수 있다. 어플리케이션 하나가 프로세스이고, 그 안에서 발생하는 동작의 단위가 스레드이다. multi process와 multi thread 멀티 프로세스는 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(Task)을 실행하게 된다. - 장점 : 하나의 프로세스에 문제가 생기더라도 다른 프로세스에 영향을 끼치지 않는다. - 단점 : 프로세스마다 독립된 메모리 영역을 할당받아 상호 공유하는 메모리 공간이 없어 (캐시 메모리 초기화 등) 무거운 작업의 context switching이 발생한다. *context swi..

    임계 구역과 경쟁 상태

    임계 구역 (Critical Section) 임계 구역이란 한 번에 하나의 프로세스 혹은 스레드만 접근 가능한 코드 영역으로 공유 데이터에 접근하는데 있어서 문제가 발생하지 않도록 하나의 접근만 허용함을 보장한다. 일반적으로 4가지의 코드 영역으로 나눠 볼 수 있는데 그 특징은 아래와 같다. entry section critical section에 진입하기 위해 진입 허가를 요청하는 영역으로 접근을 제어(lock)한다. critical section 하나의 프로세스 혹은 스레드만 접근 할 수 있는 영역 exit section 제어(lock)을 해제하는 등, 더 이상 임계 구역에 존재하지 않을 때 알리는 역할을 하는 영역 remainder section 입력, 중요, 종료 세션을 제외한 나머지 코드 부분의..

    [안드로이드] 프로세스와 스레드의 차이점

    프로세스와 스레드의 차이점 프로세스는 애플리케이션이 실행될 때 운영체제로부터 자원을 할당받고, 스레드는 한 프로세스 내에서 동작되는 실행의 흐름 단위로써 프로세스가 할당받은 자원을 같은 프로세스 내의 스레드끼리 공유하면서 실행된다. 안드로이드는 한 프로세스당 최소 하나의 메인 스레드를 기본으로 가지고, 서브 스레드를 추가할 수 있다. 여기서 말하는 자원은 CPU 시간, 주소 공간, Stack, Heap, Data, Text의 구조로 되어있는 메모리 영역이다. 스레드는 왜 쓰는걸까 운영체제 입장에서 시스템의 자원을 효율적으로 관리하기 위해 스레드를 사용한다. 멀티 프로세스로 실행되는 것보다 하나의 프로세스에 필요한 자원을 할당하고 실행할 작업을 더 작은 실행 흐름 단위인 스레드로 쪼개는 게 시스템 콜(ca..