숭실대학교 운영체제 2023 수업 과제 레포지토리입니다.
사용한가상환경 : Virtual Box
운영체제 : Ubuntu 20.04.6 LTS, linux-image-5.15.120
리눅스 ps 명령어와 유사한 결과를 출력할 수 있는 newps 명령어를 system 함 수 or exec 계열 함수를 사용하지 않고, /proc file system을 활용하여 구현하기.
아래 연산을 수행하는 시스템콜을 생성하기
- 자연수 1개 입력 시 자릿수를 거꾸로 변경한 숫자를 출력한 후 다음 입력을 대기, 2) 자연 수, 부호(+ 또는 -), 자연수 순서로 입력 시 입력된 부호와 반대되는 연산 결과를 출력한 후 다음 입력을 대기, 3) 앞의 두가지 경우 외 스트림 입력 시에는 “Wrong Input!” 출력한 후 다음 입력을 대기, 4) 아무것도 입력되지 않으면 프로그램 종료
리눅스 커널 5.15.120 버전에서 아래 기능을 수행하는 프로그램 구현 (100점 만점, 추가 구 현시 가산점 최대 50점, 총 과제 점수의 35%. 70점 이상 Pass) ○ 시스템콜을 활용하여 리눅스 커널의 스케줄링 정책을(CFS, RT_FIFO, RT_RR) 변경하면서 프로세스들의 실행 순서 및 실행 시간을 확인할 수 있는 프로그램 작성
- 총 4개의(CFS_DEFAULT, CFS_NICE, RT_FIFO, RT_RR) 스케줄링 정책 중 하나를 선 택하는 입력을 받은 후, 해당 스케줄링 정책을 적용받는 프로세스 21개를 생성한 후 (생성되는 프로세스들은 동일한 배열 연산을 수행), 프로세스들의 종료되는 순서 및 실 행시간 출력 (70점) (CFS_DEFAULT: 10점, CFS_NICE: 20점, RT_FIFO: 20점, RT_RR: 20점)
- (명령어 또는 시스템콜을 통해) RT_RR 스케줄링 기법의 Time Slice를 3가지로 변경 해 보면서 (10ms, 100ms, 1000ms) 프로세스들의 실행 시간 비교 (20점)
- 구현 과정 설명, 실행 화면 스냅샷, 실행 결과 분석 내용을 포함하는 보고서 작성 (10 점)
- 스케줄링 정책 변경에 따른 프로세스들의 실행 순서 및 실행 시간을 정확하게 분석하 기 위해서는 (명령어 입력 또는 시스템콜을 통해) CPU 코어를 1개만 사용하도록 제한 해야 함 ○ 커널 코드 수정을 통해 RT_FIFO 스케줄링 정책을 구현하고 (가산점 25점), 생성되는 각 프로세스의 CPU 점유 시간 (CPU burst: 할당 받은 CPU로 연산을 수행하는 시간) 누적값 을 프로세스 종료 시 커널 로그에 출력하도록 한 후 (가산점 25점), 이를 테스트할 수 있 는 프로그램 작성. 테스트 프로그램은 (시스템콜을 활용한 스케줄링 정책 변경 없이) 동일 한 배열 곱셈 연산을 수행하는 21개의 프로세스를 실행시키면 됨
가상메모리 관리를 위해 사용되는 4가지 페이지 교체 알고리즘 Optimal, FIFO, LRU, Second-Chance(One-handed Clock)를 C언어로 프로그래밍하여 각 페이지 교체 알고리 즘에 대한 동작 결과를 출력하는 시뮬레이터 구현하기
- Optimal: 25점, FIFO: 20점, LRU: 25점, Second-Chance: 25점
- 구현 과정 설명, 실행 화면 스냅샷, 실행 결과 분석 내용을 포함하는 보고서 작성 (5 점)