본문 바로가기
일상,취미

다시 시작하는 TIL 10일차

by 진득한진드기 2024. 6. 19.

오늘 한일

특정 워커 쓰레드에서 즉 메인 프로세스에서 api를 호출하여 프로세스 생성하여 작업을 하고 완벽하게 종료를 해주지 않으면 부모 프로세스가 종료된다고 해도 그 프로세스는 사라지지 않고 계속 동작할 가능성이 있다.

 

이는 모두가 아는 프로세스의 특징이지만 이는 리소스 누수나 시스템에 장애를 유발할 수 있다.

 

좀비 프로세스가 되서 죽은 상태(작업을 하지 않는상태) 지만 살아 있는 것이다.

 

보통 리눅스를 예로 들면 init 프로세스가 일을 제대로 하지 못하여 입양을 하지 못할 가능성도 있다는 것이다.

 

운영체제는 정말 대단한 소프트웨어이지만 무조건 적으로 확실한 친구는 아니다.

 

그러니까 우리가 사전에 저런 환경을 막아주는게 좋다.

 

그리고 오늘 알게된 사실이지만 같은 동작을 하는 코드여도 분기에 따라서나 예외처리에 따라서 컴파일된 바이너리 코드가 다르기 때문에

 

저수준 언어에서는 퍼포먼스 차이가 날수 있다.

 

예를들어 다음 분기를 봐보자

 

bool value = false;

if(value == false) 
{
	break;
}

 

이렇게 스코프를 주고 제어 흐름을 넘기는 예외코드가 있다고 하면

 

다음과 같은 코드가 있을 수 있다.

 

bool value = false;

if(!value) exit(-1);

 

이렇게 그냥 맞지 않으면 스코프를 적지 않고 처리해버리는 코드가 있다.

 

바이너리 파일로 봤을때 후자의 코드가 짧게 나와 퍼포먼스가 더 좋다고 한다.

 

뭐.... 이거로 태클 당할건 아니긴한데 이런 디테일이 있다고 한다.

 

요즘 근래 프로그래밍 언어나 하드웨어들이 너무 좋아서 이런거를 굳이 신경은 안써도 될정도라고 하는데

 

엔진이나 코어, 코드 디테일 , 퍼포먼스가 중요한 파트면 신경은 써도 좋을 것 같다.

'일상,취미' 카테고리의 다른 글

다시 시작하는 TIL 12일차  (0) 2024.06.22
다시 시작하는 TIL 11일차  (0) 2024.06.20
다시 시작하는 TIL 9일차  (0) 2024.06.18
다시 시작하는 TIL8일차  (1) 2024.06.17
다시 시작하는 TIL7일차  (1) 2024.06.13