다음 이전 차례

18. 스크롤

화면을 스크롤하는 방법은 두가지다. 첫째, `하드 스크롤'이라고 하는 것인데, 비디오 메모리에 텍스트를 남겨두고, 보는 기준점을 바꾸는 방법이다. 이 방식은 아주 빠르다. 둘째, `소프트 스크롤'이라고 하는 것인데, 화면에 표시된 텍스트를 전부 위 또는 아래로 이동시키는 방법이다. 이것은 물론 느리다. 커널 콘솔 드라이버는 비디오 메모리의 꼭대기에서 텍스트를 쓰기 시작하여 바닥에 도달할 때까지 계속한다. 바닥에 도달하면 이 내용을 위에 복사한 후에 같은 일을 계속한다. 항상 하드 스크롤을 사용하여 화면에 보여준다. 디폴트 keymap을 사용하는 경우, Shift-PageUp (회색 PageUp)을 사용하면 비디오 메모리의 꼭대기로 스크롤할 수 있고, Shift-PageDown (회색 PageDown)을 사용하면 아래쪽으로 스크롤할 수 있다. 따라서, 스크롤할 수 있는 양은 사용자가 할당받게 되는 비디오 메모리의 양으로 제한된다. 더 많은 양을 스크롤하려면 텍스트 버퍼를 사용하는 프로그램을 사용해야 한다. lessscreen 등이 이런 프로그램인데 디스크상에 버퍼를 만들어 두어 이것을 이용하여 이전에 했던 것을 다시 볼 수 있다. (xterm에서 가능한 스크롤 양을 설정하려면 .Xresources 안에 XTerm*saveLines: 2500과 같은 형식으로 추가하면 된다.)

가상 콘솔을 바꾸면, 이전 VT의 화면 내용은 커널 메모리로 복사되고 새로운 VT의 화면 내용이 커널 메모리에서 비디오 메모리로 복사된다. 비디오 메모리의 모든 정보를 복사하는 것이 아니라 단지 보이는 스크린만을 복사하기 때문에 콘솔을 전환하면 스크롤 정보를 잃게 된다.

때때로, 하드 스크롤이 부적당한 경우가 있다. 예를 들어 하드웨어가 화면 표시 기준점을 바꾸지 못하는 경우에 그렇다. 대표적인 예가 Braille 머신인데, 이 머신은 항상 Braille의 비디오 메모리의 꼭대기만 사용한다. 커널 부트타임 옵션으로 no-scroll이 있는데 여기서 콘솔 드라이버가 하드 스크롤을 사용하지 않도록 할 수 있다. bootparam(7)을 참고하면 도움이 될 것이다.


다음 이전 차례