리소스 효율을 위해 멀티스레드 사용
공통 요소들은 같이 사용, 스레드 마다 스택을 개별 사용 하고 지역 변수와 자동 변수가 사용 하고 1Mb
TBC(스레드 컨트롤 블록)을 가지고 있음
스레드도 상태에 따라 문맥 교환이 발생 된다.
멀티스레드로 실행이 되면 공유된 자원을 사용하기 위해 레이스 컨디션(경쟁)이 발생된다.
스레드 동기화
프로세스는 자원과 데이터, 스레드로 구성되어 있다. 따라서 프로세스는 스레드가 운영체제로부터 자원을 할당받아 소스 코드를 실행하여 데이터를 처리한다.
만약, 싱글 스레드 프로세스라면, 공유 데이터에 단 하나의 스레드만이 접근하므로 문제가 될 것이 없다. 하지만, 멀티 스레드 프로세스의 경우, 두 개 이상의 스레드가 공유 데이터에 동시에 접근하게 되면 예상과 벗어난 결과가 타나날 수 있다.
이러한 문제를 해결해 주는 것이 바로 스레드 동기화다.
OS는 프로세스가 잘 작동하게 지원 해주기 위한 도구
고수준 스케줄링: 프로세스의 숫자 및 순서 관리 (job)
중간수준 스케줄링: 프로세스의 활성 및 보류 관리
저수준 스케줄링: 실행 프로세스의 세부 관리
부하 상태 관리
선점형: 어떤 프로세스가 선점하여 실행 중이더라도 운영체제가 강제로 다른 프로세스가 실행 될 수 있다. (일반적)
비선점형: 선점형과 반대의 개념으로 어떤 프로세스가 선점하여 실행 중이면 그 프로세스가 종료될 때 까지 다른 프로세스를 실행할 수 없다.
서버는 입출력 집중 프로세스 백그라운드 처리에 최적화
8. (물리)메모리 관리 (0) | 2023.07.01 |
---|---|
7. Process간 통신 / 공유 자원과 임계 구역 해결 방법 (0) | 2023.06.30 |
5. 프로세스 생성과 복사 (0) | 2023.06.28 |
4. 프로세스와 스레드 / 프로세스 휴식, 보류 상태와 문맥 (0) | 2023.06.27 |
3. CPU 예측이 가져올 수 있는 문제(보안사고)/프로세스와 스레드 (0) | 2023.06.26 |