본문 바로가기

ComputerScience/OS

(3)
[OS] 동기화(Synchronization)와 경쟁 조건(Race Condition), 임계 영역(Critical Section) 하나의 객체를 두 개의 스레드가 접근할 때 발생하는 일class SharedResource { private int count = 0; public void increment() { count++; } public int getCount() { return count; }}class ThreadA extends Thread { private SharedResource resource; public ThreadA(SharedResource resource) { this.resource = resource; } public void run() { for (int i = 0; i 위 코드에서 ThreadA와 Th..
[OS] 스레드 풀(thread pool)은 무엇인가? Thread per request modelRequest마다 하나의 Thread를 할당시켜 하나의 Request는 하나의 Thread가 처리하도록 동작하는 모델이다. 문제점만약 Thread per reqeust 모델의 동작 방식이 서버에 들어오는 요청마다 스레드를 새로 만들어서 처리하고, 처리가 끝난 스레드는 버리는 식으로 동작한다면 스레드 생성에 소요되는 시간 때문에 요청 처리가 더 오래 걸린다.처리 속도보다 더 빠르게 요청이 늘어나면 스레드가 계속 생성이 되어 메모리가 고갈되고, 컨텍스트 스위칭이 더 자주 발생한다.이는 CPU 오버헤드 증가로 CPU Time이 낭비가 된다.어느 순간 서버 전체가 응답 불가능한 상태에 빠진다.Thread Pool미리 정해진 개수만큼 Thread를 생성해 놓고, 내부적으..
[OS] 프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍 사전 배경 지식 정리프로그램(Program)컴퓨터가 실행할 수 있는 명령어들의 집합이다. 프로세스(Process)컴퓨터에서 실행 중인 프로그램이다.각각의 프로세스는 독립된 메모리 공간을 할당받는다.프로세스는 명령어들과 데이터를 가진다. CPU(Central processing unit)명령어를 실행하는 연산 장치이다. 메인 메모리프로세스가 CPU에서 실행되기 위해 대기하는 곳 IO(input/output)파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고받는 것입출력 장치(e.g. 키보드, 마우스)와 데이터를 주거나 받는 것 단일 프로세스 시스템초창기 시스템은 단일 프로세스 시스템이었다.단일 프로세스 시스템은 한 번에 하나의 프로그램만 실행할 수 있다.따라서 다른 프로그램을 실행시키려면 현재 실행되고 ..