나는 1970년대에 Unix에 대한 간략한 소개를 보았습니다(https://www.youtube.com/watch?v=7FjX7r5icV8 3D 애니메이션은 1:56에서 시작하고 Unix의 일반적인 3자 아키텍처를 보여주는 3D 애니메이션으로 끝납니다. ovaall Linux 아키텍처의 다이어그램을 보았기 때문에 혼란스럽습니다.
유닉스와 리눅스 두 인물은 커널을 공유하지만 유닉스는 쉘로, 쉘은 유틸리티로 감싸고 있다. 대조적으로, Linux는 사용자 공간으로만 래핑되며 셸은 아무것도 래핑하지 않고 사용자 공간에 있는 많은 프로세스 중 하나일 뿐입니다.
Unix와 Linux는 가장 기본적인 수준에서 어떻게 다르며 공통점은 무엇입니까? Unix는 3계층이고 Linux는 2계층인 이유는 무엇입니까? Unix의 Shell과 Linux의 Shell은 완전히 다른 개념인가요?
답변1
나에게는 그 구별이 아직 다소 모호하기 때문에 이것은 매우 명확한 대답이 아닐 수도 있습니다. 나는 실제 기술적인 사실이 아니라 내 주장을 전달하려고 노력하고 있습니다.
첫째, Linux는 UNIX와 유사한 시스템이라는 점을 기억하는 것이 중요합니다. 이는 대부분의 개념과 구현이 UNIX에서 영감을 얻었고 때로는 UNIX에서 가져왔음에도 불구하고 처음에는 두 시스템 간에 공통 코드 기반이 없었다는 것을 의미합니다. 실제로 Linux는 Linus Torvalds가 라이선싱에 있어 너무 제한적이라고 판단한 또 다른 UNIX 유사 시스템인 MINIX에서 크게 영감을 받았습니다.
Unix는 3계층이고 Linux는 2계층인 이유는 무엇입니까? Unix의 Shell과 Linux의 Shell은 완전히 다른 개념인가요?
나에게는 둘 다 두 개의 레이어입니다. 쉘은 커널과 특권적인 관계를 갖고 있지 않으며, 그래서도 안됩니다. 첫 번째 계층은 모든 것이 가능한 핵심 계층인 특권 계층입니다. 두 번째 계층은 권한이 없는 계층으로, 쉘 및 표준 유틸리티를 포함한 다양한 프로그램이 실행되는 사용자 계층입니다. 예를 들어 ls
이러한 모든 프로그램은 다음을 통해 액세스할 수 있습니다.유닉스 시스템또는리눅스시스템 호출 세트(이 목록은 완전하지 않을 수 있음)
제 생각에는 이것이 UNIX나 Linux에 관해 실제로 언급해야 할 유일한 계층 차이점입니다. 이제 커널은 쉘과 다른 프로그램 사이에 차이가 없다고 생각하지만,물론 사용자는 이렇게 합니다.그가 모든 사람과 상호 작용하는 방식. 쉘과 다른 프로그램을 구별해야 한다면 그 구별은 사용자가 해야 하지만 시스템은 여전히 이를 인식하지 못합니다.
이는 오늘날의 시스템 사용자보다 귀하의 비디오에서 더 눈에 띕니다. 터미널을 살펴보십시오. 놀라울 정도로 작으며 지금은 이와 같은 것을 사용할 생각이 전혀 없을 것입니다(물론 나도 그러고 싶지만 인정합니다). 문제는 다음과 같습니다. 당시 시스템을 부팅하고 로그인할 때 쉘은 처음이자 유일한 것이었습니다.이것다른 프로그램을 실행하려면 거쳐야 할 작업이 있습니다. 아마도 차이점은 다음과 같습니다.커널의 관점에서 쉘은 다른 프로그램과 다르지 않지만 다른 프로그램에 대한 사용자의 관문입니다., 그리고 이 게이트웨이는 1970년대 "핵심 UNIX의 전성기"에 더욱 분명해졌습니다.
물론 이러한 구별은 이제 더 이상 중요하지 않습니다. 아마도 다음 두 가지 사항 때문일 것입니다.
- 터미널 에뮬레이션. 실제로 여러 개의 쉘을 동시에 가져와서 전환할 수 있습니다. 이것은 당신에게 뭔가가 있다는 것을 의미합니다앞으로이를 제어할 수 있는 쉘입니다.
- 그래픽 인터페이스. 이제 터미널을 보지 않고도 GUI, 창 관리자, 데스크탑 환경 등에서 프로세스를 시작할 수 있습니다. 우리는 그래픽 프로그램도 디자인했습니다.포장하다쉘 인스턴스를 둘러싸고 사용하기 더 즐겁게 만듭니다.
저는 차트를 잘 다루지는 못하지만 이렇게 말하고 싶습니다.
내가 말하고 싶은 것은:
- 점선은 다음을 나타냅니다.사용자 상호작용.
- 점선은 다음을 나타냅니다.상호작용을 처리하는 쉘(프로세스 생성, 프로세스 간의 I/O 흐름 조작,...)
- 일반선은 다음을 나타냅니다.시스템 상호작용.
해당 요소를 제외하고 모두 삭제하는 경우체계대화형에서는 다음 두 가지로 끝납니다.핵심, 그리고사용자 프로그램. 시스템 호출을 통해 연결된 두 개의 레이어가 있습니다.
이제 사용자로서 셸을 다른 프로그램이 아니라 다른 프로그램에 대한 게이트웨이로 본다면 다음을 추가할 수 있습니다.사용자 상호작용그리고처리할 쉘상호 작용. 이제 우리는 세 번째 레이어에 있지만 커널에는 아무것도 변경되지 않았습니다.
답변2
나는 당신의 출처가 가짜라고 말하고 싶습니다.
"UNIX"라고 불리는 다양한 운영 체제가 있지만 그 중 어느 것도 다른 사용자 공간 유틸리티의 기본 계층을 형성하는 "권한 있는" 프로세스를 갖고 있지 않습니다.
쉘은 또 다른 사용자 공간 프로세스일 뿐입니다.