- 고급 언어 프로그램 (a.c)
--> 컴파일러 - 어셈블리 프로그램
--> 어셈블러 - 기계어 프로그램; object file (a.o), 기계어 프로그램 (libc.a) - Static Library
--> 링커 - 기계어 프로그램; executable file (a.out), Shared Library
--> 로더 - 메모리
gcc
: compile, linking
=> a.c --> (a.o는 생략되고) --> a.out (executable file)
- 파일 이름은 반드시 .c로 끝나야 한다.
- 컴파일 결과 실행파일 이름이 a.out이 된다.
- -o [filename] 옵션: 실행파일 이름을 filename으로 한다.
gcc [options] FILE
Library 만들기 및 사용: ar (archive)
: ar 커맨드 사용
- static library file은 .a로 끝난다.
1) Static Library 만들기 및 사용
- Static Library 이름 형식: lib???.a
▷ Linking
gcc my.c -lx // gcc가 linking을 위해 /lib/libx.a를 찾는다.
- gcc에서 Static Library(libc.a)는 자동으로 포함시킨다.
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
프로세스 관리
▶ 프로세스 관리와 관련한 명령어 (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:
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 |