foreground : fg, ./a.out
background : bg, ./a.out &
jobs : 현재 수행되고 있는 프로세스 상태를 확인할 수 있다.
file descriptor table's index number
fd = open();
daemon : 리눅스 상에서 입력, 출력도 하지는 않지만 돌려지는 프로그램, open은 하기는 하지만 log 파일 등에 흔적을 남긴다.
IPC(Inter Process Communication) : 프로세스 간 통신
kernel이 제공하는 통신 수단을 이용하여 프로세스 간 통신이 이루어진다.
1) unnamed pipe : 부모 프로세스와 자식 프로세스 간 통신
2) named pipe : 제약없는 프로세스 간 통신
3) message queue : 정해진 큐에 메시지를 넣고 빼는 방식으로 데이터를 교환, FIFO
4) socket : 파이프랑 유사한 파일, 네트워크로 연결된 다른 시스템에서 작동하는 프로세스와 통신할 때 사용
5) 공유 메모리 : 데이터 자체를 공유, 단 message queue와 다르게 deep copy가 이루어 지지는 않는다.
동기화 문제:
두 프로세스가 반드시 정해진 타이밍에 데이터를 읽거나 쓸거라는 보장이 없다 -> 사용자가 원하지 않는 동작의 가능성이 있다.
ex) A 프로세스가 쓰기 중에 B 프로세스가 쓰기 동작을 동시에 수행한다면, 사용자가 원하는 데이터가 입력되지 않을 수 있다.
-> 독점적으로 데이터를 사용할 수 있도록 해야함 = 동기화 개념 필요
세마포어 : Down, Up, 변수 개념, 공유 데이터에 대한 소유권을 명확히 함
새마포어, 바이너리 세마포어, 카운팅 세마포어
kill로 시그널을 전송할 수 있다.
변수
set : 쉘변수를 볼 수 있다. $VARNAME
env : 환경변수를 볼 수 있다.
export : shell var -> env var
기본적으로 변수는 대문자이다.
오늘은 BASH Shell scirpt를 작성하는 법에 대해서 배웠다.
찾은 것!!
https://wikidocs.net/book/2370
Bash 쉘스크립트 개발 시작하기
이 책은 처음으로 리눅스로 시스템을 운영하게 되면서 Bash 쉘로 스크립트를 작성하게 되는 개발자를 위해서 도움이 되는 리눅스의 기본 개념과 기본 명령어, 스크립트 작성 Tip을…
wikidocs.net
'VEDA 복습 > 리눅스, 리눅스 프로그래밍' 카테고리의 다른 글
VEDA 33일차 - GDB, CMake, Git, Docker (1) | 2025.04.30 |
---|---|
VEDA 29일-30일차 - 임베디드 리눅스 프로그래밍 (0) | 2025.04.25 |
VEDA 27일차 - 임베디드 리눅스 (0) | 2025.04.22 |
VEDA 26일차 - 임베디드 리눅스 프로그래밍 (0) | 2025.04.21 |
VEDA 25일차 - 임베디드 시스템 (1) | 2025.04.18 |