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