2011-11-18 2 views

답변

2

실제로 무슨 일이 일어나고 있는지 알기 위해서는 컴퓨터 시스템 아키텍처를 이해해야하지만 기본적으로 컴퓨터는 2 단계, 하드웨어 1 개, 소프트웨어 2 개가 있습니다.

하드웨어는 많은 부분으로 나뉩니다. 그러나 가장 중요한 질문은 키보드와 화면입니다. 따라서 키보드로 타이핑 할 때 화면에 입력하는 내용을 표시하는 소프트웨어가 있어야합니다. 현대 시스템 (이 웹 페이지와 같은)에서는 (적어도) 2 계층의 소프트웨어로 처리됩니다.

운영 체제는 모든 서비스를 타이핑 서비스, 디스크 서비스, 네트워크 서비스, 디스플레이 서비스 및 기타 여러 가지 기술적 인 요소와 같이 (대략) 서비스로 연결하는 하위 시스템 집합입니다. 이런 일에 서로 이야기하는 것.

웹 페이지에 입력하는 내용을 표시하는 소프트웨어의 최종 레벨 (사용자를 향함)은 사용중인 브라우저 소프트웨어에서 제공합니다. OS는 키 누름 값, 마우스 클릭 등을 브라우저에 전달하고 브라우저는이를 처리하기로 결정합니다.

그래서 유닉스 커맨드 라인은 2 층이기도합니다. OS 레벨은 조정 서비스 (키보드와 스크린)입니다. 키 스트로크가 OS와 만나는 지점에 도달하려면 입력 및 출력을 수신하고 표시하도록 설계된 응용 프로그램을 실행해야합니다. 명령 행에서 타이핑 할 때, OS는 keypresses를 쉘 프로그램 인 bash, ksh, zsh 등으로 보내고 있습니다.

Enter 키를 누르기 전까지는 쉘에서 수행해야 할 작업이 있습니다. 기본적으로 Enter 키를 누를 때 수행 할 수있는 유일한 작업은 다시 스캔하여 입력 한 내용을 읽는 것입니다. 자신이하는 일을 알고 있고 입력 한 내용이 시스템에서 지원하는 유효한 명령이라고 가정합니다. 또한 환경 변수 ($ {MyName})와 같이 쉘의 기능으로 간주되는 텍스트를 만날 경우 수행 할 작업에 대한 많은 규칙이 있습니다. | 파이프는 두 프로그램을 연결하여 왼쪽 프로그램에서 오른쪽으로 데이터를 전송하는 데 도움이됩니다. 손 프로그램 및 기타 많은 기능을 제공합니다.

그래서 셸에서 어떤 일이 일어나고 있는지 구체적으로 알기를 원하지 않았기 때문에 OS가 키보드에서 활동을 얻고 있고 셸 (또는 다른 프로그램)을 실행해야하기 때문에 키보드에서 입력 할 때, OS는이 키 누름 값을 실행중인 프로그램에 전달합니다.

난이 도움이되기를 바랍니다 (... 이것은 너무 단순한 생각을 가진 ;-(경우 ​​다른 게시 질문, 내 사과의 본질을보고 있지만).

+0

사실, readline에 터미널을두고 non-canonical 모드에서 각 문자에 즉시 반응합니다. – ninjalj

+0

예, 맞습니다. 하위 시스템 중 하나로 분류 할 것입니다 (bash에서 시작 했습니까?). 공유 해 주셔서 감사합니다. – shellter

1

strace을 사용하면 Linux의 프로그램 (예 : /bin/bash 또는 다른 셸 또는 다른 프로그램)이 관련된 시스템 호출을 이해할 수 있습니다. 또한 무료 (예 : GPL 라이센스) 소프트웨어 셸을 사용하면 소스 코드 내부를 살펴볼 수 있습니다. 디버깅 정보로 컴파일하여 디버거를 사용하여 작동 여부를 검사 할 수도 있습니다.

관련 문제