본문 바로가기
SMALL

전체 글139

C051_waitpid 함수 사용하기 어제 wait 함수에 대해 설명을 해드렸습니다. 어떻게 보면 wait의 상위 버전인 waitpid에 대해 설명을 해드리도록 하겠습니다. 자식 프로세스가 종료되지 않는다면 blocking에 빠지게 됩니다. 너무 새로운 말이 등장을 했네요. blocking이 무엇일까요?? 간단하게 설명을 해드리도록 하겠습니다. 프로그램의 모든 동작은 cpu가 하게 됩니다. 근데 cpu를 받아도 instruction 즉, 컴퓨터에 지시를 못 내리는 경우가 있습니다. 이러한 경우를 blocking라고 합니다. blocking이 되는 이유는 더 많이 있는데 여기서는 그 부분까지 다루지는 않겠습니다. waitpid는 만약 자식 프로세스가 blocking 상태가 일정시간 유지된다면 자식프로세스가 종료되게 해 줍니다. 또 다른 차이점.. 2024. 1. 9.
C050_wait 함수 사용하기 wait 함수는 자식 프로세스가 종료되기를 기다리는 것이다. 본격적인 시작에 앞서서 fork에 대해 아직 잘 모르시는 분들은 아래의 링크를 참고해 주세요. https://hig0617.tistory.com/134 wait 함수 설명을 하기에 앞서서 좀비 프로세스에 대해 조금은 알아야 할 필요가 있습니다. 좀비 프로세스 좀비프로세스는 메모리를 차지하지 않고 디스크 용량, I/O, CPU 시간 또한 전혀 차지하지 않습니다. 하지만 프로세스의 테이블 용량을 차지하게 됩니다. 이때 엄청나게 많은 자식의 자식 프로세스들이 생긴다면 테이블의 용량이 가득 차게 되어 프로그램의 문제가 생길 수 있습니다. 이를 예방하기 위해 완전히 끝남을 부모 프로세스에게 알려주어야 합니다. 이를 위해 wait함수를 사용하게 됩니다. .. 2024. 1. 8.
C049_fork 함수 사용하기 fork함수는 자식 프로세스를 생성하는 함수입니다. 프로세스가 무엇일까요??? 프로세스 컴퓨터에서 실행되는 프로그램을 의미합니다. 쉽게 설명을 하면 저희가 게임을 할 때에 게임 프로그램을 실행하게 되는데 이를 프로세스라고 합니다. 지금 구글도 어떻게 보면 프로그램으로 실행되어 하나의 프로세스라고 할 수 있습니다. 현재 프로세스를 부모 프로세스라 하고 fork로 생성한 프로세스를 자식 프로세스라 합니다. 이때 자식 프로세스 생성 시 fork시작 전까지의 모든 내용을 복사합니다. fork #include pid_tfork(void); fork는 자식 프로세스르 생성합니다. 만약 실패 시 '-1'을 리턴하게 됩니다. 부모 프로세스는 자식 프로세스의 pid를 반환하고 자식 프로세스는 '0'을 리턴합니다. #in.. 2024. 1. 7.
C048_unlink 함수 사용하기 unlink는 파일을 삭제하는 명령어입니다. 어떻게 삭제가 진행되는 것일까요??? 진행에 앞서서 inode에 대해 조금은 알아야 할 필요가 있습니다. inode inode는 유닉스 계의의 운영체제에서 사용되고 있는 파일 관리자라고 생각하면 좋을 것 같습니다. inode에는 파일의 권한, 형태, 고유 번호, 소유자 및 그룹, 원본 데이터의 주소등 파일에 대한 모든 것이 기록이 되어 있습니다. 그림에서 처럼 하드링크와 메모리 사이를 inode가 연결을 해줍니다. 메모리에 접근을 하여 관리를 해주는 역할을 하는 것입니다. 여기서 unlink는 하드링크와 inode의 사이를 끊어주고 하드링크를 삭제하는 역할을 합니다. 그렇게 되면 이제 더 이상 메모리에 접근을 하지 못해 파일이 삭제되는 것입니다. unlink를.. 2024. 1. 6.
LIST