Linux에서 "프로세스", "스레드" 및 "task_struct"라는 용어의 의미

Linux에서 "프로세스", "스레드" 및 "task_struct"라는 용어의 의미

내가 아는 한, 스레드는 프로세스의 실행 흐름이며 프로세스의 모든 스레드는 몇 가지 공통 구조를 공유합니다. 게다가 최신 PC에서 CPU는 프로세스가 아닌 스레드만 실행합니다.

나는 이 말의 의미를 이해하지 못한다.프로세스그리고철사리눅스에서. Linux는 실제로 프로세스와 스레드를 구별합니까? 그 기능은작업 구조구조?

Linux에서 task_struct 실행을 예약한다는 내용을 읽었으므로 task_struct가 프로세스가 아닌 스레드를 나타내는 줄 알았는데 내부를 살펴보니작업 구조의 정의task_struct의 하위 항목에 대한 참조가 있는 것을 확인했습니다. 스레드가 실제로 자식을 가질 수 있나요?

답변1

사용자 수준에서 a는 process운영 체제에 속합니다. process에는 운영 체제에서 상속된 환경 및 표준 파일 설명자(stdin, stdout, stderr)의 복사본이 있습니다 . Threads프로세스에 속하고 동일한 프로세스에 속하는 여러 스레드는 해당 프로세스의 환경과 파일 설명자를 공유합니다.

예, 프로세스와 스레드 모두 하위 프로세스를 가질 수 있습니다. 여기서 단어는 child단순히 기존 프로세스/스레드의 요청에 따라 운영 체제에서 생성된 새로운 프로세스/스레드를 나타냅니다.

task_struct프로세스와 스레드를 가능하게 만드는 것입니다. 이것이 내부에서 만들어지는 방법입니다. 그러나 사용자 수준에서는 task_struct에 액세스할 수 없습니다. 자신만의 커널을 작성한다면 반드시 스케줄러와 함께 사용해야 합니다.

processthread따라서 커널 및/또는 CPU가 작동하는 방식에 대해 깊이 이해하고 있다면 그렇습니다 . 동일한 실제 생활에서 수행되므로 와 사이에는 실질적인 차이가 없습니다.프로세스. 차이점은 사용자 수준과 실제 애플리케이션이 작동하는 방식에만 있습니다.

Andrew Tanenbaum의 "최신 운영 체제"를 한 권 구해 읽어 보시기 바랍니다.https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X/ 이 주제에 관한 최고의 교과서입니다.

관련 정보