운영체제

스레드 풀스레드 풀에 대한 이해스레드 풀이 필요한 이유스레드 생성은 쉬운 작업이 아니다. 그래서 매번 요구되는 일에 대해 스레드가 새로 생성되고 할당되면 굉장히 부담스럽다. 또한 요구된 일들을 동시에 처리되는 게 아니라 시간적인 텀을 두고 처리해도 된다면 하나의 스레드를 생성하고 이 스레드가 요구된 일들을 다 처리한다면 스레드를 또 만들 필요가 없다.그래서 미리 스레드를 만들어두고 이 스레드를 스레드 풀에 저장해 두다가 요청이 오면 스레드 풀에서 스레드를 꺼내서 요청에 스레드를 할당한다. 요청한 작업이 완료되면 해당 스레드를 풀에 반환한다. 즉 적정한 수의 스레드를 미리 생성해서 풀에 저장하고 일이 들어올 때마다 스레드를 꺼내 사용하고 다 사용하면 다시 반환한다. 이러한 작업을 통해 성능을 향상할 수 있..
스레드 동기화 기법2순서 동기화 즉 순서를 조절하겠다는 소리다.순서를 동기화하는 이유가 무엇인지 아는 게 중요하다.생산자/소비자 모델데이터 입력받고 입력된 데이터 출력 구조이다.입력된 크기만큼 출력되기 때문에 출력이라는 것은 입력에 의존적이다.반면 입력은 외부 환경에 의존적이다.여기서 발생할 문제는 10B씩 입/출력을 하다가 어느 순간 10MB가 한 번에 들어오면 10MB 데이터를 처리하다가 손실이 일어날 수 있다.계속 읽기만 하면 손실이 없다. 언제 문제가 발생하냐면 읽고 출력을 하는 게 문제이다 출력하는 와중에도 데이터가 계속해서 들어오면 감당이 안 돼서 이러한 과정에서 손실이 발생할 수 있다.그래서 위 이미지와 같이 입출력 모델을 설계한다.입력 스레드는 계속해서 입력을 받고 출력용 버퍼에다가 데이터..
스레드 동기화 기법1스레드 동기화란 무엇인가?동기화는 2가지 측면이 있다.메모리 접근에 대한 동기화A, B 스레드가 존재 이 두 스레드가 동시에 한 메모리에 접근하면 문제가 발생함메모리에 접근하기 위해서는 프로그램 코드를 통해 접근한다.그래서 둘 이상의 스레드가 동시에 메모리에 접근하도록 원인을 제공하는 코드 블럭을 가리켜 임계영역이라 한다.이러한 임계영역은 한순간에 하나의 스레드만 실행할 수 있도록 허용해야 한다.그래서 둘 이상의 스레드가 동시에 접근하는 거를 막아야 한다. 이것이 바로 동기화다.임계영역 ⇒ 메모리 접근 동기화가 필요임계영역에 접근하는 것을 동기화한다는 것은 한순간에 하나의 스레드만 접근하도록 하겠다. 이것이 바로 임계영역에 대한 메모리 접근 동기화다.실행순서의 동기화메모리에 접근하는 ..
스레드의 생성과 소멸Windows에서의 스레드 생성과 소멸windows에서 사용할 수 있는 가장 기본적인 스레드 생성 함수는 CreateThread이다.dwStackSize스레드 생성과 동시에 독립적인 스택을 할당받는데 이때 스택의 사이즈 결정짓는 요소다.lpStartAddress함수를 가리킬 수 있는 포인터이다.스레드 동작하기 위한 함수. 다시 말해서 스레드의 main 역할을 하는 함수를 지정하는 전달인자이다.lpParameter스레드 함수에 전달할 인자를 지정하는 용도로 사용한다.매개변수 lpStartAddress가 가리키는 함수 호출 시 전달할 인자를 지정하는 것이다.main 함수에서 argv로 문자열이 전달되는 것과 유사하다.생성가능한 스레드 개수는?“메모리가 허용하는 만큼”스레드가 생성될 때마다..
an_jjin
'운영체제' 카테고리의 글 목록 (2 Page)