시스템프로그래밍

· CS/OS
시그널이란?프로세스에 뭔가 발생했음을 알리는 간단한 메세지(비동기적)대부분 커널이 프로세스로 보낸다. 무엇이 발생했는지 표시하는 "미리 정의된 상수"를 사용한다.SIGTERM(프로그램 정상 종료,ctr-c), SIGTSTP(프로그램 일시 정지, ctr-z)시그널 송/수신시그널 송신목적지 프로세스의 일부 컨텍스트를 갱신해서 시그널을 목적지 프로세스로 보낸다.커널이 divide by zero를 감지한 경우커널이 자식 프로세스 종료를 감지한 경우다른 프로세스가 kill 을 전송해서 커널이 시그널을 보낼 것을 요청했을 때시그널 수신목적지 프로세스는 전달된 신호에 대해서 커널이 어떤 방식으로든 반응하여야 할 때 시그널을 수신한다고 한다.무시(Ignore):아무것도 하지 않는다.대상 프로세스를 종료(with opt..
· CS/OS
함수fork():프로세스를 복제하는 함수로, 호출한 프로세스의 복사본(자식 프로세스)을 만듭니다.exec() 계열 함수:새 프로세스를 실행하기 위한 함수로, 자식 프로세스에서 새로운 프로그램을 실행할 때 사용됩니다.예: execl(), execp(), execv(), execvp() 등wait() 및 waitpid():자식 프로세스가 종료될 때까지 부모 프로세스가 대기하도록 합니다.kill():특정 프로세스에 시그널을 보내는 함수로, 프로세스를 종료하거나 특정 시그널을 처리하게 할 수 있습니다.getpid():현재 프로세스의 프로세스 ID(PID)를 반환하는 함수입니다.getppid():부모 프로세스의 프로세스 ID를 반환합니다.exit():현재 프로세스를 종료하는 함수입니다.setuid() / getu..
· CS/OS
https://wildeveloperetrain.tistory.com/180 좀비 프로세스 원인과 죽이는 방법(Zombie Process)개발서버를 운영하는 중에 "There are 2 zombie processes."라는 메시지를 발견했는데요. 리눅스 운영체제에서 발생할 수 있는 좀비 프로세스의 원인은 무엇인지, 죽이는 방법은 무엇인지 해결하며 정리wildeveloperetrain.tistory.com 1.  Zombie Process란?프로세스가 종료되고 리소스는 모두 회수되었지만, 시스템 프로세스 테이블에 남아있는 defunct 상태의 프로세스원래라면, 부모 프로세스에서 wait()시스템 호출을 통해 종료된 자식의 프로세스 상태를 수집(reaping)해야 한다.이를 OS에 반납하여야 하지만, wai..
· CS/OS
fork란?fork는 fork한 프로세스를 copy하여 프로세스(자식)를 생성하는 시스템콜copy를 해왔기에 동일하지만 별개의 프로세스이기에 (마치 아메바 처럼..) 내용은 동일하지만 별개의 가상메모리를 가진다.동일한 내용의 별개의 가상메모리인데 실제 물리 메모리에서는 같은 frame(영역)을 참조하고 있다.여러 프로세스가 각자의 가상메모리에서 동일하게 보유한 부분은 물리메모리에서는 실제로 같은 부분을 참조&각각의 가상메모리에 매핑되어 있음(가상메모리의 특성).예시 코드#define _CRT_SECURE_NO_WARNINGS#include#include // fork, getpid, sleep#include // waitint main(){ pid_t pid; pid=fork(); ..
chabin37
'시스템프로그래밍' 태그의 글 목록