[프로젝트] 운영체제 시스템콜설계 (System Call Design)
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

[프로젝트] 운영체제 시스템콜설계 (System Call Design)에 대한 보고서 자료입니다.

목차

1. Outline
 (1) About System Call
 (2) System Call Process
 (3) System Call Subject
 (4) Process Environment
 (4) Reference Book

2. Schedule
 (1) Who
 (2) Diary

3. Design Process
 (1) Kernel Compile
 (2) Preparation
 (3) Sort
 (4) R_Sort
 (5) FIFO

4. Analysis & Problem
 (1) Application
 (2) Problem & Solution
 (3) Summary

본문내용

/usr/include/asm/unistd.h 수정 후 컴파일 >
▶ 컴파일
< 컴파일 후 실행 파일이 생성된 것을 보여줌 >
(4) R_Sort
4-1) New System Call Name
▶ 시스템 콜 이름 결정
< 기존에 사용하지 않던 번호 사용 >
▶ 시스템 콜 테이블 등록
< system_call()함수가 수행하면 참조되는 테이블 >
4-2) New System Call Coding 4-3) Write Makefile
▶ 새로운 함수 r_sort() 구현
< kernel/r_sort.c 작성(오름차순) >
▶ Makefile에 추가
< 컴파일 하기 이전 컴파일 시 링크가 되도록 수정 >
4-4) Re Kernel Compile 4-5) 응용 프로그램 작성

< 커널 컴파일 >
#make bzImage
/boot 디렉토리로 커널이미지 복사
#make modules(필요없음)
#reboot
▶ 응용프로그램 작성
< 시스템 콜 호출하는 명령 포함 한 응용프로그램 >
4-6) Compile Error Solution 4-7) Code Compile
▶ 컴파일 오류 해결 방법
< /usr/include/asm/unistd.h 수정 후 컴파일 >
▶ 컴파일
< 컴파일 후 실행 파일이 생성된 것을 보여줌 >
(4) FIFO
#include
int FIFO(int,int);
void main(){
int mem,leng;
float result;
printf("M size : ");
scanf("%d",&mem);
printf("Reference string length : ");
scanf("%d",&leng);
result = FIFO(mem,leng);
printf("page fault: %.2f\n",result);
}
int FIFO(int m,int size){
int frame[30];
int temp;
int fault=0;
int i,j;
for(i=0; i scanf("%d",&frame[i]);
fault++;
}
for(i=0; i printf("[");
for(j=0;j printf("]\n");
scanf("%d",&temp);
for(j=0;j if(frame[j]==temp) break
}
if(j==m){
fault++;
for(j=0;j frame[m-1]=temp;
}
}
return (float)fault/size*100;
}
연구원들이 Page Fault를 위해 FIFO를 시스템 콜을 이용하면 유용하게 사용할 수 있지 않을까 해서 테스트용으로 만들려했지만, C언어에서는 구현하여 실행까지 완벽하였지만, 커널에서는 scanf()기능이 완벽하지 않아 구현 단계 중 보류되었다. getch()를 사용 할 수 있으나 이렇게 될 경우 엔터 값을 거르지 못하였고 이문제점을 개선하면 구현가능 할 수 있을 것이라 생각 된다.
< 1번인자 : 메모리사이즈, 2번인자 : 참조 스트링길이 >
4. Analysis & Problem
(1) Application
1-1) 오름차순(Ascending Order)
▶ System call 전
< 소팅 되어 있지 않은 내용들을 입력 >
▶ System call 후
< 시스템 콜 후 정렬되지 않은 내용이 소팅되어 출력 >
1-2) 내림차순(Dscending Order)
▶ System call 전
< 소팅 되어 있지 않은 내용들을 입력 >
▶ System call 후
< 시스템 콜 후 정렬되지 않은 내용이 소팅되어 출력 >
(2) Problem & Solution
2-1) FIFO 미 구현
앞에서 봐왔던 sort()와 r_sort() 시스템 콜을 구현해 보았지만 FIFO는 위에서
잠깐 소개하였는데 C에서의 구현은 성공적으로 나타났으나 커널에서는 Page
Fault가 발생마다 입력하는 부분의 문법을 아직 잘 모르기에 구현에는 성공하지
는 않았지만 차후 시스템 콜의 여러 문법들을 접하게 된다면 FIFO역시 구현하
는데 어렵지 않게 해결될 수 있다.
2-2) 예외처리의 부재
현재 작성한 시스템 콜의 경우 중복에 대한 예외 처리가 되어 있지 않다.
이것은 단순히 내용을 오름차순과 내림차순의 소팅을 보여주기 위한 것이다.
차후에 중복 허용하지 않게 사용되는 경우를 생각하여 중복을 허용하지 않는
새로운 시스템 콜을 작성해 볼 수 있다.
중복을 해결하기 위해서는 if문을 추가하여 중복 허용 시 오류 처리를 해주게
구현해야 할 것이다.
(3) Summary
이번 프로젝트는 기존에 사용해왔던 Windows 또는 MAC라는 운영체제가 아닌 복잡하고
확장성이 있는 리눅스라는 운영체제를 접해 봄으로써 이론적으로만 학습하였던 운영체제가
아닌 직접 컴파일 해보면서 시스템 콜을 만들어 보는 아주 좋은 경험이 되었습니다.
그동안 기존에 사용하던 운영체제가 아닌 사용해 보지 않은 리눅스를 가지고 시스템 콜
과 컴파일을 하기위해 이렇게 저렇게 접근하다 보니 커널에 대한 전반적으로 흘러가는
방식과 리눅스에서의 시스템 콜 구현을 위한 여러 코드들을 제대로 이해하지 못한 상황
에서 부딪쳐 보면서 단지 결과만 보여주는 것은 아닌가 하는 생각이 든다.
처음 vmware로 첫 리눅스를 설치를 할 때 사소한 곳에 실수를 하여 몇 번이고 재설치를
하는 번거로움은 있었다. 그리고 네트워크를 접근을 하는데 어려움을 겪어 이 점을 해결하
기 위해 여러 가지 방법을 해보았으나 항상 벽으로 막는 느낌이었다. 그렇게 몇일을 허비
하고 나서야 제대로 설치를 하게 되었고, 커널 컴파일을 할 때도 역시 실수를 하게되었다.
이러한 사소한 문제점들의 원인을 알고 찾으면서, 그 원인들을 분석하면서 조금이나마
리눅스에 관한 이해가 차츰 향상되어갔다.
향후 컴퓨터공학을 배우는 학생으로서 다양한 운영체제를 접근하면서 지금까지 겪지 못
한 특징이나 장단점들을 파악하여 많은 경험을 쌓아 지금 적게나마 해보았던 시스템 콜
이외에도 다양하고 활용도 있는 다양한 것들을 해보면 성장해 나가야 할 것이다.
  • 가격2,300
  • 페이지수17페이지
  • 등록일2013.05.31
  • 저작시기2012.6
  • 파일형식한글(hwp)
  • 자료번호#850400
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니