본문 바로가기
시스템sw및실습

[시소실] 9. LINUX 환경에서의 Program 실행

by leziwn.cs 2023. 11. 7.

  1. 고급 언어 프로그램 (a.c)
    --> 컴파일러
  2. 어셈블리 프로그램
    --> 어셈블러
  3. 기계어 프로그램; object file (a.o), 기계어 프로그램 (libc.a) - Static Library
    --> 링커
  4. 기계어 프로그램; executable file (a.out), Shared Library
    --> 로더
  5. 메모리

 

gcc

: compile, linking 

=> a.c --> (a.o는 생략되고) --> a.out (executable file)

  • 파일 이름은 반드시 .c로 끝나야 한다.
  • 컴파일 결과 실행파일 이름이 a.out이 된다.
  • -o [filename] 옵션: 실행파일 이름을 filename으로 한다.
gcc  [options]  FILE

gcc

 

 

Library 만들기 및 사용: ar (archive)

: ar 커맨드 사용

  • static library file은 .a로 끝난다.

ar

 

 

1) Static Library 만들기 및 사용
  • Static Library 이름 형식: lib???.a

▷ Linking

gcc  my.c  -lx     // gcc가 linking을 위해 /lib/libx.a를 찾는다.
  • gcc에서 Static Library(libc.a)는 자동으로 포함시킨다.

Static Library 만들기 및 사용

 

 

Static Library vs. Shared Library

Static Library vs. Shared Library

▶ Static Library

  • Functions are copied into executable file during gcc time(link time).
  • Binding: compile time
  • Suffix: .a (archive)
  • Default linking: /lib/libc.a

▶ Shared Library

  • Functions are not copied during gcc time. (just map)
    --> During the run, load on demand from library. 
  • Binding time: run time
  • Suffix: .so (shared object)
  • Default linking: /lib/libc.so

 

 

2) Shared Library 만들기
  • Building shared library
  • Upgrading shared library

Shared Library 만들기

 

 


프로세스 관리

▶ 프로세스 관리와 관련한 명령어 (command)

  • ps
  • kill
  • top
  • nohup, nice

▶ 프로세스 관리와 관련한 내부 명령어

  • jobs
  • fg, bg

▶ 프로세스 관리와 관련한 제어키

  • control-c, control-z

 

 

ps

: 현재 동작중인 프로세스들을 출력한다.

ps  [option]
  • ps: 현재 창에서 실행한 프로세스만 출력
  • ps -x: 자신이 사용하는 모든 프로세스 출력 (다른 창에서 실행중인 프로세스도 포함)
  • ps -aux: 시스템에서 동작한느 모든 프로세스 출력

 

 

kill

: 프로세스에게 시그널을 보낼 때 사용한다.

kill  [option]  pid
  • 옵션을 쓰지 않으면, SIGTERM 시그널을 프로세스에게 보내, 프로세스를 종료한다.

▷ Option:

Options

 

 

top

: CPU 사용량이 top인 프로세스들을 출력한다.

top [-] [d delay] [q] [c] [i]

// d delay: 화면 갱신 시간을 설정한다.
// c: command list 전체를 보여준다.
// i: idle 상태와 zombie 프로세스는 무시한다.

 

 

nohup / nice

▶ nohup: 로그아웃 후에도 프로세스가 계속 수행되도록 한다.

nohup  실행파일이름  &
  • &: backgroud process로 수행

 

▶ nice: 프로세스를 매우 낮은 우선순위로 실행시킨다. (CPU가 놀고 있을 때 실행되도록 한다.)

nice  실행파일이름

 

 

Shell 내부 명령어 및 제어

▶ Foreground vs. Background

  • Foreground process: 현재 터미널에서 수행하는 프로세스 (표준입출력 가능 -- 키보드: 입력, 모니터: 출력)
  • Background process: 터미널 이면에서 수행하는 프로세스

 

▶ 프로세스 관리와 관련한 내부 명령어

  • &: command 뒤에 & 붙이면, background로 프로세스를 수행한다.
  • jobs: current shell 아래에서 수행중인 프로세스를 모두 보여준다.
  • fg [job_ID]: job_ID 프로세스를 foreground로 전환한다.
  • bg [job_ID]: job_ID 프로세스를 background로 전환한다.

 

▶ 프로세스 관리와 관련한 제어키

  • Control-C: foreground 프로세스를 종료한다.
  • Control-Z: foreground 프로세스를 일시중지한다.

 

 

 

 

출처: 이화여자대학교 권진욱교수님 시스템sw및실습

'시스템sw및실습' 카테고리의 다른 글

[시소실] 10-2. Shell 메타 문자  (0) 2023.11.21
[시소실] 10-1. Regular Expression  (0) 2023.11.21
[시소실] 8. LINUX Commands  (0) 2023.11.06
[시소실] 7. vi editor  (0) 2023.10.28
[시소실] 6. Linux Practice (4)  (0) 2023.10.17