(Week 2 - Day 4) - (1/2)
Program vs Process
Program
- Disk에 저장되어 있는 실행파일 App을 Program이라고 한다.
- 윈도우에서는 exe가 해당
- 실행된 Program은 메모리에 적재된다.
Process
- 메모리에 적재된 프로그램을 Process라는 단위로 커널이 관리
- Program을 실행시켜서 메모리에 적재된 것을 Process라고 한다.
Daemon
- 커널이 실행하는 백그라운드 프로세스
Thread
- 프로세스는 반드시 하나 이상의 Thread를 가진다.
- Thread = 프로세스 내에서 실행되는 작업의 단위
프로세스 상태 확인
uptime
load average : 부하 평균
-1min 5min 15min 까지의 평균 부하를 표시한다.
- cpu가 2개면 2.00이 100%이다.
- 만약 100%가 초과될 시, 실행은 되지만 대기시간이 걸리고 느려진다.
ps
현재 시점의 정적인 데이터
top
중요!
- 윈도우의 작업관리자와 유사하다. -> 실시간 데이터 상황
- 일반적으로 2초에 한번씩 상태 갱신을 한다.
VIRT : virtualize, 가상메모리
SHR(share) : 공유하는 것(ex. 복붙할 때 사용되는 클립보드와 유사)
RES : 물리 메모리
%CPU : cpu 사용률
$MEM : 메모리 사용률
KiB != kB
i가 붙으면 2진수 단위(1024^), 없으면 10진수 단위(1000^)이다.
참고로 KB가 아니라 kB(소문자)이다.
표시는 10진수이더라도 관습적으로 2진수 단위를 사용한다.
프로세스 신호
소위 말하는 interrupt이다.
프로세스에게 특정 신호를 보내서 프로세스가 interrupt를 받는다고 한다.
신호 번호 | 신호 이름 | 기능 |
1 | HUP | 예전에 전화선을 사용할 때, 전화를 끊을 때 사용 현재는 일반적인 종료 |
2 | INT (Ctrl + C) |
키보드 인터럽트 |
3 | QUIT | 키보드 종료 및 덤프 생성 덤프 : 분석 정보 같은 것 |
9 | KILL | 즉각적인 강제적 종료 다른 DB연결되었거나 파일을 열거나 하고 있을때 무조건 종료해버리면 정상적으로 리소스가 반환되지 않아 문제가 발생한다. |
15 | TERM | 정상적인 종료 가능하면 이걸로 종료하는 것이 이상적이다. 보통 정말 안된다면 최후의 방법으로 9번을 쓴다. (1,2,3,15의 차이는 크게 없다.) |
18 | CONT | 다시 시작 |
19 | STOP (Ctrl + z) |
중지 |
20 | TSTP | 중지 |
Kill
- 단일 프로세스에 신호 전달
Killall
- 하나 이상의 프로세스에 신호 전달
kill 명령어는 정확하게 pid를 기입해서 사용하는 것이 좋다.
pgrep
- process grep
- 프로세스 이름을 지정해서 프로세스 아이디를 찾을 수 있다.
EX.
pgrep sleep
kill -15 'pgrep sleep'
- ' '안에 들어간 것은 명령어이다.
프로세스 우선순위
(PR(priority) - 높 / NI(nice) - 낮)
스케쥴러에 따라 다른 프로세스에 비해 많이 할당
순위
RT(real time) -99 ~ 39
- 사람은 음수로 세팅 못함(음수는 커널의 영역)
- 별도로 조절 안하면 보통은 20
- NI 값만 조절 가능(-20 ~ 19 / 20을 0으로 설정)
- 음수로 갈수록 친절하지 않다.
실습
내용 : 프로세스 우선순위 바꾸기
조건 : tmux 활용
sleep 100&
nice sleep 100&
nice -n 5 sleep 100& # 5로
nice -n 19 sleep 100& # 19로
#renice nice값 조정
renice -n10 -p 10561 # 10561의 프로세스의 nice값을 10으로 조정하겠다.
# 높이는건 관리자만 가능하다.
sudo renice -n0 -p 10561
'Linux' 카테고리의 다른 글
[Linux] 8. 권한 구성 및 사용 - (퍼미션, 확장 권한) (0) | 2022.07.22 |
---|---|
[Linux] 7. 아카이브 및 압축 (0) | 2022.07.21 |
[Linux] 5. Process Control (0) | 2022.07.20 |
[Linux] 4. 파일 입출력 (0) | 2022.07.20 |
[Linux] 3. 파일 및 디렉토리 관리 (0) | 2022.07.20 |