멀티스레드 프로그래밍과 ThreadSafe
·
운영체제
멀티스레드 프로그래밍이란?하나의 프로세스 내에 여러 쓰레드가 동시에 작업을 수행하는 것TIP: 프로세스의 성능이 단순히 스레드의 개수에 비례하는 것은 아니며, 하나의 스레드를 가진 프로세스 보다 두 개의 스레드를 가진 프로세스가 오히려 더 낮은 성능을 보일 수도 있음 멀티 태스킹과 멀티스레드 멀티 태스킹이란 여러개의 프로세스가 동시에 작업을 수행하는 것이다. 여러 프로세스도 동시에 작업을 수행할 수 있지만 다음과 같은 단점을 가진다. 프로세스간 일어나는 컨텍스트 스위칭이 매우 복잡함프로세스간 데이터 공유가 어려움(IPC와 같이 Kernel이 직접 개입해야하기 때문)듀얼 코어 활용이런 단점을 극복하고자 멀티 스레드 등장 같은 프로세스 내의 스레드 사이의 컨텍스트 스위칭은 비교적 가벼움메모리를 공유 멀티스레..
"동기-비동기"와 "블로킹-넌블로킹"의 차이
·
운영체제
항상 동기-비동기와 블로킹-넌블로킹 이 두가지 분야가 매우 헷갈렸다.일단 이해가 쉽게 하기 위해 다음과 같이 생각하면 된다.블로킹과 논블로킹은 작업의 수행 여부를 결정하는 방식에 대한 차이, 동기와 비동기는 작업의 완료 시점을 어떻게 처리할지에 대한 방식의 차이 동기/비동기동기 방식:작업을 요청하고 작업이 완료될 때까지 기다리는 방식.작업의 처리 결과가 반환될때까지 다음 작업을 할 수 없음.장점: 처리방식이 간단하다단점: 특정 작업의 처리가 길어질 경우 시스템의 전체적인 처리 속도가 느려질 수 있다. 왜냐하면 다음 작업이 대기 상태에 머무르기 때문 비동기 방식:작업을 요청한 후 결과와 상관없이 다음 작업을 수행할 수 있는 방식.작업의 완료와 결과 처리는 별도의 매커니즘을 통해 이루어짐.예시) 애니메이션 ..
Context Switching이란
·
운영체제
컨텍스트 스위칭이란(정의)CPU가 한 프로세스에서 다른 프로세스로 전환할 때 발생하는 일련의 과정을 뜻한다 CPU는 한번에 하나의 프로세스만 실행할 수 있으므로, 여러개의 프로세스를 번갈아가며 실행하여 CPU의 활용률을 올릴 수 있게 도와주는 것이 컨텍스트 스위칭의 필요성이다. 또한, 이런 컨텍스트 스위칭을 결정하는 주체는 스케줄러이다. 그전에 이해를 돕기 위해 CPU의 두가지 처리 방식에 대해 집고 넘어가면 좋다. CPU의 작업 처리 방식에는 두가지가 존재하는데 하나는 병렬성이고 또 하나는 컨텍스트 스위칭이 일어나는 동시성이다. 1. 병렬성병렬성은 직관적으로 명령어를 메모리에서 뽑아 해석하고 실행하는 반도체 유닛인 여러개의 코어에 맞춰 여러개의 프로세스, 스레드를 돌려 병렬로 작업들을 동시 수행하는 것..
프로세스와 스레드의 차이
·
운영체제
정의프로세스와 스레드는 둘다 어떤 작업을 하는데에 쓰이는데 차이점은 아래와 같다.프로세스란: 운영체제로 부터 자원을 할당받은 작업의 단위프로세스는 프로그램을 실행 시켜 정적인 프로그램이 동적으로 변하여 프로그램이 돌아가고 있는 상태 스레드: 프로세스가 할당 받은 자원을 이용하는 실행흐름의 단위하나의프로세스 내에서동시에 진행되는 작업 갈래, 흐름의 단위 사실, 두 개념은 비슷한듯 다르지만 비교란 말이 무색하게 스레드는 프로세스에 포함되어 있다고 생각하면 된다.프로세스 내에는 여래개의 스레드가 존재하는데위 사진처럼, 프로세스 하나에 기본적으로 main 스레드 존재. 그 이후 추가적인 스레드는 개발자가 위치 시켜줘야한다. 당연하게도 스레드가 많을수록 프로그램 속도도 같이 증가한다. 프로세스 구조 Text(정적..