Pintos lab1 threads 키워드 간단 정리

조성현·2021년 2월 3일
0

OS

목록 보기
2/9

📕 Project 1: Threads

👉 Time-sharing system

시분할 시스템: 프로세서가 각 작업에 일정량의 시간을 배정하여 CPU의 시간 자원을 나누어 쓰는 것, 이를 통해 마치 여러 개의 작업들이 동시에 처리되는 것처럼 보이게 된다.

👉 Context Switching

프로세서에서 다른 프로세서로의 전환. 이를 위해 cpu의 레지스터값을 커널 스택에 저장해놓고 다른 레지스터로의 교체가 일어난다.

👉 Scheduler

멀티 프로세서 시스템에서 프로세스의 실행 순서를 관리하는 것

  • Round Robin (RR)
    일정한 sampling time마다 프로세스 공평하게 프로세스 변경이 일어남
  • Priority
    프로세스마다 우선 순위를 부여해 우선적으로 실행될 수 있도록 한다.
    - Priority donation
    synchronize를 위한 lock, semaphore에 의해 더 높은 우선 순위를 가진 프로세스가 실행되지 않는 priority inversion을 방지하기 위해, 낮은 우선 순위의 프로세스에게 우선 순위를 빌려주는 것
  • Multi-Level Feedback Queue Scheduler (MLFQS)
    낮은 프로세스가 실행되지 못하는 starvation을 해결하기 위해, 여러 큐와 일정 sampling time마다 priority를 계산하는 스케쥴러. 이때 해당 쓰레드의 특성(자주 다른 작업에 양보를 한다, 긴 시간 점유) 등을 파악해 피드백한다. 만약 가장 높은 큐가 여러개의 thread를 담고 있다면 RR방식으로 진행한다.
    MLFQ 관련 정리
    - 4BSD
    스케쥴링 방식 중 하나로, 대기 thread의 갯수, 실행 시간 등으로 overhead는 있지만 복잡한 스케쥴링을 효과적으로 처리한다.
    BSD 관련 정리
    - nice
    스케쥴링에 들어가는 parameter. nice가 높을 수록 점유시간이 지나면 priority가 낮아져서 다른 thread에 양보한다.

👉 Thread

프로그램이 각각의 사용과 관련하여 가지고 있는 정보(레지스터 등).

  • Thread control block (TCB)
    스레드 제어 블록: OS 커널이 쓰레들 관리하기 위해 필요한 정보를 담는 구조체

👉 Timer Interrupt

시스템 내부에서 특정한 시간마다(sampling time) 발생하는 interrupt

👉 Timer sleep

일정한 타이머 시간동안 thread가 실행되지 않도록 정지

👉 Synchronization

특정 작업이 혹은 critical area가 interrupt에 방해받지 않도록 consistency를 보장한다. 이를 동기화라고 하고 다양한 기법들이 있다.
OS 동기화

  • Semaphore
    양수의 정수를 사용해서 관리 (다수의 프로세스 접근)
  • lock
    boolean을 사용해서 관리 (한 개의 프로세스 접근)
  • condvar
    condition 변수를 추가하여 동시 접근과 동기화 문제를 해결 (한 개의 프로세스 접근)
profile
Jazzing👨‍💻

0개의 댓글