티스토리 뷰
1. 단일 스레드와 멀티 스레드
* Thread: CPU 활용의 기본 단위
- 프로세스 내에서 프로그램 명령을 실행하는 기본 단위
- 스레드ID, 프로그램 카운터, 레지스터 집합, 스택으로 구성
- 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, open files 등의 운영체제 자원 공유
* 단일 스레드(Single Thread)
- 장점: 자원을 공용화 하지 않으므로 공용 자원 접근 통제 불필요, Context Switch 작업 불필요
- 단점: 다수개의 CPU 활용이 불가
* 멀티 스레드(Multi Thread)
개념: 프로그램을 다수의 실행 단위로 나누어 실행, 각각의 스레드가 고유의 레지스터와 스택으로 표현
- 장점
- 대응적 측면: 일부가 차단되거나 장시간 작업 수행시에도 계속해서 실행 가능
- 자원 공유성: 프로세스의 자원과 상태를 공유, 효율적인 운영
- 경제성: 자신이 속한 프로세스의 자원을 공유, 스레드를 만들고 context switch를 진행하는 것이 더 경제적
- 확장성: 다수개의 코어에서 병렬로 프로세스 실행
* 유저 스레드
- 특징: 커널의 별도 지원 없이 커널 위에서 동작
- 장점: 스레드 스위칭에서 커널모드 권한이 필요하지 않음, 어느 운영체제에서나 사용 가능, 빠르게 생성 및 관리 기능
- 단점: 한 유저 스레드가 차단 수행 시 전체 프로세스가 차단 됨, 멀티프로세싱의 이점을 가질 수 없음
* 커널 스레드
- 특징: 운영체제로부터 직접 지원과 관리를 받음
- 장점: 동일한 프로세스의 여러 스레드를 서로 다른 프로세스에 예약가능, 프로세스의 한 스레드가 차단되면 커널은 다른 스레드를 예약
- 단점: 커널 모드로의 전환은 프로세스에서 한 스레드에서 다른 스레드로 제어 전환이 필요, 유저 스레드에 비해 수백배 느림
다수의 유저 스레드가 하나의 커널 스레드와 매핑
한 번에 하나의 스레드만 커널에 액세스 할 수 있으므로 멀티 스레드는 멀티코어시스템에서 병렬로 실행할 수 없음
많은 유저 레벨 스레드를 더 작거나 같은 수의 스레드로 다중화
커널 스레드 수는 응용 프로그램이나 특정 기계로부터 특정되어짐
개발자는 필요한만큼 많은 유저 스레드를 생성 가능
2. Thread Pool(스레드 풀)
정의: 지정된 개수의 스레드를 미리 생성해두고 필요 시 꺼내어 쓰는 방식, 요청이 폭증해도 성능을 유지, 대량 작업 처리에서 반드시 고려
장점: 급격한 성능저하 방지, 동시 사용자수 증가시에도 대응 가능, 이전 생성 스레드 재사용 가능(시스템 자원 측면 장점)
단점: 과다 생성 시 메모리 측면에서 낭비 발생 가능성
3. 멀티스레드 구현
4. 정리
1. CPU 스케줄링 개념
- maximize CPU utilization
- CPU: I/O Burst Cycle
=> 프로세스 실행은 CPU 실행 및 I/O 대기로 구성
- CPU Burst 분포
=> 많은 수의 짧은 CPU Burst와 적은 수의 긴 CPU Burst 본재
=> I/O-bound 프로그램: 많은 수의 짧은 CPU Burst
=> CPU-bound 프로그램: 적은 수의 긴 CPU Burst
2. 스케줄링 알고리즘
- CPU 스케줄러: 메모리에 있는 프로세스들 중 실행할 준비가 되어있는 ready 상태의 프로세스를 선택하고, 그 프로세스에 CPU를 할당
- CPU 스케줄링 결정은 다음 상황에서 발생
1) 한 프로세스가 실행에서 대기로 전환 될 때
2) 프로세스가 실행에서 준비완료로 전환 될 때
3) 프로세스가 대기에서 준비완료로 전환 될 때
4) 프로세스가 종료 될 때
디스패쳐 작업
- context switch
- 사용자 모드로 전환
- 프로그램을 다시 시작하기위해 사용자 프로그램의 적절한 위치로 이동
디스패치 지연
- 하나의 프로세스를 중지하고 다른 프로세스를 실행시킬 때 소요되는 시간
CPU 이용률(Utilization): CPU를 가능한 최대한 바쁘게 유지
처리량(Throughout): 단위 시간 당 완료된 프로세스의 개수
총 처리 시간(Turnaround time): 프로세스의 제출 시간과 완료 시간의 간격
대기 시간(Waiting time): 준비 완료 큐에서 대기하면서 보낸 시간의 합
응답 시간(Response time): 하나의 요구를 제출한 후 첫 번째 응답이 발생할 때까지의 시간
3. CPU 코어 컨트롤 하기
4. 정리
'운영체제' 카테고리의 다른 글
Ch03. 프로세스 관리 (0) | 2023.12.28 |
---|---|
Ch01. 운영체제 개요 / Ch02. 운영체제 서비스 (1) | 2023.12.28 |