Linux 0.11 시스템 파일을 수정하여 간단한 시스템 호출을 추가하십시오.
Ubuntu20.04.1에서 Bochs를 사용하여 Linux0.11 Linux0.11 컴파일 된 이미지 파일을 실행하여 Linux0.11을 컴파일하는 32 비트 GCC 환경이 필요하며 간단하고 실행 가능한 환경 구성 링크가 첨부되어 있습니다. https://gitee.com/cn-guoziyang/oslab.
Linux 0.11 시스템 파일 (Bochs에서 실행)을 수정하면 구현은 간단한 시스템 호출을 추가하는 것입니다. 다음은 Call Nameout.c 출력 "안녕하세요, LWH"입니다.
사용자 수준에서 프로그램 Nameout.c를 작성하고 Syscall 매크로를 통해 시스템 기능을 호출하려면 창을 열고 sys_nameout 시스템 기능을 호출하십시오. linux0.11 시스템 커널에 Name.c의 파일 형식으로 저장된 함수 sys_nameout을 작성하십시오. sys_nameout은 printk ()를 호출하여 인쇄물을 완성합니다. 우리가 추가 한 커널/Who.c를 컴파일하고 다른 Linux 코드에 연결할 수 있도록 makefile 파일을 수정하십시오.

자세한 단계 : IAM 및 WHOAMI 시스템 호출 번호의 매크로 정의 추가 (_NR_XXXXXX)
파일 경로 : /linux-0.11/**include/unistd.h ** 
총 시스템 호출 수를 수정 파일 경로 : /linux-0.11/** Kernel/system_call.s ** 
새로 추가 된 시스템 호출에 시스템 호출 이름을 추가하고 시스템 호출 테이블 파일 파일 경로 : /linux-0.11/ include/linux/sys.h를 유지 관리합니다.

새로 추가 된 시스템 호출에 대한 코드 구현 쓰기 및 파일 name.c 만듭니다 .C 파일 경로 ** : /linux-0.11/kernel**

name.c에 printk ( "hello, 나는 lwh")를 쓰십시오
makefile을 수정하십시오
우리가 추가하는 커널/Who.c를 허용하려면 다른 Linux 코드와 컴파일하고 연결할 수 있으려면 MakeFile 파일을 수정해야합니다.
파일 경로 : /linux-0.11/kernel/makefile

테스트 프로그램 작성
지금까지 커널에서 수정 해야하는 부분이 완료되었습니다. 다음으로, 새로 추가 된 시스템 호출이 Linux-0.11 커널에 컴파일되었는지 여부를 확인하기 위해 테스트 프로그램을 작성해야합니다.
파일 경로 : /oslab/namein.c /oslab/nameout.c

/ * nameout.c */
#Define Library
#include <unistd.h>
#include <errno.h>
#include <asm/segment.h>
#include <linux/kernel.h>
#include <stdio.h>
_syscall2 (int, nameout, char *, name, unsigned int, size);
int main (int argc, char *argv [])
{
char 사용자 이름 [64] = {0};
/ 통화 시스템 호출 Nameout () /
Nameout (사용자 이름, 24);
printf ( "%s n", 사용자 이름);
반환 0;
}
Mount Method를 사용하여 호스트와 가상 머신 운영 체제간에 파일 공유를 실현하려면 oslab 디렉토리에서 다음 명령을 실행하여 HDC 디렉토리를 가상 시스템 운영 체제에 마운트하십시오.

Linux 커널 파일 파일 경로 : /Oslab /Linux를 컴파일합니다
터미널에서 MAKE 명령을 실행하십시오 
성공하십시오
Bochs Virtual Machine 파일 실행 경로 : / Oslab / Terminal 실행 명령을 실행하십시오. 
가상 컴퓨터에서 Linux-0.11 : /usr/include/unistd.h의 새 통화 번호 파일 경로 추가 
(가상 머신에서 수정 된 경우)
(장착 후 호스트의 그래픽 인터페이스에서 수정 된 경우)

GCC 실행은 케이스 텍스트를 성공적으로 출력합니다


디스크 스케줄링은 FIFO (First Come First Service), SSTF (가장 짧은 추천 우선 순위) 및 스캔 (엘리베이터 스케줄링 알고리즘)을 사용하여 수행됩니다.
일정 순서 표시 순서, 평균 이동 트랙 수를 계산하십시오.
파일 도구를 작성하여 파일 시스템 호출을 사용하여 다음 기능을 갖도록합니다.
새 파일 생성, 파일 쓰기, 파일 읽기, 파일 권한 수정, 현재 파일 권한보기 및 종료
파이프 라인을 사용하여 부모와 아동 프로세스 간의 프로세스 커뮤니케이션을 구현합니다.
320 개의 명령 시퀀스를 생성합니다
명령 시퀀스를 페이지 주소 스트림으로 변환합니다
FIFO (First-In-First-Out) 페이지 순열 알고리즘, 가장 최근의 가장 오래 지속되는 페이지 순열 알고리즘 및 다른 메모리 페이지 블록에서 최적 (최적) 페이지 순열 알고리즘의 적중률을 계산하십시오.
파이프 라인을 사용하여 부모와 아동 프로세스 간의 프로세스 커뮤니케이션을 구현합니다.
메시지 버퍼 큐를 사용하여 클라이언트와 서버 프로세스 간의 통신을 가능하게합니다.
공유 스토리지를 사용하여 두 프로세스 간의 프로세스 통신을 달성하십시오.