Linux에서 먼저 실행되거나 생성되는 프로세스와 스레드를 모두 사용하는 명령을 실행해야 하는지 알고 싶습니다. 나는 그들이 모두 clone()을 사용하여 실행한다는 것을 알고 있으며 스레드는 기본적으로 정의상 가벼운 프로세스입니다.
답변1
스레드는 프로세스의 일부이므로 운영 체제는 스레드를 생성하기 전에 프로세스를 시작합니다.
프로그램을 호출하면 운영 체제는 다음을 수행합니다.
- 코드와 데이터를 메모리에 로드
- 프로세스 제어 블록(PCB) 생성 및 초기화
- 첫 번째 스레드와 해당 호출 스택 만들기
- 스레드의 "저장된 상태"에 초기 값을 할당합니다.
- 스케줄러에게 스레드 알리기
스케줄러는 각 코어에서 실행되고 스케줄링 기준에 따라 프로세스와 스레드의 실행을 제어하는 운영 체제의 가장 안쪽 부분입니다.
지금 디스패처 -
- 스레드를 잠시 동안 실행하십시오.
- 상태를 저장하다
- 다른 스레드의 상태 로드
- 잠시 실행..
운영 체제는 인터럽트/트랩을 사용하여 스케줄러로부터 제어권을 얻습니다. 이해를 돕기 위해 단계를 단순화했습니다.