WIL/스터디

Thread & Process

아크리미츠 2024. 8. 25. 18:44

Alarm Clock

최초에 Busy Waiting으로 구현. 이는 특정 조건이 충족될 때까지, 프로세스나 스레드는 루프를 돌며 해당 조건을 지속적으로 확인합니다. 이 과정에서 CPU는 계속해서 이 루프를 실행하게 되어, 해당 프로세스나 스레드가 CPU를 점유한 상태가 됩니다. 때문에 이러한 방식은 CPU 자원을 낭비하게 되고, 이를 Sleep Awake 방식으로 수정하게 됨.

Thread Scheduler

핀토스의 스케줄러는 Round Robin으로 구현되어 있습니다. 이는 중요도에 상관없이 모든 스레드를 번갈아가며 수행합니다. 이를 Priority Scheduler로 수정하고 Donation 기능을 넣는다던가 하는 방식으로 수정하게 됩니다. 저는 Extra 과제인 Multi Level Feedback Queue Scheduler로 수정했습니다. 이는 3가지 인자 중요도, CPU 점유시간, Niceness로 Priority를 Donate하는 기능도 추가했습니다.

 

+ Priority Scheduler에서 Donation을 하는 기준은 무엇인가?

특정 스레드가 락이나 세마포어와 같은 동기화 자원을 점유하고 있을 때 다른 높은 우선순위의 스레드가 그 자원을 필요로 하는 경우와 우선순위가 낮은 스레드가 자원을 점유한 상태에서 더 높은 우선순위의 스레드가 그 자원을 기다리면서 실행되지 못하는 상황에 해당 스레드에 Priority를 Donate하게 됩니다.

 

+ MLFQS의 장점은 무엇인가?

우선순위가 낮은 스레드가 너무 오랫동안 CPU를 점유하지 못해 발생하는 Starvation 현상을 억제할 수 있습니다.

 

Thread와 Process의 차이

 

  • 프로세스(Process): 프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영체제는 프로그램이 실행될 때 각각의 프로그램을 독립적인 프로세스로 관리합니다. 각 프로세스는 고유한 메모리 공간(주소 공간)을 가지고 있으며, 다른 프로세스와 메모리를 공유하지 않습니다.
  • 스레드(Thread): 스레드는 프로세스 내에서 실행되는 가장 작은 실행 단위입니다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 이 스레드들은 같은 메모리 공간을 공유하면서 동시에 실행될 수 있습니다.

+ 프로세스가 메모리를 공유할 수 있을까?

1. 공유 메모리(Shared Memory)

공유 메모리는 두 개 이상의 프로세스가 같은 물리적 메모리 영역을 공유하도록 하는 IPC 메커니즘입니다. 각 프로세스는 이 메모리 영역을 통해 데이터를 읽고 쓸 수 있습니다. 공유 메모리는 매우 빠른 통신 방법으로, 커널의 개입 없이 메모리 액세스가 가능하기 때문에 속도가 빠릅니다.

2. 메모리 매핑 파일(Memory-Mapped Files)

메모리 매핑 파일은 파일의 내용을 mmap을 통해 메모리에 매핑하여 프로세스들이 파일에 접근하듯이 메모리에 접근할 수 있도록 하는 방법입니다. 두 개 이상의 프로세스가 같은 파일을 메모리에 매핑하면, 이 파일을 통해 메모리를 공유하게 됩니다. 

 

+ 스레드가 공유하는 메모리는?

코드 세그먼트, 데이터 세그먼트, 힙 영역을 공유합니다. 이로 인해 Race Condition이 발생할 수 있습니다. 이를 방지하기 위해 Mutex, Semaphore, 조건 변수 등을 사용합니다.

 

+ Mutex와 Semaphore의 차이

 

  • 뮤텍스(Mutex): 임계 구역(critical section)에 접근할 수 있는 스레드를 하나로 제한하여, 동시 접근으로 인한 문제를 방지합니다. 뮤텍스를 설정한 스레드에서만 해제할 수 있습니다.
  • 세마포어(Semaphore): 일정 개수의 스레드만이 동시에 자원에 접근할 수 있도록 제한합니다. 잠금이 어떠한 스레드에 귀속되지 않습니다.

 

 

'WIL > 스터디' 카테고리의 다른 글

OS 지식  (0) 2024.08.27
인터넷 지식  (1) 2024.08.27
Malloc Lab  (0) 2024.08.25
Virtual Memory  (0) 2024.08.23
Pintos Extra Questions  (0) 2024.08.22