80 likes | 384 Views
과제 4 : 기억장치 관리와 Linux 커널 이해. 제출일: ~ 6월 27일 (수) 과제 내용 자필 연습문제 풀이 8.11 9.8 10.11 11.19
E N D
과제 4 : 기억장치 관리와 Linux 커널 이해 • 제출일: ~ 6월 27일 (수) • 과제 내용 • 자필 연습문제 풀이 • 8.11 • 9.8 • 10.11 • 11.19 • 프로그램 과제: 리눅스를 부팅할 때 처음 나오는 메시지 “Loading XXX..….”(XXX는 해당 시스템의 커널 이름, 예, linux)과 “Uncompressing Linux…”사이에 자기 자신만의 메시지, 예를 들면, “This is Mee Young Sung’s kernel”과 같은 메시지가 나타나도록 리눅스 커널을 수정해서 실행해 보고 프로그래밍 및 커널 컴파일 절차에 대하여 자세하게 설명하여 제출하라. • 힌트 • usr/src/linux/arch/i386/boot/compressed/misc.c 파일을 적절하게 수정한 후 커널 컴파일 • 주의사항 • 원래 있던 커널 이미지는 그대로 보존하고 수정된 새 커널 이미지 만들어 새 이름(예, linux2)을 부여한 후 LILO에서 선택하여 부팅 • 참조 사이트 • http://kernel.pe.kr/data/doc/compile.html • http://www.linux.org/docs/ldp/howto/Kernel-HOWTO-11.html 2000 운영체제
과제 1 : Linux 기본 이해 • 과제 제출 방법 • 과제 1과 2는 한꺼번에 철하여 제출 • 과제 3: Electronic version과 Printout version 모두 제출 • Electronic version: gnu.inchon.ac.kr (211.119.245.140)의 지정 디렉토리 (~mysung/2001osreport/)에 자기 학번의디렉토리 만들고 그 곳에 소스파일과 실행파일 복사 • Printout version: 프로그램의 소스와 실행 결과를 출력하여 제출 • 선행 작업 • Linux 명령 익히기: http://marvel.incheon.ac.kr/ Information Linux 기본적인 쉘 명령어 모음 참조 • vi 편집기 익히기 • Linux 환경에서 C 언어 프로그래밍 익히기 (gcc, gdb) • 참고문헌 • 한동훈, 이만용 역(Neil Mattew, Richard Stones 원저), 초보자용 리눅스 프로그래밍 (Beginning Linux Programming), 대림, 1998. • M. Beck, H. Bohme, M. Dziadzka, U. Kunitz, R. Magnus, D. Verworner, Linux Kernel Internals, Second Edition, Addison-Wesley 1999. • 기타 Linux 참고서적 2000 운영체제
커서의 이동 hjkl 이용 H J K L [Vi mode] 4j G 명령으로원하는 행으로 이동 7G G : 마지막 행으로 화면 이동 ^F ^B ^D ^U 텍스트 추가, 삽입, 수정 a(append) i(insert) o(open) O(Open) R(Replace) 텍스트의 삭제 및 취소(undo) x(exclude?) d(delete) dw db d$ d^ r(replace) u(update) U(Update) 최근 명령 재 실행 . 파일 관리 Vi를 벗어나지 않고 저장하기: :w 저장 않고 끝내기: :q! 또 다른 파일 편집: :e xx 또는 :e! xx 다른 파일을 읽어 와 덧붙이기: :r xx http://marvel.inchon.ac.kr/ 의 Information 참조 Vi를 이용한 기본 텍스트 편집 2000 운영체제
replace append insert open esc esc esc esc a i R oO $Vi filename ~ ~ Vi mode (Vi 명령 모드) ~ $ :q! (기록 않음) ZZ(기록) :wq x dd r 커서이동 Vi 편집 모드 2000 운영체제
Linux/Unix C 언어 프로그래밍 • cc compiler • man cc • $ cc –o hello hello.c • $ hello • gcc compiler • GNU project C and C++ Compiler • GNU(GNU’s Not Unix, Free Software Foundation의 Richard Stallman) • man gcc • info gcc • $ gcc hello.c • $ a.out • $ gcc –o hello hello.c • $ hello 2000 운영체제
유닉스 디버거 : gdb • 프로그램을 기호적으로 디버깅 : dbx, adb, sdb, gdb, ddd(Motif) 등 • 단일단계이동(single stepping) • 정지점(breakpoint) • 디버거 내에서 편집 • 변수의 접근 및 수정 • 함수의 탐색 • 추적(tracing) • gdb • GNU debugger, 별도의 프롬프트 표시 • 관련정보는, 프롬프트에서 help를 입력 • dbx executableFilename • 디버그를 위한 프로그램 준비 • cc의 -g 옵션으로 프로그램을 번역 • ⇒ 목적 모듈 내에 디버깅 정보 포함 2000 운영체제
유닉스 디버거 : gdb • gdb 실행gdb 실행 파일이름 : 실행 파일을 디버그함 (실행 파일은 반드시 -g 옵션을 사용하여 컴파일되어야 함) • gdb 명령어 • b (breakpoint) : 실행 중 디버그를 위해 멈추는 위치 지정 • b 함수명 : 함수명에서 멈춤 • b 라인번호 : 라인번호에서 멈춤 • r (run) : 실행 시작 • n (next) : 현재 라인 실행 (함수의 경우 실행하고 다음 라인으로 넘어 감) • s (step) : 현재 라인 실행 (함수의 경우 호출된 함수 내로 들어가 실행 계속) • c (continue) : 다음 breakpoint까지 실행 • l (list) : 현재 수행되고 있는 라인부터 10개 라인씩 연속적으로 소스 코드를 프린트 • p (print) 변수명 : 변수명으로 저장되어 있는 내용을 프린트 • h (help) : 도움말 • q (quit) : gdb 종료 2000 운영체제
일찍 일어나는 새 당신이 새라면 아침에 일찍 일어나야 한다. 그래야 벌레를 잡아먹을 수 있을 테니까. 만일 당신이 새라면 아침에 일찍 일어나라. 하지만 만일 당신이 벌레라면 아주 늦게 일어나야 하겠지. 쉘 실버스타인 2000 운영체제