운영체제 - Process 2

송은석·2022년 9월 15일
0

KOCW 사이트를 이용하여 듣게 된 반효경 교수님의 운영체제 강의 내용을 간단히 정리하여 포스팅합니다.


"A thread(or lightweight process) is a basic unit of CPU utilization."

(스레드란, cpu 수행의 기본 단위이다.)


전 시간에 프로세스가 메모리에 올라가면 각자 고유한 주소 공간을 가지게 된다는 것을 배웠다. 메모리에 올라간 프로세스가 많을수록 많은 공간을 차지하게 된다는 것이다.

그러므로 같은 프로그램을 여러 개 띄워 각자 작업을 수행하게 한다면, 각자의 독자적인 메모리 주소 공간을 가지므로 해당 프로그램 n개 만큼의 공간(주소 공간 + PCB 영역)이 사용될 것이다.

이 때, 스레드를 사용하여 메모리의 낭비를 줄일 수 있다.

Thread

스레드는 프로세스의 cpu 수행 단위로, 한 프로세스의 data section과 code section, os resource를 공유하며(이를 task 라고 한다.) 각자의 cpu 작업을 수행한다.

스레드가 독립적으로 가지는 공간은 크게 2가지로, cpu 수행과 관련된 부분이다.

1. pcb의 스레드 간 program counter 값, 레지스터들 값
2. 주소 공간의 스택 영역



스레드를 사용했을 때의 장점

크게 4가지가 있다.

  1. Responsiveness, 빠른 응답성
    예를 들어 하나의 스레드가 io작업으로 인해 blocked 상태 일때, 다른 스레드를 사용하여 다른 작업을 지속할 수 있다. 이는 사용자 경험을 향상 시켜줄 수 있다.

  2. Resource Sharing, 자원 공유
    cpu 수행 관련 외의 task를 공유하므로 자원의 절약이 가능하다.

  3. Economy, 경제성
    여러 스레드들이 협력하여 높은 처리율(throughput)과 성능향상이 가능하다.

  4. utilization of multiprocessor architectures, 여러 CPU를 통해 작업 수행 가능
    여러 cpu가 있을 때, 여러 스레드를 통해 병렬적(parallel)인 작업이 가능하다고 한다.

    *개인적으로 궁금한 것은, 스레드가 여러 개이더라도 프로세스는 하나일텐데, 어떻게 여러 cpu를 사용할 수 있을까 하는 것이다.



스레드의 구현

크게 Kernel Threads, User Threads의 방법이 있는데, Kernel Threads 방식은 커널이 스레드의 존재를 알고 이를 직접 관리하는 것이며, User Threads는 커널이 스레드의 존재를 모르고 사용자 프로그램 자체에서 스레드들을 라이브러리를 통해 관리하는 것이다. 그외 real time thread 방식 등이 있다.


참고

강의 | 운영체제(2014, 이화여대), 반효경
profile
Done is better than perfect🔥

0개의 댓글