본문 바로가기

컴퓨터 전공 공부/운영체제

pthread 라이브러리 학습을 위한 간단한 예제는?

반응형

pthread 라이브러리를 학습하기 

 

https://www.youtube.com/watch?v=AXT8qph-bSs

 

이 강의는 pthread 라이브러리를 학습하기 위한 간단한 예제를 다룹니다.
pthread 라이브러리에 대한 기본적인 기본 개념을 이해하기 위해 pthread_create 함수를 사용하여 쓰레드를 생성하는 방법과 pthread_join 함수를 사용하여 생성한 쓰레드의 종료를 기다리는 방법을 설명합니다.
코드 예제를 통해 실제로 쓰레드가 동시에 실행되는 모습을 확인할 수 있습니다.
마지막으로 schedule yield 함수를 사용하여 쓰레드 간 제어권을 넘겨주는 방법에 대해서도 다룹니다.

pthread 라이브러리 학습을 위한 간단한 예제는?


pthread 라이브러리를 배우기 시작하는 간단한 예제를 살펴보기로 하며, sysproc 브랜치에서 예제를 찾을 수 있어요.
pthread 디렉토리 아래에 있는 네 코드(pthread one부터 pthread four)를 하나씩 살펴보며, POSIX 쓰레드 라이브러리의 기본적인 프리미티브를 이해할 거에요.
첫 번째 예시인 pthread one.c를 살펴보고 main 함수를 확인하며, pthread_create를 통해 스레드를 생성하고 실행되는 함수와 메시지를 넘기는 방법에 대해 설명하고 있어요.

pthread_create와 pthread_join의 기능은?


pthread_create를 사용하여 메인 스레드 외에 두 개의 스레드를 생성하는 방법을 소개해.
pthread_create 함수 호출 시, 새 스레드는 현재 스레드와 동시에 실행되는 새로운 제어 흐름을 생성하죠.
fork와는 다르게 새로운 프로세스나 복제를 만들지 않아요.
pthread 변수 유타입인 pthread_t의 포인터를 전달하고, 이를 통해 새로운 스레드의 속성을 포함하는 변수를 생성할 수 있어요.
두 스레드가 동시에 실행되고, pthread_join을 호출하여 프로세스 제어 작업에 해당하는 스레드가 종료되길 기다립니다.
스레드 간에 부모-자식 관계는 없으며, 모든 스레드는 동일한 프로세스에서 실행됩니다.

스레드 종료 시 제어 권한 이동 방법은?


특정 스레드 종료를 기다리며 제어 권한을 다음 명령으로 이동하고, 스레드 1이 종료될 때까지 차단되어요.
종료된 스레드에서 정보를 받고 싶다면 threading 함수의 반환값을 검색할 수 있는 포인터를 넣어야 해요.
또한, 스레드 2를 기다리면서, 1과 3이 종료되면 전체 프로그램을 종료하고 메인 스레드를 종료시켜요.
출력 메시지 함수는 알 수 있는 포인터를 받기위해 void로 설정되어 있어요.

GCC pthread 실행 방법은?


GCC pthread 번호 1을 실행하려면 pthread 라이브러리를 링크해야 해요.
스레드 1이 10번 실행되고, 스레드 큐도 10번 실행되어 프로그램이 종료돼요.
스레드 생성은 시간이 소요되어 스레드 1이 먼저 생성되고 실행돼요.
스레드 2는 생성되지만 실행되기까지 시간이 더 걸려요.
스핀을 사용하여 스레드 간 번갈아가며 실행되는 것을 확인해요.

GCC를 사용하여 프로그램 실행 방법과 최적화 이해?


GCC를 이용해 pthread 옵션을 사용하는 프로그램을 실행하는 방법을 상세히 설명했어요.
또한, 의미없는 루프가 있는 경우 컴파일러가 적용되는 최적화로 인해 해당 루프가 제거될 수 있으므로 '-O' 옵션을 사용하여 최적화를 하지 않는다고 설명했어요.
CPU가 일정 시간을 할애하여 실행되도록 하기 위해 '-O' 옵션을 사용하며, 스레드 간 실행 순서와 시간에 대한 설명도 포함되어 있었어요.
또한, 프로그램 실행 시 스레드 간 실행 순서와 시간에 관한 설명과, 스레드들이 CPU를 가져가는 과정에 대해 언급하며 이를 통해 프로그램이 어떻게 실행되는지 시연했어요.

스레드 간 상호작용의 영향은?


스레드 간 상호작용을 보여주며 스케줄링이 어떻게 변화하는지 설명해요.
스케줄링은 실행 상황에 따라 일시적으로 변하며, 스레드 간 교대가 발생하죠.
특정 명령어로 인해 스레드 간 제어를 전환할 수 있는데, 이렇게 되면 스레드 간 교대 실행이 나타나게 돼요.
일반적으로 컨텍스트 스위칭은 선점적으로 일어나며, CPU 제어를 강제로 다른 스레드로 넘기는 방식으로 진행돼.

스레딩 예제와 스케줄링 연산은?


하나의 스레드가 다른 스레드에게 CPU를 양보하여 실행 컨트롤을 넘기는 연산이 있어요.
스레드 1이 메시지 출력을 한 후 다른 스레드로 컨트롤을 넘기며, 메시지가 스레드 2로 바뀌어 실행되요.
스케줄 yield로 컨트롤을 다시 스레드 1로 가져갔다가 순서대로 스레드 1과 2를 실행하며, 메시지는 스케줄링을 통해 번갈아 출력돼요.
이 예제는 가장 간단한 스레드 생성을 보여주며, 메인 스레드는 스레드 종료를 기다리는 것을 보여줘요.



반응형