실질적으로 그렇지는 않더라도 오늘날 모든 UNIX 계열 운영 체제는 다중 사용자 모드와 단일 사용자 모드를 구별합니다. 단일 사용자 모드는 일반적으로 서비스 세트가 축소된 경우에도 시스템이 정상적으로 실행되는 동안 수행할 수 없는 낮은 수준의 시스템 유지 관리(일반적으로 오프라인 완료가 필요한 파일 시스템 유지 관리)에 사용됩니다.
그러나 단일 사용자 모드와 다중 사용자 모드를 실제로 구별하려면 누군가 첫 번째 코드를 작성해야 했습니다.
다중 사용자 모드가 단일 사용자 모드 이후에 나온 것으로 생각됩니다. 다중 사용자 모드가 더 많은 기능을 수행하고 초기에 단일 사용자 모드에서 시스템을 부팅한 다음 다중 사용자 모드로 전환하는 것이 합리적일 것이기 때문입니다(예: 적어도 Linux는 어떻게 작동합니까? 예를 들어 이를 전달하면 커널은 "단일 사용자" 모드에서 작동한 init=/bin/bash
다음 효과적으로 init
다중 사용자 모드로 전환됩니다. 그러나 내 질문은 다음과 같습니다.언제 그리고 어떤 변형/버전이 둘 사이에서 처음으로 구별되었습니까?
답변1
유닉스는 1971년 버전 1이 출시되면서 처음부터 이러한 구분을 두었습니다.
시스템이 다중 사용자 모드로 부팅 중입니다(즉, 사용자가 사용 가능한 직렬 인터페이스에 연결되어 있지만 tty0
tty tty5
를 4개 더 추가할 준비가 되어 있음).
유닉스 v1 매뉴얼섹션 4의 4페이지에 대한 참고 사항 tty
:
By appropriate console switch settings, it is possible to
cause UNIX to come up as a single—user system with I/O on
this device.
Unix의 첫 번째 버전에서는 각 직렬 라인에 대한 로그인 프로세스를 생성하는 것이 하드 코딩되었으며 init 프로세스 자체에 의해 수행되었습니다. 시작하기 전에 사용하려는 모드를 선택하고, 스위치 설정을 수정하고 단일 사용자 모드 셸을 종료하여 다중 사용자 모드로 전환하세요.
나중에 Unix 버전 7(1979)에서는 단일 사용자 셸이 종료될 때 다중 사용자 모드로 전환되는 하드웨어 스위치가 아닌 단일 사용자 모드에서 시스템이 처음 시작되었습니다.
나중에 System III(1981)에서 이를 도입했습니다 inittab
. 이를 통해 여러 런레벨을 더 잘 정의 및 구성하고 사용할 런레벨을 선택할 수 있습니다. 실행 수준 1은 단일 사용자이고 실행 수준 2는 다중 사용자입니다. inittab 파일이 없으면 시스템은 단일 사용자 모드로 시작됩니다.
답변2
처음에 init는 단일 사용자 모드로 콘솔에서 쉘을 시작합니다. 해당 쉘이 종료되면 나머지 파일 시스템을 마운트하고 실행 중인 모든 데몬 프로세스를 시작 및 구성하는 동안 직렬 포트에서 로그인(실제로는 getty) 프로그램을 시작합니다.
이것은 모두 /etc/inittab의 항목에 의해 제어됩니다.
이 모든 것은 1970년대 초 유닉스의 PDP-11 버전에서 일어났고, 나는 그 이전에도 그렇게 믿었습니다.
물론 세부사항은 끝이 없지만 그게 핵심입니다.
답변3
vs. 라는 용어를 사용하는 single user
가장 가능성 있는 이유 multi user
는 부팅 후 UNIX에 읽기 전용으로 마운트된 루트 파일 시스템만 있기 때문입니다.
다음으로 할 일은 루트 파일 시스템(약 1MB)을 확인하고 읽기/쓰기를 위해 다시 마운트하는 것입니다.
그런 다음 /usr
파일 시스템을 확인하고 마운트하십시오.
사용자는 /usr/
마운트 후에만 로그인할 수 있기 때문에 UNIX는 다중 사용자 환경을 지원할 수 있습니다.