SSU_OS_project2
- 새로운 시스템 호출 추가 및 간단한 응용 프로그램 구현 ü(1) hello() 시스템 호출 추가 및 이를 호출하는 주어진 간단한 응용 프로그램 실행 (테스트 1)
- helloxv6를 콘솔에 출력하는 hello() 시스템 호출 구현 - 커널 모드의 cprintf() 사용
(2) hello_name() 시스템 호출 추가 및 이를 호출하는 간단한 응용 프로그램 구현 (테스트 2)
- 문자열 이름을 콘솔에 출력하는 hello_name(name)시스템 호출 구현
- 커널 모드의 cprintf() 사용
(3) get_num_proc() 시스템 호출 추가 및 이를 호출하는 간단한 응용 프로그램 구현 (테스트 3)
- 시스템에서 활성화되어 있는 프로세스 수 리턴(embryo상태, running상태, runnable상태, sleeping 상태, zombie 상태 등 모든 상태의 프로세스 포함)하는 get_num_proc() 시스템 호출 구현
- 간단한 응용 프로그램(getnumproc_test.c)을 위 (1)의 주어진 응용 프로그램과 비슷한 응용 프로 그램 작성
(4) get_max_pid() 시스템 호출 추가 및 이를 호출하는 간단한 응용 프로그램 구현 (테스트 4)
- 시스템에서 활성화되어 있는 모든 프로세스의 PID 중 최대 PID (즉, 프로세스 테이블에서 슬롯을 차지함)를 리턴하는 get_max_pid() 시스템 호출 구현
- 간단한 응용 프로그램(getmaxpid_test.c)을 위 (1)의 주어진 응용 프로그램과 비슷한 응용 프로그 램 작성하고 이를 실행
(5) get_proc_info(pid, *processInfo) 시스템 호출 추가 및 간단한 응용 프로그램 구현 (테스트 5)
-
정수 PID와 processInfo 구조체에 대한 포인터를 인자로 받아 사용자 모드와 커널 모드 간 정보 를 전달하는 데 사용하는 get_proc_info(pid, & processInfo) 시스템 호출 추가 및 이를 호출하는 간단한 응용 프로그램 구현
-
processInfo.h 참고, user.h와 proc.c에 processInfo.h 포함 등 수정
-
processInfo 구조체의 맴버 변수 추가 및 출력 프로그램 작성
-
리턴되어야하는 프로세스에 대한 정보는 부모 PID 및 스케쥴러에 의해 문맥교환(context switch) 횟수와 프로세스 크기(byte 단위로)가 포함되어야 함
-
- 새로운 스케쥴러를 위한 2개의 시스템 호출 추가 ü 프로세스의 우선순위를 고려한 스케쥴러 설계 및 기존 xv6 스케줄러를 수정 ü 새로운 시스템 호출(아래 (1), (2))을 추가하여 프로세스 우선순위 설정(set) 및 가져오기(get) ü (1) set_prio() 및 (2) get_prio() 시스템 호출 추가 및 이를 호출하는 간단한 응용 프로그램 구현
-
- 우선순위 기반 RR 스케쥴러 구현 ü xv6의 현재 스케줄러는 기본 라운드-로빈(RR)스케줄러임 ü 사용자가 정의한 프로세스 우선순위가 적용된 스케줄러를 구현하기 위해 기존 RR 스케쥴러 수 정
-
우선순위 기반 RR 스케쥴러 구현하기 위해 우선순위를 사용하여 다음 번에 수행할 프로세스 선택