[운영체제] Linux System Call 추가
- 최초 등록일
- 2004.05.14
- 최종 저작일
- 2004.05
- 20페이지/
한컴오피스
- 가격 1,000원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
목차
<문제의 이해>
1.문제
2.주요 개념 이해
1) Linux 커널 구조
2) 시스템 호출
3) 시스템 초기화 과정
<문제 해결 방법>
1. Linux 설치
1) VMware Workstation 설치
2) 와우 Linux 7.3 설치
2. 시스템 호출의 구현
1) 커널 수정 방법
2) 사용자 수준 응용 작성 방법
<문제 해결>
1. 커널 수정
1) 시스템 호출 번호 할당
2) 시스템 호출 테이블 등록
3) 시스템 호출 처리 함수 구현
2. 커널 컴파일 및 리부팅
1) 커널 구성
2) 커널 컴파일
3) 커널 인스톨
3. 시스템 호출을 사용하는 프로그램 작성
4. 사용자 수준 프로그램 실행
5. 참고 및 인용된 서적
본문내용
시스템 호출 처리 함수 구현
usr/src/linux-2.4.18-4/kernel/test_syscall.c 라는 이름의 파일로 구현한다.
sys_teatsyscall() 시스템 호출은 2개의 입력 인자를 곱하고 그 결과를 세 번째 인자로 돌려준다.
곱셈한 결과를 사용자 수준 공간에 전달하기 위해 Linux가 제공하는 put_user()라는 매크로를 사용하였 다. 이 매크로는 usr/src/linux-2.4.18-4/include/asm-i386/uaccess.h에 정의되어 있다.
put_user()를 사용하기 전에 res라는 사용자 공간에 쓰기가 가능한지 확인하기 위해 verify_area()라는 커널 내부 함수를 사용하였다.
"asmlinkage" 라는 키워드는 C로 구현된 함수가 어셈블리 언어로 구현된 함수에서 호출될 때 사용하는 키워드이다. 커널 수준에서는 사용자 수준에서 수행되는 표준 라이브러리를 사용할 수 없으므로, 따라 서, printf()와 비슷한 일을 수행하는 printk()라는 커널 라이브러리를 사용하였다.
참고 자료
1) 리눅스 매니아를 위한 커널 프로그래밍 ........... 조유근, 최종무, 홍지만
2) 레드햇 리눅스 9 고수 따라하기 ...................... 채현석
3) 리눅스 커널의 이해 ....................................... 다니엘 보베이, 마르코 체사티