본문 바로가기
728x90

Research/Linux101

왜 커널을 컴파일 할때 -msoft-float 옵션을 사용합니까? 프로세스가 시스템 콜을 호출 했을때 다시 그 프로세스로 돌아올 수 있도록 커널은 프로세서의 상태를 저장할 필요가 있습니다. 부동 소수점 레지스터는 크기가 커지기 쉽습니다. 그래서 이것들을 저장하거나 불러오는 작업은 비싼 작업입니다. 만약 FPU가 아직 연산을 실행 중이라면 CPU는 그 연산이 완료될때까지 기다리지 않으면 레지스터를 복사할 수 없습니다. 커널 내에서 부동 소수점 레지스터의 사용을 피하는 것이 시스템 콜 실행의 효율을 높일 수 있습니다. sparc등 몇몇 프로세서들은 부동 소수점 문맥 교환을 비활성화 하여 프로세스 교환때 부동 소수점 레지스터의 저장, 불러오기 처리를 생략할 수도 있습니다. 몇몇 아키텍쳐에서는 컴파일러에서 주요한 동작(블록 메모리 복사 등)동작의 속도 향상을 위해 부동 소수점.. 2005. 10. 7.
terminfo terminfo 이 라이브러리는 curses 와는 달리 하드웨어와 밀접한 연관성을 가진 루틴을 제공한다. terminfo 역시 SVID 의 Issue 2 에 정의되어 있다. curses 와 terminfo 둘다, 현재의 버전은 terminfo 라는 각각의 단말기의 특성을 기록해 두는 데이타베이스(database)를 사용한다. /usr/lib/terminfo// 은 실제 단말기의 이름이고 는 의 첫글자이다. /usr/lib/terminfo/v/vt100 은 단말기 vt100 의 특성들을 기록해두는 화일이다. curses 와 terminfo 의 루틴들은 먼저 환경 변수(environment variable) TERM 을 보고 단말기의 이름을 알아낸 다음, terminfo 데이타베이스에서 그 단말기에 대응하는.. 2005. 9. 23.
Re: 리눅스 커널의 메모리에서 이해가 안가는 부분입니다. http://linuxkernel.net/linux/bbs_lkqna.php?db=lkqna&mode=read&num=1676&page=1&ftype=6&fval=%c7%c1%b7%b9%c0%d3&backdepth=1홍현배 wrote: >1. 리눅스가 세그멘테이션을 쓰지 않는다고 하는데, 그럼 어떻게 프로세스가 제공하는 보호모드의 이점을 취할 수 있다는 말인가. segmentation은 옛날 x86 구조에서 나온 쓸데없는 것입니다. 모든 architecture에서 virtual memory는 paging을 이용합니다. >2. 프로세스는 cpu가 지원하는 보호모드를 통해서 4GB의 가상 어드레스 공간을 사용할 수 있는데 모든 프로세스에게 4GB의 공간이 할당이 되는 것인지, 4GB의 어드레스 공간을 서로 .. 2005. 8. 31.
Q: get_user() 함수와 put_user() 함수는 어떻게 사용합니까? http://linuxkernel.net/faq/index.php?cmd=read§ion=kernelprog-advanced2&num=2Q: get_user() 함수와 put_user() 함수는 어떻게 사용합니까? A: 사용자 영역과 커널 영역 사이에서 데이터를 교환해야 하는 경우가 있습니다. 대표적인 예로 system call에서 인자를 넘길 때로 커널 영역에서는 사용자 메모리를 바로 접근할 수 없으므로 사용자 영역의 데이터는 커널 영역으로 복사를 해야 합니다. 이러한 작업을 할 때 사용하는 함수로는 get_user(), put_user(), copy_from_user(), copy_to_user()가 있습니다. get_user(), copy_from_user()는 사용자 영역에서 커널 영역으로 복사를.. 2005. 8. 26.
728x90