티스토리 뷰

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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 29 30
글 보관함