일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 스레드 동기화
- Light Weight Process
- 스레드
- 프로세스
- 블로킹 논블로킹
- Process Control Block
- 모니터(Monitor)
- 유저 모드
- The Banker's Algorithm
- Heap영역
- 인터락 함수
- The DIning Philosopher Problem
- 커널 모드의 동기화
- 방금 그 곡
- Non-Preemptive
- 동기 비동기
- 프로세스 상태 전이도
- 뮤텍스(Mutex)
- 커널 모드
- 프로세스 제어 블록
- 교착 상태
- Multi-level Queue
- Activity
- Reentrant
- 임계 구역
- 유저 모드의 동기화
- 은행원 알고리즘
- Stack영역
- 문맥 교환
- 경량 프로세스
목록스레드 (3)
Blog For Me
Stack 영역을 스레드마다 독립적으로 할당하는 이유? 우선 스택 영역은 함수 호출 시 전달되는 인자, 복귀 주소값, 그리고 함수 내에서 사용되는 지역 변수 등을 저장하는 메모리 공간이다. Stack 메모리 공간이 독립적이라는 의미는 독립적인 함수 호출이 가능하다는 의미이며, 독립적인 실행 흐름이 추가된다는 것이다. 따라서 스레드의 정의에 의거하여 독립적인 실행 흐름을 추가하기 위해 최소한의 조건으로 독립된 Stack 영역을 할당하는 것이다. PC register를 스레드마다 독립적으로 할당하는 이유? PC 값은 스레드가 명령어를 어디까지 수행했는지를 나타낸다. 스레드는 CPU를 할당받았다가 Scheduler에 의해 다시 선점당하는데, 따라서 명령어가 연속적으로 수행되지 못하고 어느 부분까지 수행했는지 ..
멀티 프로세스 멀티 프로세스는 하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하게 한다. 장점 안정성이 확보된다. 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스만 죽는 것 이상으로 다른 영향이 확산되지 않는다. 별도의 동기화 작업이 필요하지 않다. 단점 Context Switching(문맥 교환) 과정에서 오버헤드가 발생할 가능성이 농후하다. 프로세스는 각 독립된 메모리 영역을 할당받았기 때문에 공유하는 메모리가 없다. 그러므로 캐시 메모리 초기화 등의 무거운 작업이 진행되고 많은 시간이 소모되는 등의 오버헤드 발생 문제가 존재한다. 프로세스 간 통신 과정이 복잡하다. 위에서 언급했듯이, 프로세스는 각 독립된 메모리 영역을 할당받았으므로 프로..
스레드(Thread)란? 프로세스 내에서 실행되는 프로그램 코드의 흐름을 의미하며, 프로세스 내 주소 공간이나 자원 공유 가능하다. 한 개의 프로세스 내에서는 반드시 하나 이상의 스레드가 존재한다. 스레드는 프로세스 내의 Code, Data, Heap 영역을 다른 스레드와 공유하고 Stack 영역은 따로 할당받는다. 여러 스레드는 한 프로세스 내의 Code, Data, Heap 영역을 공유하지만, 프로세스 간에는 서로 메모리에 접근할 수 없다. 스레드는 별도의 Register와 Stack을 가지고, 그 외의 다른 영역은 공유한다. 한 스레드가 프로세스 자원을 변경하면 다른 스레드도 그 변경 결과를 가져올 수 있다. 스레드가 필요한 이유 여러개의 작업 단위로 구성된 프로그램에서 요청을 동시에 처리하기 위함..