Utility 프로그램

Download Report

Transcript Utility 프로그램

제02강 : Utility 프로그램
Utility 프로그램
Utility Program
• 하드웨어를 직접 제어하지는 않지만,
• 다른 프로그램의 실행/개발을 도와줌
• 예:
–
–
–
–
Editor
어셈블러, 매크로 프로세서, 컴파일러
링커(Linker), 로더(Loader)
사용자 인터페이스(명령 처리기)
• 다음에는 어떤 일을 할까요?
매크로 프로세서
(Macro Processor)
•
•
•
•
(반복되는 데이터) John Fitzgerald Kennedy
(짧은 macro 이름) JFK
코딩하는 사람은 JFK 사용하여 코딩한다.
컴파일 직전에 치환 (macro processing).
JKF  John Fitzgerald Kennedy
• 치환은 2-패스(pass)로
– pass 1: 매크로 정의를 인식 (예: JFK)
(JFK -- John Fitzgerald Kennedy) 저장.
– pass 2: 매크로 치환작업  프로그램 번역 완성
Loader
Absolute, Relocating
0
process
process11
process 1
100
process 2
200
hole
process 3
hole
400
main = 0 번지
main()
main()
main()
hole
main = 400
main()
main()
main()
X= Y + Z
Overlay
소스 읽기
part 1
번역하기
binary 만들기
part 1
part 3
part 2
예
번역
프로그램
part 2
part 3
시 간
Manual Overlay
Dynamic Overlay
Utility Program
• 하드웨어를 직접 제어하지는 않지만,
• 다른 프로그램의 실행/개발을 도와줌
• 예:
–
–
–
–
Editor
어셈블러, 매크로 프로세서, 컴파일러
링커(Linker), 로더(Loader)
사용자 인터페이스(명령 처리기)
• 다음에는 어떤 일을 할까요?
사용자 Interface
hwp
binary
PPT
binary
탐색기
binary
사용자 Interface
$
hwp
binary
PPT
binary
탐색기
binary
사용자 Interface
$ hwp_
hwp
binary
PPT
binary
탐색기
binary
사용자 Interface
GUI – Windows
Graphic User Interface
CUI – Linux, UNIX
Character User Interface
$ hwp_
programs
in
disk
processes
in
memory
사용자 Interface
상주
OS
사용자 Interface
OS
상주
OS
탐색기
hwp
email
Powerpoint
game
*.EXE
a.out
사용자 Interface
OS
상주
OS
hwp
탐색기
hwp
email
Powerpoint
game
*.EXE
a.out
사용자 Interface
OS
상주
OS
hwp
hwp
화면
탐색기
hwp
email
Powerpoint
game
*.EXE
a.out
프로그래밍 언어
– 기계어 (machine language)
• 00110110
• 컴퓨터가 바로 실행 가능
– 어셈블리어 (assembly language)
• 기계어 명령어와 1:1 대응
• 어셈블러 (assembler)
01100110 11110011 10010111
ADD
A
– 고급 언어 (high-level language)
• X**2  여러개의 기계어 명령어
• 컴파일러(compiler) 또는 인터프리터(interpreter)
B
컴파일링, 어셈블링
Source
Code
Add A, B
A: 100
B: 330
Jump C
C: exit
컴파일링, 어셈블링
Source
Code
Add A, B
A: 100
B: 330
Jump C
C: exit
D: EOF
Symbols
컴파일링, 어셈블링
Add 10, 20
Source
Code
10: 100
20: 330
Add A, B
A: 100
symbol
address
부분
Jump 30
30: exit
B: 330
Jump C
C: exit
컴파일링, 어셈블링
Add 10, 20
Source
Code
10: 100
20: 330
Add A, B
Jump 30
A: 100
30: exit
B: 330
Jump C
C: exit
001 A, B
op-code
data
부분
A: 100
B: 330
112 C
C: 723
컴파일링, 어셈블링
Add 10, 20
Source
Code
10: 100
Binary
Code
20: 330
Add A, B
A: 100
symbol
address
부분
Jump 30
30: exit
001 10, 20
B: 330
10: 100
Jump C
20: 330
001 A, B
C: exit
op-code
부분
112 30
A: 100
B: 330
112 C
C: 723
30: 723
컴파일링, 어셈블링
Binary
Code
Source
Code
Symbol Table
Add A, B
A: 100
B: 330
Jump C
C: printf()
Symbol
Binary
A
10 번지
001 10, 20
B
20 번지
10: 100
C
30 번지
20: 330
printf
----
112 30
…
----
30: 723
참조한 Symbol이 그 file에 없다면?
예: print() sin()
my.c:
main()
{ int x;
call sin();
call printf();
}
add()
{
}
symbol
binary 값
main
0 번지
x
10 번지
printf
이 파일에는 없음
add
50 번지
…
불완전한 binary
object module
object module 의 예
he.c:
printf()
{ int i,j;
return;
}
she.c:
sin()
{ int x,y;
return;
}
object module:
-이 파일만으로는 불완전
-binary를 만들 수 없음
예: main()이 없음
library
비슷한 종류의
object module들의 모음
binary까지 세단계
Source
code
Object
module
main.c
main.o
컴파일
print.c
sin.c
Executable
binary
link
print.o
sin.o
a.out
(*.EXE)
전체 과정
Source
code
Compiler
Object
module
Source
code
Compiler
Object
module
library 들
Object
module
Object
module
Object
module
Linker
Executable
Loader
전체 과정
Source
code
Source
code
Compiler
Object
module
Compiler
Object
module
Object
module
Linker
Executable
Executable
library 들
Object
module
사용자
인터페이스
Object
module
Executable
Loader
OS의 정의
정의
하드웨어와 사람(또는 응용 프로그램) 사이
중간 역할
– 성능(Performance) 향상을 도모한다.
– 사용자 인터페이스(User interface) 제공.
응용프로그램
응용프로그램
운영체제
하드웨어 관리
보호
하드웨어
고급 인터페이스
제공
광의/협의 OS 정의
응용프로그램
Utility Programs
linker
응용프로그램
컴파일러
loader
사용자 문제 해결
프로그램 개발/실행
도우미
광의 OS
협의 OS
OS Kernel
하드웨어
CPU
Memory
자원의 관리
운영체제의 기능
• 자원의 할당
– CPU, memory 스케줄링 등
• 편리한 인터페이스
– 사용자 인터페이스
– 입출력 device driver
• 제어
– 여러 프로그램들이 자원을 공유할때
– 발생하는 문제 제어