Download presentation
Presentation is loading. Please wait.
1
Operating System 3주차 - About Linux -
Real-Time Computing and Communications Lab. Hanyang University
2
Contents Linux Shell Command Foreground & Background gcc compiler
Makefile Quiz 과제1 설명 Kernel Source Download
3
Linux Shell Command man – Linux Programmer’s Manual 보기
Usage : man [name] Ex> $ man ls $ man fork 다양한 명령어와 시스템 콜 등에 대한 자세한 정보를 찾아 볼 수 있다.
4
Linux Shell Command ls – 현대 폴더의 파일과 폴더 목록을 출력
Option : -a (숨김 파일도 모두 표시), -l (파일 상세정보 표시) Ex> $ ls $ ls –a $ ls –l $ ls –al $ ls ../ $ ls /usr 그 밖의 Option은 $ man ls를 통해서 확인할 수 있다.
5
Linux Shell Command cd – 디렉터리 이동 Usage : cd (target directory)
1. 현재 디렉터리기준, 다운로드 디렉터리로 이동 2. 상위 디렉터리로 이동 3. /usr/src/linux 디렉터리로 이동 4. 현재 디렉터리기준, kernel 디렉터리로 이동 . : 현재디렉터리, .. : 상위 디렉터리 의미
6
Linux Shell Command rmdir – 디렉터리 삭제 touch – 빈 파일 생성 rm – 파일 삭제
mkdir – 디렉터리 생성 Usage : mkdir [directory name] rmdir – 디렉터리 삭제 Usage : rmdir [directory name] touch – 빈 파일 생성 Usage : touch [file name] rm – 파일 삭제 Usage : rm [fime name] rm –rf [directory name] (해당 폴더와 하위 파일까지 모두 지우는 명령)
7
Linux Shell Command
8
Linux Shell Command cp – 파일복사 mv – 파일위치 변경
Usage : cp [original filename] [target filename] mv – 파일위치 변경 Usage : mv [original filename] [target filename / target location]
9
Linux Shell Command find – 파일검색
Usage : find [path] [option] [target filename] …등 다양한 포맷 가능 자세한 옵션은 $ man find를 통해서 확인하고 사용한다. Ex> $ find [path] –name [filename]
10
Linux Shell Command ps – 프로세스 목록 출력 Usage : ps [options]
11
Linux Shell Command jobs – 실행중인 작업 출력
sudo – 일반 사용자가 루트 권한이 부분적으로 필요할 때 사용 Usage : sudo [option] [command] jobs – 실행중인 작업 출력
12
Linux Shell Command top – 시스템 사용량 확인
13
Linux Shell Command Top Table 필드 정보 PID : 프로세스 ID (PID)
USER : 프로세스를 실행시킨 사용자 ID PRI : 프로세스 우선순위 (nice value + 20) NI : task의 Nice value VIRT : 가상 메모리 사용량 RES : 현재 Page가 상주하고 있는 크기 (Resident Size) S : 프로세스 상태 (S : sleeping, R : running, W : swapped out process, Z : zombies) %CPU : 프로세스가 사용하는 CPU 사용률 %MEM : 프로세스가 사용하는 메모리 사용률 COMMAND : 실행된 명령어
14
Foreground & Background
프로세스를 실행하는 방법은 크게 2가지가 있다. Foreground 기본적으로 모든 프로세스는 foreground로 실행된다. 키보드와 연결되어 있으며 결과를 직접적으로 스크린 혹은 터미널 창에 출력한다. 꽤 긴 시간 동안 동작하는 프로그램을 실행시켰을 경우에는 그 시간 동안 터미널을 이용할 수 없게 되므로, 곤란한 경우가 생기게 된다. Background 키보드와 연결되지 않은 상태로 실행된다. 만약 이 프로세스가 키보드 입력을 필요로 할 경우에는, 입력을 기다린다. Background로 프로세스를 실행하는 것의 장점은 한 프로세스가 동작하고 있는 동안에도 다른 프로세스를 실행시킬 수 있다는 점이다. $ ./a.out & 를 통해 백그라운드로 실행할 수 있다.
15
Foreground & Background
Example> matrix source code 단순하게 100 x 100 행렬을 10^5 제곱하는 함수. 참고로 아래 프로그램은 input_matrix의 초기화가 생략되어 있습니다.
16
Foreground & Background
Example> Foreground & Background Foreground 실행 -> 프로세스가 종료할 때 까지 다른 작업 못함 Background 실행 -> 다른 작업 가능 “ctrl + z” 프로세스 중지 -> foreground 프로세스 중지
17
Foreground & Background
Example> Foreground & Background command “jobs” 현재 실행되고 있는 프로세스들의 상태와, job 번호를 알 수 있다. Background -> Foreground $ fg %job번호 (ex> fg %2)
18
Foreground & Background
$ bg %job번호 foreground 에서 background로 바꾸려면, 먼저 foreground로 실행되고 있는 프로세스를 ctrl + z로 중지 시킨 후 해야 한다.
19
gcc compiler 먼저 컴파일이란 인간이 이해할 수 있는 형식 언어(C, C++ 등)로 작성된 소스 코드를 CPU가 이해할 수 있는 기계어로 번역하는 과정 Linux에서는 기본적으로 gcc (GNU C Compiler)을 사용하여 작성된 코드를 컴파일하고 사용 gcc에도 다양한 옵션이 존재하며, 이번 시간에서는 아래의 3가지 경우만 설명하고 추가적으로 강의를 진행하면서 필요한 옵션들에 대해서 강의자료를 통해 보강할 예정 (더 궁금한 사람은 $ man gcc) $ gcc [target file name] Ex > gcc test.c a.out 이라는 실행 파일이 생김. $ gcc –o [executable file name] [target file name] Ex> gcc –o test test.c test 라는 실행 파일이 생김. 여러 개의 target file을 링킹할 수도 있음. $ gcc –c [target file name] Ex> gcc –c test.c test.o 라는 object 파일을 만듭니다.
20
Make 프로젝트가 커지면서 소스 파일의 개수가 많아지고, 각 파일에 대해 서로 다른 컴파일러와 어셈블러를 사용하고, 각기 다른 옵션을 적용해야 한다면 그것을 일일이 gcc 명령으로 처리하기에 문제 발생 따라서 이런 문제점들을 해결하기 위해 Make라는 유틸리티를 사용 Make는 파일 관련 유틸리티로 각 파일간의 종속 관계를 파악해 기술 파일(Makefile)에 기술된 대로 컴파일 혹은 쉘 명령을 순차적으로 내릴 수 있다. 프로젝트에 Make를 도입하면 컴파일 시간을 절약할 수 있고, 프로그램의 종속 구조를 파악하는데 용이하다.
21
Makefile 사용법 기본 구조 Target : Command에 의해서 수행되어 나온 결과 파일을 지정, 일반적으로 목적 파일이나 실행 파일 Dependent files : 생성되는 파일인 대상(Target)과 의존하는 파일들의 관계 Command : Dependent files의 내용이 바뀌거나 Target file이 존재하지 않을 경우 Command 부분이 실행됨 (Shell Command)
22
Makefile 사용법 간단한 Makefile 만들기 $gcc -c read.c $gcc -c write.c
Shell 상에서 실행 파일 만들기 Ex) “test” program main.c, read.c, write.c로 구성되고, 모두 io.h을 사용 read.c는 defs.h라는 헤더 파일 사용 write.c는 buffer.h라는 헤더 파일을 사용 $gcc -c main.c $gcc -c read.c $gcc -c write.c $gcc -o test main.o read.o write.o
23
Makefile 사용법 간단한 Makefile 만들기 Makefile 작성 test: main.o read.o write.o
gcc -o test main.o read.o write.o main.o : io.h main.c gcc -c main.c read.o : io.h defs.h read.c gcc -c read.c write.o : io.h buffer.h write.c gcc -c write.c clean : rm –rf *.o test
24
Makefile 사용법 변수 사용 Objects = main.o read.o write.o 주석 : #으로 시작
test: $(Objects) gcc -o test $(Objects) main.o : io.h main.c gcc -c main.c read.o : io.h defs.h read.c gcc -c read.c write.o : io.h buffer.h write.c gcc -c write.c clean : rm –rf *.o test 주석 : #으로 시작 변수: 값을 대입하기 위해서는 “=“을 사용 $(변수), ${변수} 형식을 통해 변수 사용
25
func1.c func2.c main.c func.h
Example 다음의 간단한 함수를 앞에서 배운 예제를 참고하여 컴파일 후 실행시켜 보겠습니다. func1.c func2.c main.c func.h Include .h 함수 구현
26
func.h func1.c func2.c main.c
Example 위의 예제 파일은 다음과 같이 간단하게 구성되어 있습니다. func.h func1.c func2.c main.c
27
Example GCC 위의 예제를 gcc를 이용해 컴파일 했습니다.
컴파일을 위해 명령어를 많이 쳐야 함을 확인할 수 있습니다.
28
Example Makefile 같은 예제를 Makefile을 만들어 컴파일하였습니다.
$vim Makefile 을 통해 작성합니다. Makefile을 작성할 때 공백과 위의 제시된 문법에 주의해서 작성해야합니다.
29
Example Makefile $make 명령어를 입력하면, Makefile에 구현된 gcc 명령어가 한번에 입력되고 똑같은 결과를 얻을 수 있습니다.
30
memo.c calendar.c main.c diary.h memo.o calendar.o main.o diary
Quiz 아래의 관계를 갖고, 다음과 같이 출력되는 프로그램을 구현하고 기술 파일(Makefile)을 이용해 컴파일 하시오. memo.c calendar.c main.c diary.h memo.o calendar.o main.o diary
31
Quiz 출력 예시 Makefile 내에는 clean 부분이 정의되어 있어야 한다.
32
과제1 (Makefile Implementation)
Sorting Program Implementation Input.txt file의 내용을 읽어 3개의 sorting algorithms(bubble, insertion, selection)을 통해 정렬하는 Program을 구현한다. 2가지의 용도(I/O, Sorting)에 따라 각각 code를 구현한 뒤, Makefile을 통해 각 파일들을 Linking 시켜 sorting program을 구현 해야 함 global.h : 기본적인 헤더파일 include와 input.txt의 자료를 저장할 수 있는 Integer array buffer 정의 File I/O (global.h, io.h, io.c) io.h : read_file, write_file 함수의 프로토타입을 정의 io.c : input.txt의 내용을 읽어 Integer array로 저장하는 read_file 함수와 정렬된 내용을 output.txt file에 쓰는 write_file 함수의 동작을 구현 Sorting : 3가지의 sorting algorithms을 구현 (global.h, sort.h, sort.c) sort.h : bubbleSort, insertionSort, selectionSort 함수의 프로토타입을 정의 sort.c : Integer array에 대한 3가지의 sorting algorithms (bubble sort, insertion sort, selection sort)의 동작을 구현 Main : File pointer를 이용하여 input.txt file을 연 뒤, 내용을 읽어 정렬을 수행 (global.h, io.h, sort.h, main.c)
33
과제1 (Makefile Implementation)
전체 Linking 관계 global.h io.h sort.h Include Include io.c sort.c main.c I/O 관련 함수 구현 Sorting 함수 구현
34
과제1 (Makefile Implementation)
입출력 화면 Input.txt output.txt
35
과제1 (Makefile Implementation)
Due : 2015/03/27 실습 수업시간 제출물 앞에 슬라이드의 전체 Linking 관계에 표시 된 각 파일 소스 보고서 맨 뒤에 첨부 보고서 표지 Makefile 사용법에 대한 요약 정리 과제 내용 요약 구현한 Makefile 설명 결과 및 분석 (결과 화면 첨부할 것) 후기 (느낀 점, 조교에게 바라는 점)
36
과제1 (Makefile Implementation)
문의사항 이름 : 김연준 이름 : 하태욱 실습관련 질문 시 제목을 아래의 양식에 맞춰서 메일을 보내주세요. ex> [운영체제] 학번_이름 지연제출에 대해서는 감점이 있을 수 있음.
37
Kernel Source Download
로 접속
38
Kernel Source Download
Download kernel source Copy kernel URL link Kernel version : (longterm)
39
Kernel Source Download
Download kernel source “wget”을 통해 URL link로 kernel source code를 다운로드 $ sudo wget [URL address]
Similar presentations