/OS_3

Primary LanguageC

OS_3

과제개요

설계과제 3은 xv6 커널에서 시스템 호출을 추가하고 스케쥴러를 수정하는 것으로, xv6에서 새 시스템을 호출을 추가하기 위해서는 다음의 파일들을 수정하여야 한다. syscall.h에서 시스템 호출 번호를 매핑하여 시스템 호출을 위한 새로운 매핑을 추가하고 syscall.c에서 시스템 호출 인수를 구문 분석하는 함수 및 실제 시스템 호출 구현에 대한 포인터를 명시한다. sysproc.c에서 프로세스 관련 시스템 호출을 구현하고 필요에 따라 proc.c에서 시스템 호출 실행 코드를 작성하기도 한다. user.h에서 xv6의 시스템 호출 정의를 하고 usys.S에서 시스템 호출 리스트에 추가하고 syscall.h에서 시스템 호출 번호를 매핑하여 시스템 호출을 위한 새로운 매핑을 추가한다.

다음의 과정을 통해 커널모드에서 cprintf를 사용하여 출력하는 시스템 콜, 인자를 입력받아 출력하는 시스템 콜, 시스템에서 활성화되어 있는 프로세스 수를 리턴 하는 시스템 콜, 시스템에서 활성화되어있는 프로세스의 pid를 구하는 시스템 콜, 사용자 모드와 커널 모드 간 정보를 전달하는 시스템 콜 프로세서의 우선순위 설정 및 가져오는 시스템 콜 등 새로운 시스템 호출을 추가하고 간단한 응용 프로그램을 구현하여 xv6의 시스템 호출 추가 방법에 대해 이해한다. 또한 xv6의 프로세스 관리와 RR 스케쥴링 기법과 우선순위 스케쥴링 기법을 이해하고 xv6의 기존의 RR 스케쥴러를 수정하여 각각의 프로세스의 우선순위로 다음번에 수행할 프로세스를 선택하는 우선순위 기반 RR 스케쥴러를 구현하도록 한다.