10개의 터미널 창을 열려고 하는 경우 운영 체제는 이를 어떻게 처리합니까? 멀티스레딩을 사용합니까, 아니면 멀티프로세싱을 사용합니까? 아니면 제가 아직 모르는 다른 개념이 있는 걸까요? 10개 모두에서 Python 스크립트를 실행한다면 GIL을 사용하여 어떻게 실행됩니까? CPU의 모든 코어(내 경우에는 8개)가 Python을 실행할 때까지 다중 처리 모드에서 실행된 다음 동시 다중 스레딩으로 전환됩니까? 또한 이에 대한 자세한 내용은 어디에서 확인할 수 있나요?
답변1
이는 터미널 응용 프로그램에 따라 달라질 수 있습니다. 여러 xterm
터미널을 시작한 다음 터미널당 하나의 프로세스를 가질 수 있습니다. 여러 탭을 지원하는 터미널의 경우 시스템 호출을 사용하는 다중 스레딩 또는 단일 스레딩을 사용하여 이를 수행할 수 있습니다 select
. 이 시스템 호출에는 파일 설명자 세트가 제공되며 콘텐츠를 읽거나 쓸 수 있는 설명자 목록을 반환합니다.
터미널이 어떻게 구현되든 열려 있는 터미널 수만큼의 쉘(또는 다른 프로그램) 프로세스가 있게 됩니다. 10개의 Python 스크립트를 시작하면 10개의 독립적인 프로세스가 있게 됩니다. 각 잠금마다 전역 해석기 잠금이 있을 수 있지만 이는 프로세스별 잠금입니다. (한 프로세스에서 잠금을 획득해도 다른 프로세스가 해당 GIL을 획득하는 것을 막지는 못합니다.)