개념

Part 1 : Implement the Argument Passing(Command Line Parsing)

Part 2 : User Memory Access

Part 3 : System Calls

참고자료 : 시카고 대학교 자료

개요

시스템 콜.

지금까지는 운영 체제의 커널에서 모든 작업을 진행했다. 이제는 User 프로그램으로 넘어가, 커널 프로그램에서는 자유롭게 사용했던 시스템의 중요 자원들을 오로지 시스템 콜을 이용해야만 사용할 수 있도록 해야 한다.

또한 멀티 프로세스를 적용한다(멀티 스레드는 적용하지 않는다). 하나의 프로세스 안에는 하나의 스레드만이 존재한다.

이전 프로젝트에서는 테스트 코드를 커널에 직접 컴파일했기 때문에, 테스트를 하기 위해선 커널 내의 특정한 함수 인터페이스를 필요로 했다. 지금부터 사용자 프로그램을 실행하여 운영 체제를 테스트한다.

Untitled

Here's a summary of how to create a disk with a file system partition, format the file system, copy the args-single program—which is the second test case for this project—into the new disk, and then run it, passing argument 'onearg'. (Argument passing won't work until you implemented it.) It assumes that you've already built the test cases and that the current directory is userprog/build:

pintos-mkdisk filesys.dsk 10   // 이름이 filesys.dsk인 10MB짜리 디스크를 만든다.
pintos --fs-disk filesys.dsk -p tests/userprog/args-single:args-single -- -q -f run 'args-single onearg'

If you don't want to keep the file system disk around for later use or inspection, you can even combine all four steps into a single command. The --filesys-size=n option creates a temporary file system partition approximately n megabytes in size just for the duration of the pintos run. The Pintos automatic test suite makes extensive use of this syntax:

pintos --fs-disk=10 -p tests/userprog/args-single:args-single -- -q -f run 'args-single onearg'