260903(목)

Jinhoon Yoon·3일 전

Q.
linked_list 의 헤드를 잃어버리면 전체 체인이 사라진다고?
데이터와 연결 관계는 그대로지 않아? 헤드를 메모리에서 전수조사하면 되지 않아?
A.
헤드가 없으면, 프로그램은 첫번째 노드의 메모리 주소를 보유하지 않게 된다.
그래서 체인으로 들어갈 진입점을 알 수 없다.
APP 에서는 보안 및 안정성을 이유로 OS와 런타임 환경이
메모리 주소를 수동으로 스캔하는 것을 차단한다.
데이터와 포인터의 물리적 바이트가 여전히 RAM 어딘가에 남아 있더라도,
프로그램은 포인터를 갖고 있지 않다.
파이썬에서 객체를 가리키는 참조가 하나도 없으면,
가비지 컬렉터가 그 객체를 제거하고 메모리를 회수한다.

Q.
메모리 전수조사가 가능하다고 치자.
10 GB 메모리를 스캔하는 데에 몇 초 걸려?
A.
현대 RAM의 순차 읽기 속도는 초당 30~60 GB 다.
OS를 우회해서 바이트를 스캔했다고 하더라도, 어떤 바이트가 head 인지, 어떻게 알 수 있을까?
고유한 시그니처나 메타데이터가 없다면, head 를 특정할 수 없다.
프로그래밍 언어가 참조와 포인터에 의존하는 이유다. 정확한 좌표이기 때문이다.

0개의 댓글